:root {
    --ink: #321044;
    --forest: #42105f;
    --green: #6c2f91;
    --mint: #eadff5;
    --paper: #fbf9fd;
    --white: #fff;
    --coral: #8b5ab2;
    --muted: #766a7d;
    --line: #e9e1ef;
}

.registration-screen {
    min-height: 100dvh;
    background: var(--forest);
}
.registration-header {
    position: relative;
    color: white;
    padding: calc(76px + env(safe-area-inset-top)) 26px 48px;
    overflow: hidden;
    isolation: isolate;
}
.registration-header::after {
    content: "";
    position: absolute;
    z-index: -1;
    width: 240px;
    height: 240px;
    right: -70px;
    top: -28px;
    background: url("../images/felicia-botanical-corner.png") top right / contain no-repeat;
    opacity: .34;
}
.registration-header .back-link {
    top: max(20px, env(safe-area-inset-top));
    color: white;
    background: #ffffff14;
    box-shadow: none;
}
.step-pill {
    display: inline-flex;
    padding: 7px 10px;
    border: 1px solid #ffffff30;
    border-radius: 999px;
    color: #eadcf3;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.12em;
}
.registration-header h1 {
    font: 800 34px/1.07 Manrope;
    margin: 16px 0 10px;
    letter-spacing: -0.04em;
}
.registration-header p {
    color: #e6d8ef;
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
    max-width: 330px;
}
.registration-card {
    position: relative;
    background: var(--paper);
    border-radius: 30px 30px 0 0;
    margin-top: -22px;
    padding: 28px 24px calc(30px + env(safe-area-inset-bottom));
    min-height: 64dvh;
}
.registered-phone {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--mint);
    border-radius: 14px;
    padding: 12px 14px;
    margin-bottom: 20px;
}
.registered-phone span {
    font-size: 8px;
    letter-spacing: 0.13em;
    font-weight: 800;
    color: var(--green);
}
.registered-phone strong {
    font-size: 13px;
}
.registration-card label,
.role-picker legend {
    display: block;
    font-size: 12px;
    font-weight: 700;
    margin: 0 0 7px;
}
.app-input {
    width: 100%;
    height: 53px;
    border: 1px solid #d3d9d5;
    border-radius: 14px;
    background: white;
    color: var(--ink);
    padding: 0 13px;
    outline: 0;
    margin-bottom: 17px;
}
.app-input:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px #6c2f911a;
}
.app-input:disabled {
    background: #ecefeb;
    color: #9aa49f;
}
.field-grid,
.role-picker {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.role-picker {
    border: 0;
    padding: 0;
    margin: 2px 0 17px;
}
.role-picker legend {
    grid-column: 1/-1;
}
.role-picker label {
    margin: 0;
}
.role-picker input {
    position: absolute;
    opacity: 0;
}
.role-picker label > span {
    height: 106px;
    border: 1px solid #d6dcd8;
    border-radius: 16px;
    background: white;
    padding: 13px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    cursor: pointer;
}
.role-picker svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: var(--green);
    stroke-width: 1.7;
    margin-bottom: 7px;
}
.role-picker strong {
    font-size: 13px;
}
.role-picker small {
    color: var(--muted);
    font-size: 9px;
    margin-top: 2px;
}
.role-picker input:checked + span {
    border: 2px solid var(--green);
    background: #eef5f1;
    padding: 12px;
}
.declaration {
    display: flex !important;
    gap: 10px;
    align-items: flex-start !important;
    font-weight: 400 !important;
    color: var(--muted);
    line-height: 1.4 !important;
}
.declaration input {
    width: 18px;
    height: 18px;
    accent-color: var(--green);
    flex: 0 0 auto;
    margin-top: 1px;
}
.registration-note {
    text-align: center;
    color: var(--muted);
    font-size: 10px;
    line-height: 1.4;
    margin: 16px 0 0;
}
.registration-submit-bar {
    position: fixed;
    left: 50%;
    bottom: 0;
    width: min(100%, 720px);
    transform: translateX(-50%);
    z-index: 10;
    padding: 12px 20px max(16px, env(safe-area-inset-bottom));
    background: linear-gradient(180deg, #fbf9fd00, #fbf9fdf2 24%, #fbf9fd 100%);
}
.registration-submit {
    min-height: 58px;
    margin: 0;
    border: 1px solid #ffffff1f;
    border-radius: 18px;
    box-shadow: 0 12px 30px #42105f42;
}
.registration-card form {
    padding-bottom: 104px;
}
@media (min-width: 681px) {
    .registration-submit-bar {
        padding-left: 60px;
        padding-right: 60px;
    }
}
@media (min-width: 681px) {
    .registration-card {
        padding-left: 60px;
        padding-right: 60px;
    }
}
* {
    box-sizing: border-box;
}
body {
    margin: 0;
    background: #e9e1ef;
    color: var(--ink);
    font-family: "DM Sans", sans-serif;
}
.app-shell {
    width: 100%;
    min-height: 100dvh;
    background: var(--paper);
}
button,
input {
    font: inherit;
}
.auth-screen {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
}
.auth-illustration {
    height: 38dvh;
    min-height: 260px;
    background: linear-gradient(145deg, #321044 0%, #5d247f 60%, #8d59af 100%);
    position: relative;
    overflow: hidden;
}
.auth-illustration:before {
    content: "";
    position: absolute;
    width: 440px;
    height: 180px;
    border-radius: 50%;
    background: #b790dc38;
    left: 50%;
    bottom: -105px;
    transform: translateX(-50%);
}
.auth-illustration::after {
    content: "";
    position: absolute;
    inset: -18px -34px 0 18%;
    background: url("../images/felicia-botanical-corner.png") top right / min(94%, 520px) auto no-repeat;
    filter: drop-shadow(0 14px 24px #220c3038);
}
.brand-mark {
    position: absolute;
    top: max(28px, env(safe-area-inset-top));
    left: 28px;
    width: 46px;
    height: 46px;
    z-index: 2;
    border: 1px solid #ffffff88;
    border-radius: 50%;
    background: #ffffff17;
    backdrop-filter: blur(8px);
    display: grid;
    place-items: center;
    color: white;
    font: 800 24px Manrope;
}
.brand-mark:after {
    content: "";
    position: absolute;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #f2b274;
    right: -2px;
    top: -2px;
}
.mini-house {
    position: absolute;
    bottom: 30px;
    width: 85px;
    height: 74px;
    display: none;
    border-radius: 4px;
}
.mini-house:before {
    content: "";
    position: absolute;
    inset: -35px -8px auto;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 40px solid #a95f4d;
}
.mini-house i {
    position: absolute;
    width: 24px;
    height: 37px;
    background: #3d675b;
    bottom: 0;
    left: 30px;
}
.mini-house b {
    position: absolute;
    width: 14px;
    height: 14px;
    background: #f8edb6;
    top: 17px;
    left: 9px;
    box-shadow: 53px 0 #f8edb6;
}
.house-one {
    left: 10%;
    transform: scale(0.8);
}
.house-two {
    right: 12%;
    bottom: 24px;
}
.tree {
    position: absolute;
    display: none;
    bottom: 18px;
}
.tree i {
    display: block;
    width: 8px;
    height: 60px;
    background: #8b644c;
}
.tree b {
    position: absolute;
    width: 48px;
    height: 65px;
    border-radius: 50%;
    background: #5d8b70;
    bottom: 35px;
    left: -20px;
}
.auth-card {
    position: relative;
    z-index: 2;
    background: linear-gradient(180deg, #fff 0%, var(--paper) 100%);
    border-radius: 32px 32px 0 0;
    margin-top: -26px;
    padding: 34px 26px 32px;
    flex: 1;
}
.eyebrow,
.section-heading p,
.view-title p {
    font-size: 11px;
    letter-spacing: 0.17em;
    font-weight: 800;
    color: var(--coral);
    margin: 0 0 8px;
}
.auth-card h1 {
    font: 800 clamp(28px, 8vw, 40px)/1.08 Manrope;
    margin: 0 0 12px;
    letter-spacing: -0.04em;
}
.auth-copy {
    color: var(--muted);
    line-height: 1.55;
    margin: 0 0 26px;
}
.auth-card label {
    font-size: 13px;
    font-weight: 700;
    display: block;
    margin-bottom: 8px;
}
.phone-field {
    height: 58px;
    border: 1px solid #d3d9d5;
    background: white;
    border-radius: 16px;
    display: flex;
    align-items: center;
    overflow: hidden;
    box-shadow: 0 4px 18px #42105f10;
}
.phone-field span {
    height: 28px;
    padding: 5px 15px;
    border-right: 1px solid var(--line);
    font-size: 12px;
    font-weight: 800;
    color: var(--green);
}
.phone-field input {
    border: 0;
    outline: 0;
    width: 100%;
    height: 100%;
    padding: 0 16px;
    font-size: 17px;
    background: transparent;
    color: var(--ink);
}
.primary-button {
    width: 100%;
    border: 0;
    border-radius: 17px;
    background: var(--forest);
    color: white;
    min-height: 58px;
    margin-top: 16px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    box-shadow: 0 9px 22px #42105f38;
}
.primary-button span {
    font-size: 25px;
    line-height: 1;
}
.auth-note {
    display: flex;
    gap: 8px;
    align-items: center;
    color: #8a9692;
    font-size: 12px;
    margin: 22px 0 0;
}
.auth-note svg {
    width: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
}
.auth-note.centered {
    justify-content: center;
}
.alert {
    background: #fbe9e4;
    color: #9f3e2e;
    border-radius: 12px;
    padding: 12px 14px;
    margin-bottom: 18px;
    font-size: 13px;
}
.otp-screen {
    align-items: center;
    padding: calc(70px + env(safe-area-inset-top)) 24px 24px;
    background: linear-gradient(180deg, #eee3f7, var(--paper) 45%);
}
.otp-screen .auth-card {
    margin: 0;
    padding: 26px 0;
    background: transparent;
    text-align: center;
    width: 100%;
    max-width: 420px;
}
.back-link {
    position: absolute;
    top: max(22px, env(safe-area-inset-top));
    left: 22px;
    color: var(--ink);
    text-decoration: none;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    background: white;
    display: grid;
    place-items: center;
    font-size: 30px;
    box-shadow: 0 5px 18px #42105f14;
}
.otp-icon {
    width: 82px;
    height: 82px;
    border-radius: 26px;
    background: var(--mint);
    display: grid;
    place-items: center;
}
.otp-icon svg {
    width: 38px;
    fill: none;
    stroke: var(--forest);
    stroke-width: 1.6;
}
.demo-code {
    display: inline-block;
    background: #fff0d9;
    color: #8b581c;
    border-radius: 999px;
    padding: 8px 14px;
    font-size: 13px;
    margin: -8px 0 22px;
}
.otp-inputs {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
.otp-inputs input {
    width: 100%;
    min-width: 0;
    height: 65px;
    border: 1px solid #cbd4cf;
    border-radius: 17px;
    background: white;
    text-align: center;
    font: 800 25px Manrope;
    color: var(--forest);
    outline: 0;
}
.otp-inputs input:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px #6c2f911a;
}
.resident-app {
    min-height: 100dvh;
    padding: calc(24px + env(safe-area-inset-top)) 20px
        calc(116px + env(safe-area-inset-bottom));
    max-width: 680px;
    margin: auto;
    position: relative;
    isolation: isolate;
    background:
        radial-gradient(circle at 100% 0%, #eadff5 0, transparent 280px),
        var(--paper);
}
.resident-app::before {
    content: "";
    position: fixed;
    z-index: -1;
    width: 190px;
    height: 190px;
    top: -52px;
    left: calc(50% + 125px);
    transform: translateX(-50%);
    background: url("../images/felicia-botanical-corner.png") top right / contain no-repeat;
    opacity: .16;
    pointer-events: none;
}
.app-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 24px;
}
.app-header p {
    margin: 0 0 3px;
    color: var(--muted);
    font-size: 12px;
    text-transform: capitalize;
}
.app-header h1 {
    font: 800 25px Manrope;
    margin: 0;
    letter-spacing: -0.04em;
}
.avatar {
    width: 46px;
    height: 46px;
    overflow: hidden;
    border-radius: 16px;
    background: var(--forest);
    color: white;
    display: grid;
    place-items: center;
    font: 800 17px Manrope;
}
.app-view {
    animation: view-in 0.25s ease;
}
.app-view[hidden] {
    display: none;
}
@keyframes view-in {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
}
.welcome-card {
    height: 196px;
    padding: 0;
    position: relative;
    overflow: hidden;
    border-radius: 25px;
    background: #42105f;
    box-shadow: 0 16px 34px #42105f30;
}
.hero-carousel-track,.hero-carousel-track button,.hero-carousel-track img { width:100%; height:100%; }
.hero-carousel-track { position:relative; }
.hero-carousel-track button { position:absolute; inset:0; display:block; padding:0; border:0; background:transparent; cursor:pointer; }
.hero-carousel-track button[hidden] { display:none; }
.hero-carousel-track img { display:block; object-fit:cover; }
.hero-carousel-arrow { position:absolute; top:50%; z-index:2; width:34px; height:34px; padding:0; transform:translateY(-50%); border:0; border-radius:50%; color:#fff; background:#21072a88; font-size:28px; line-height:1; }
.hero-carousel-arrow.is-prev { left:10px; }
.hero-carousel-arrow.is-next { right:10px; }
.hero-carousel-dots { position:absolute; right:0; bottom:10px; left:0; z-index:2; display:flex; justify-content:center; gap:6px; }
.hero-carousel-dots button { width:7px; height:7px; padding:0; border:0; border-radius:50%; background:#ffffff80; }
.hero-carousel-dots button.is-active { width:20px; border-radius:99px; background:#fff; }
.hero-detail-dialog { width:min(calc(100% - 32px),430px); margin:auto; padding:0; border:0; border-radius:25px; background:transparent; }
.hero-detail-dialog::backdrop { background:#17051f99; backdrop-filter:blur(4px); }
.hero-detail-card { position:relative; padding:30px 26px; border-radius:25px; background:#fff; box-shadow:0 22px 60px #16051f40; }
.hero-detail-card > button { position:absolute; top:14px; right:14px; width:38px; height:38px; border:0; border-radius:50%; color:#542067; background:#f1e8f7; font-size:24px; line-height:1; }
.hero-detail-card small { color:#7a3b8f; font-size:9px; font-weight:800; letter-spacing:.14em; }
.hero-detail-card h2 { margin:8px 42px 10px 0; color:#32103f; font:800 23px/1.25 Manrope; }
.hero-detail-card p { margin:0; color:#736779; font-size:14px; line-height:1.65; white-space:pre-line; }
.section-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    margin: 28px 2px 13px;
}
.section-heading p {
    margin-bottom: 3px;
}
.section-heading h2,
.view-title h2 {
    font: 800 21px Manrope;
    margin: 0;
    letter-spacing: -0.03em;
}
.section-heading button {
    border: 0;
    background: transparent;
    color: var(--green);
    font-size: 12px;
    font-weight: 700;
}
.quick-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
.quick-grid button {
    border: 0;
    background: white;
    border-radius: 20px;
    padding: 17px;
    text-align: left;
    display: grid;
    grid-template-columns: 44px 1fr;
    grid-template-rows: auto auto;
    gap: 0 12px;
    box-shadow: 0 5px 22px #42105f0d;
}
.quick-icon {
    grid-row: 1/3;
    width: 44px;
    height: 44px;
    border-radius: 14px;
    display: grid;
    place-items: center;
}
.quick-icon svg {
    width: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
}
.quick-icon.coral {
    background: #f1e5f8;
    color: #7b3f9d;
}
.quick-icon.green {
    background: var(--mint);
    color: var(--green);
}
.quick-grid strong {
    font: 800 19px Manrope;
}
.quick-grid small {
    color: var(--muted);
    font-size: 11px;
}
.activity-list {
    display: grid;
    gap: 12px;
}
.activity-card {
    position: relative;
    display: grid;
    grid-template-columns: 54px 1fr 12px;
    gap: 14px;
    align-items: center;
    background: white;
    padding: 15px;
    border-radius: 20px;
    border: 1px solid #edf0ed;
}
.activity-date {
    background: #f6ebe3;
    border-radius: 14px;
    min-height: 65px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: #a65542;
}
.activity-date strong {
    font: 800 21px Manrope;
    line-height: 1;
}
.activity-date span {
    font-size: 9px;
    font-weight: 800;
    margin-top: 4px;
}
.activity-copy {
    min-width: 0;
}
.activity-tag {
    font-size: 8px;
    letter-spacing: 0.12em;
    color: var(--green);
    font-weight: 800;
}
.activity-copy h3 {
    font: 700 14px/1.3 Manrope;
    margin: 4px 0;
}
.activity-copy p {
    font-size: 11px;
    line-height: 1.4;
    color: var(--muted);
    margin: 0;
}
.activity-copy small {
    display: block;
    color: var(--coral);
    font-size: 9px;
    margin-top: 5px;
}
.activity-arrow {
    font-size: 22px;
    color: #9da8a4;
}
.view-title {
    margin: 10px 2px 24px;
}
.view-title h2 {
    font-size: 30px;
}
.view-title > span {
    display: block;
    color: var(--muted);
    font-size: 13px;
    margin-top: 6px;
}
.house-detail-card {
    background: white;
    border-radius: 24px;
    padding: 20px;
    border: 1px solid #e9ece8;
    box-shadow: 0 8px 25px #24493d0b;
    margin-bottom: 14px;
}
.house-detail-top {
    display: flex;
    align-items: center;
    gap: 13px;
}
.house-symbol {
    width: 48px;
    height: 48px;
    border-radius: 15px;
    background: var(--mint);
    display: grid;
    place-items: center;
}
.house-symbol svg {
    width: 24px;
    fill: none;
    stroke: var(--green);
    stroke-width: 1.7;
}
.house-detail-top small,
.resident-names > small {
    font-size: 8px;
    letter-spacing: 0.13em;
    color: var(--muted);
    font-weight: 800;
}
.house-detail-top h3 {
    font: 750 16px Manrope;
    margin: 3px 0;
}
.house-status {
    display: flex;
    gap: 7px;
    align-items: center;
    font-size: 10px;
    color: var(--green);
    margin: 16px 0;
}
.house-status span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #49a478;
    box-shadow: 0 0 0 4px #49a47817;
}
.house-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    padding: 14px 0;
    margin-bottom: 16px;
}
.house-stats div {
    display: flex;
    flex-direction: column;
    text-align: center;
    border-right: 1px solid var(--line);
}
.house-stats div:last-child {
    border: 0;
}
.house-stats strong {
    font: 800 15px Manrope;
}
.house-stats span {
    font-size: 9px;
    color: var(--muted);
}
.resident-names {
    display: grid;
    gap: 9px;
}
.household-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}
.household-heading small {
    font-size: 8px;
    letter-spacing: 0.13em;
    color: var(--muted);
    font-weight: 800;
}
.household-heading button {
    border: 0;
    border-radius: 999px;
    background: var(--mint);
    color: var(--green);
    padding: 7px 10px;
    font-size: 10px;
    font-weight: 800;
}
.household-member {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    min-height: 58px;
    padding: 9px 10px;
    border: 1px solid #e8ece8;
    border-radius: 16px;
    background: #fbfcfa;
}
.household-avatar {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: var(--mint);
    color: var(--green);
    font: 800 13px Manrope;
    overflow: hidden;
}
.household-avatar img { width: 100%; height: 100%; object-fit: cover; }
.household-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
}
.household-copy strong {
    overflow: hidden;
    color: var(--ink);
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.household-copy small {
    margin-top: 2px;
    color: var(--muted);
    font-size: 9px;
}
.phone-verification-badge {
    display: block;
    width: max-content;
    margin-top: 5px;
    padding: 3px 7px;
    border-radius: 999px;
    color: #766b7a;
    background: #f0edf1;
    font-size: 8px;
    font-style: normal;
    font-weight: 800;
}
.phone-verification-badge.is-verified { color: #187151; background: #e2f4ed; }
.phone-verification-badge.is-pending { color: #9a5b0c; background: #fff0d5; }
.phone-verification-message { min-height: 34px; margin: 0; padding: 9px 11px; border-radius: 11px; color: #5e4965; background: #f5f0f6; font-size: 10px; }
.household-role {
    padding: 5px 8px;
    border-radius: 999px;
    background: #eef3f0;
    color: var(--green);
    font-size: 8px;
    font-weight: 800;
    white-space: nowrap;
}
.household-member-side {
    display: flex;
    align-items: center;
    gap: 6px;
}
.household-menu-wrap {
    position: relative;
    display: inline-flex;
}
.household-menu-toggle {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 1px solid #e8dff0;
    border-radius: 11px;
    color: var(--green);
    background: #fff;
    cursor: pointer;
    transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.household-menu-toggle:hover,
.household-menu-toggle[aria-expanded="true"] {
    border-color: #cdb9dd;
    background: var(--mint);
    transform: translateY(-1px);
}
.household-menu-toggle:focus-visible {
    outline: 3px solid rgba(112, 52, 139, .2);
    outline-offset: 2px;
}
.household-menu-toggle svg {
    width: 19px;
    fill: currentColor;
}
.household-menu {
    position: absolute;
    z-index: 20;
    top: calc(100% + 8px);
    right: 0;
    width: 218px;
    padding: 7px;
    border: 1px solid rgba(75, 25, 98, .12);
    border-radius: 17px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 18px 42px rgba(53, 21, 67, .18);
    backdrop-filter: blur(14px);
    animation: householdMenuIn .16s ease-out;
}
@keyframes householdMenuIn {
    from { opacity: 0; transform: translateY(-5px) scale(.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.household-menu form {
    margin: 0;
}
.household-menu > button,
.household-menu form button {
    display: grid;
    grid-template-columns: 35px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    width: 100%;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: var(--green);
    padding: 9px;
    text-align: left;
    cursor: pointer;
}
.household-menu > button:hover,
.household-menu form button:hover { background: #f4eef8; }
.household-menu button svg {
    width: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
    justify-self: center;
}
.household-menu button span { display: grid; gap: 2px; }
.household-menu button strong { font-size: 11px; }
.household-menu button small { color: var(--muted); font-size: 9px; font-weight: 500; }
.household-menu form { border-top: 1px solid #f0eaee; padding-top: 4px; margin-top: 4px; }
.household-menu form button.is-danger { color: #a94949; }
.household-menu form button.is-danger:hover { background: #fff1f1; }
.resident-delete-dialog {
    width: min(calc(100% - 32px), 430px);
    margin: auto;
    padding: 0;
    border: 0;
    border-radius: 26px;
    color: var(--ink);
    background: transparent;
    overflow: visible;
}
.resident-delete-dialog::backdrop {
    background: rgba(24, 10, 30, .62);
    backdrop-filter: blur(5px);
}
.resident-delete-card {
    display: grid;
    justify-items: center;
    padding: 30px 26px 24px;
    border: 1px solid rgba(255, 255, 255, .5);
    border-radius: 26px;
    background: linear-gradient(155deg, #fff 0%, #fcf7ff 100%);
    box-shadow: 0 28px 70px rgba(38, 10, 50, .3);
    text-align: center;
    animation: residentDeleteIn .2s ease-out;
}
@keyframes residentDeleteIn {
    from { opacity: 0; transform: translateY(10px) scale(.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.resident-delete-icon {
    display: grid;
    place-items: center;
    width: 62px;
    height: 62px;
    margin-bottom: 17px;
    border-radius: 20px;
    color: #ae4f52;
    background: #ffebec;
}
.resident-delete-icon svg { width: 28px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.resident-delete-card > p { margin: 0 0 7px; color: #8d5aa4; font-size: 10px; font-weight: 800; letter-spacing: .18em; }
.resident-delete-card h2 { margin: 0; color: var(--ink); font-size: 23px; }
.resident-delete-card > span:not(.resident-delete-icon) { margin-top: 10px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.resident-delete-card > span strong { color: var(--ink); }
.resident-delete-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; width: 100%; margin-top: 24px; }
.resident-delete-actions button { min-height: 48px; border: 0; border-radius: 15px; font-size: 12px; font-weight: 800; cursor: pointer; }
.resident-delete-actions button:first-child { color: var(--green); background: #efe7f4; }
.resident-delete-actions button:last-child { color: #fff; background: #9d454b; box-shadow: 0 10px 24px rgba(157, 69, 75, .22); }
.resident-delete-actions button:disabled { opacity: .65; cursor: wait; }
.household-note,
.household-empty {
    margin: 11px 2px 0;
    color: var(--muted);
    font-size: 10px;
    line-height: 1.45;
}
.household-dialog {
    width: min(calc(100% - 24px), 620px);
    max-height: calc(100dvh - 24px);
    margin: auto auto 0;
    padding: 0;
    border: 0;
    border-radius: 26px 26px 0 0;
    color: var(--ink);
    background: transparent;
    overflow: visible;
}
.household-dialog::backdrop {
    background: #0d211c8c;
    backdrop-filter: blur(3px);
}

.vehicle-registry-card {
    margin-bottom: 16px;
    padding: 20px;
    border: 1px solid rgba(20, 76, 62, .12);
    border-radius: 24px;
    background: #fff;
    box-shadow: 0 12px 32px rgba(20, 76, 62, .08);
}
.vehicle-registry-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.vehicle-registry-heading small { color:#6e8079; font-size:10px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.vehicle-registry-heading h3 { margin:2px 0 0; color:var(--ink); font-size:21px; }
.vehicle-registry-heading button { border:0; border-radius:999px; padding:10px 14px; background:var(--mint); color:var(--green); font-size:12px; font-weight:800; cursor:pointer; }
.vehicle-list { display:grid; gap:10px; }
.vehicle-row { display:grid; grid-template-columns:44px minmax(0,1fr) auto; align-items:center; gap:12px; padding:12px; border:1px solid #e5ebe7; border-radius:17px; background:#fbfcfb; }
.vehicle-icon { display:grid; place-items:center; width:44px; height:44px; border-radius:14px; background:#f1e8f7; color:var(--green); }
.vehicle-icon svg { width:24px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.vehicle-icon:has(img) { overflow:hidden; background:#e8eeeb; }
.vehicle-icon img { width:100%; height:100%; object-fit:cover; }
.vehicle-image-uploader { margin-top:2px; }
.vehicle-copy { display:grid; min-width:0; }
.vehicle-copy strong { color:var(--ink); font-size:17px; letter-spacing:.05em; }
.vehicle-copy small { margin-top:3px; color:#708078; font-size:12px; }
.vehicle-household-badge { padding:6px 9px; border-radius:999px; background:#f0f2f0; color:#718078; font-size:10px; font-weight:700; }
.vehicle-empty { display:grid; justify-items:center; gap:5px; padding:18px; border:1px dashed #cbd8d2; border-radius:17px; color:#6d7e76; text-align:center; }
.vehicle-empty-icon { display:grid; place-items:center; width:48px; height:48px; margin-bottom:3px; border-radius:16px; background:#f1e8f7; color:var(--green); }
.vehicle-empty-icon svg { width:27px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.vehicle-empty strong { color:#315248; font-size:14px; }
.vehicle-empty span { font-size:12px; }
@media (max-width: 380px) {
    .vehicle-registry-card { padding:16px; }
    .vehicle-registry-heading { align-items:flex-start; }
    .vehicle-registry-heading button { padding:9px 11px; }
    .vehicle-row { grid-template-columns:40px minmax(0,1fr) auto; }
    .vehicle-household-badge { grid-column:2 / -1; justify-self:start; }
}
.household-sheet {
    max-height: calc(100dvh - 24px);
    overflow-y: auto;
    border-radius: 26px 26px 0 0;
    background: var(--paper);
    padding: 12px 22px calc(24px + env(safe-area-inset-bottom));
    box-shadow: 0 -18px 50px #102d252e;
}
.household-sheet-handle {
    width: 42px;
    height: 4px;
    border-radius: 999px;
    background: #c9d1cd;
    margin: 0 auto 18px;
}
.household-sheet-heading {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 18px;
}
.household-sheet-heading small {
    color: var(--green);
    font-size: 8px;
    font-weight: 800;
    letter-spacing: 0.13em;
}
.household-sheet-heading h3 {
    margin: 3px 0 2px;
    font: 800 22px Manrope;
}
.household-sheet-heading p {
    margin: 0;
    color: var(--muted);
    font-size: 11px;
}
.household-sheet-heading > button {
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border: 0;
    border-radius: 13px;
    background: #e9eeeb;
    color: var(--ink);
    font-size: 24px;
    line-height: 1;
}
.household-sheet form {
    display: grid;
    gap: 14px;
}
.household-sheet label {
    display: grid;
    gap: 7px;
    font-size: 11px;
    font-weight: 800;
}
.household-sheet label > small {
    display: inline;
    color: var(--muted);
    font-weight: 500;
}
.household-input {
    width: 100%;
    height: 52px;
    border: 1px solid #d3d9d5;
    border-radius: 14px;
    outline: 0;
    background: white;
    color: var(--ink);
    padding: 0 14px;
}
.household-input:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 3px #6c2f911a;
}
.household-sheet-actions {
    display: grid;
    grid-template-columns: 0.75fr 1.25fr;
    gap: 10px;
    margin-top: 5px;
}
.household-sheet-actions button {
    min-height: 52px;
    border: 0;
    border-radius: 15px;
    background: #e5ebe7;
    color: var(--ink);
    font-weight: 800;
}
.household-sheet-actions button[type="submit"] {
    background: var(--forest);
    color: white;
    box-shadow: 0 9px 22px #42105f30;
}
.app-flash {
    position: relative;
    margin-bottom: 16px;
    border-radius: 15px;
    background: var(--mint);
    color: var(--green);
    padding: 12px 14px;
    font-size: 11px;
    font-weight: 700;
}
.app-flash.is-error {
    background: #fbe9e4;
    color: #9f3e2e;
}
.empty-card {
    padding: 25px;
    text-align: center;
    background: white;
    border: 1px dashed #cbd3cf;
    border-radius: 20px;
    color: var(--muted);
    font-size: 13px;
}
.profile-identity-card {
    position: relative;
    display: grid;
    grid-template-columns: 68px minmax(0, 1fr);
    align-items: center;
    gap: 16px;
    min-height: 150px;
    margin-bottom: 18px;
    padding: 24px;
    overflow: hidden;
    border-radius: 25px;
    background: linear-gradient(135deg, #42105f, #713498 68%, #9361b5);
    color: white;
    box-shadow: 0 16px 34px #42105f30;
}
.profile-flower {
    position: absolute;
    width: 190px;
    height: 190px;
    right: -50px;
    top: -60px;
    background: url("../images/felicia-botanical-corner.png") top right / contain no-repeat;
    opacity: .5;
}
.profile-avatar {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 68px;
    height: 68px;
    border: 1px solid #ffffff70;
    border-radius: 22px;
    background: #ffffff1c;
    font: 800 25px Manrope;
    backdrop-filter: blur(8px);
    overflow: hidden;
}
.avatar img,
.profile-avatar img,
.profile-photo-preview img { width: 100%; height: 100%; object-fit: cover; }
.profile-identity-card > div:not(.profile-flower) { position:relative; z-index:1; min-width:0; }
.profile-identity-card h3 { margin:0 0 4px; font:800 21px Manrope; }
.profile-identity-card p { margin:0 0 7px; color:#eadcf3; font-size:13px; }
.profile-identity-card div > span { display:inline-flex; padding:5px 9px; border-radius:999px; background:#ffffff18; color:#f0e8f6; font-size:9px; font-weight:700; }
.profile-menu { display:grid; overflow:hidden; border:1px solid #e8dfee; border-radius:22px; background:white; box-shadow:0 8px 26px #42105f0d; }
.profile-menu > button,
.profile-menu > a,
.profile-menu form > button {
    display:grid;
    grid-template-columns:44px minmax(0,1fr) auto;
    align-items:center;
    gap:13px;
    width:100%;
    min-height:72px;
    padding:12px 15px;
    border:0;
    border-bottom:1px solid #eee7f2;
    background:white;
    color:var(--ink);
    text-align:left;
    cursor:pointer;
    text-decoration:none;
}
.profile-menu form { margin:0; }
.profile-menu form:last-child > button { border-bottom:0; }
.profile-menu-icon { display:grid; place-items:center; width:44px; height:44px; border-radius:14px; background:var(--mint); color:var(--green); }
.profile-menu-icon svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.profile-menu button > span:nth-child(2),
.profile-menu > a > span:nth-child(2) { display:grid; gap:3px; }
.profile-menu strong { font-size:13px; }
.profile-menu small { color:var(--muted); font-size:10px; }
.profile-menu b { color:#a48aaf; font-size:23px; font-weight:400; }
.profile-menu .profile-logout { color:#8c3d63; }
.profile-menu .profile-logout .profile-menu-icon { background:#fae9f0; color:#a54970; }
.profile-menu .profile-admin-link { color:#4f1766; background:linear-gradient(90deg,#fff,#fbf5ff); }
.profile-menu .profile-admin-link .profile-menu-icon { background:#ede0f5; color:#6f2d86; }
.profile-menu .profile-install-link{color:#3f1751;background:linear-gradient(90deg,#fff,#f9f4fc)}.profile-menu .profile-install-link .profile-menu-icon{background:#eee2f4;color:#6b2d82}

.install-page{min-height:100dvh;padding:24px 22px 48px;background:radial-gradient(circle at 88% 2%,rgba(183,122,216,.18),transparent 28%),#fbf8fd;color:#32113f}.install-topbar{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:12px}.install-topbar>a{display:grid;width:44px;height:44px;place-items:center;border-radius:14px;background:#eee3f3;color:#5c2373;font-size:28px;text-decoration:none}.install-topbar small,.install-hero>p,.install-status small{display:block;color:#8a6796;font-size:10px;font-weight:800;letter-spacing:.16em}.install-topbar h1{margin:2px 0 0;font:800 21px/1.1 Manrope,sans-serif;letter-spacing:-.04em}.install-topbar>img{width:46px;height:46px;object-fit:contain}.install-hero{padding:36px 4px 28px;text-align:center}.install-device{position:relative;display:grid;width:170px;height:208px;place-items:center;margin:0 auto 28px;border:7px solid #4b155f;border-radius:34px;background:linear-gradient(155deg,#f6eefa,#fff);box-shadow:0 24px 45px rgba(72,25,89,.18)}.install-device:before{position:absolute;top:8px;width:44px;height:5px;border-radius:9px;background:#4b155f;content:""}.install-device img{width:124px;height:124px;object-fit:contain}.install-device span{position:absolute;right:-15px;bottom:24px;width:46px;height:46px;border:5px solid #fbf8fd;border-radius:50%;background:#75b868;box-shadow:0 8px 20px rgba(64,116,54,.3)}.install-device span:after{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:23px;font-weight:900;content:"↓"}.install-hero h2{max-width:390px;margin:8px auto 10px;font:800 clamp(29px,8vw,42px)/1.04 Manrope,sans-serif;letter-spacing:-.055em}.install-hero>span{display:block;max-width:420px;margin:auto;color:#765f7d;font-size:14px;line-height:1.65}.install-status,.install-action,.install-complete,.install-manual{max-width:520px;margin:0 auto;border:1px solid rgba(102,44,126,.13);border-radius:22px;background:#fff;box-shadow:0 14px 35px rgba(56,20,68,.08)}.install-status{display:flex;align-items:center;gap:14px;padding:18px}.install-status-mark{display:grid;flex:0 0 42px;height:42px;place-items:center;border-radius:14px;background:#f0e4f5}.install-status-mark i{width:12px;height:12px;border:2px solid #7b438f;border-top-color:transparent;border-radius:50%;animation:install-spin .8s linear infinite}.install-status h3{margin:3px 0;font-size:15px}.install-status p,.install-action p,.install-complete p,.install-manual p{margin:0;color:#78677e;font-size:13px;line-height:1.5}.install-action{padding:20px;text-align:center}.install-action button{width:100%;margin:15px 0 9px;padding:15px;border:0;border-radius:15px;background:#591773;color:#fff;font:800 16px Manrope,sans-serif;box-shadow:0 12px 24px rgba(89,23,115,.24)}.install-action small{color:#846d8c;font-size:11px}.install-complete{padding:28px 22px;text-align:center}.install-complete>span{display:grid;width:56px;height:56px;place-items:center;margin:0 auto 15px;border-radius:18px;background:#e4f5e1;color:#3d8733;font-size:28px;font-weight:900}.install-complete h3{margin:0 0 8px;font:800 22px/1.25 Manrope,sans-serif}.install-complete a{display:block;margin-top:18px;padding:13px;border-radius:14px;background:#591773;color:#fff;font-weight:800;text-decoration:none}.install-manual{margin-top:12px;padding:18px}.install-manual h3{margin:0 0 7px;font-size:15px}.install-page [hidden]{display:none!important}@keyframes install-spin{to{transform:rotate(360deg)}}@media(min-width:720px){.install-page{padding-top:34px}.install-hero{padding-top:46px}.install-device{width:186px;height:228px}}@media(prefers-reduced-motion:reduce){.install-status-mark i{animation:none}.install-action button{transition:none}}
.profile-phone-note { margin:14px 6px 0; color:var(--muted); font-size:10px; line-height:1.5; }
.profile-dialog .household-input:disabled { background:#f0edf2; color:#8c8191; }
.profile-photo-editor { display:grid; grid-template-columns:64px minmax(0,1fr); align-items:center; gap:12px; }
.profile-photo-preview { display:grid; width:64px; height:64px; place-items:center; overflow:hidden; border-radius:20px; color:#fff; background:linear-gradient(135deg,#0758e8,#6425c7); font:800 22px Manrope,sans-serif; }
.profile-photo-editor > div { display:grid; gap:3px; }
.profile-photo-editor > div > strong { font-size:12px; }
.profile-photo-editor > div > small { color:var(--muted); font-size:9px; }
.profile-photo-editor > div > span { display:flex; gap:7px; margin-top:5px; }
.profile-photo-editor label { display:inline-flex; padding:7px 9px; border-radius:9px; color:#0758e8; background:#eaf2ff; font-size:9px; font-weight:800; cursor:pointer; }
.profile-crop-dialog { width:min(calc(100% - 28px),440px); max-width:440px; margin:auto; padding:0; border:0; border-radius:26px; background:transparent; }
.profile-crop-dialog::backdrop { background:rgba(6,21,36,.78); backdrop-filter:blur(6px); }
.profile-crop-card { padding:18px; border-radius:26px; background:#fff; color:var(--ink); }
.profile-crop-card header { display:flex; align-items:center; justify-content:space-between; }
.profile-crop-card header small { color:#0758e8; font-size:9px; font-weight:900; letter-spacing:.13em; }
.profile-crop-card h2 { margin:2px 0 0; font:800 21px Manrope,sans-serif; }
.profile-crop-card header button { width:40px; height:40px; border:0; border-radius:13px; color:#17324d; background:#edf3f8; font-size:24px; }
.profile-crop-card > p { margin:10px 0; color:var(--muted); font-size:11px; }
.profile-crop-card canvas { display:block; width:100%; aspect-ratio:1; border-radius:18px; background:#102a43; cursor:grab; touch-action:none; }
.profile-crop-card canvas:active { cursor:grabbing; }
.profile-crop-card > label { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:12px; margin:14px 2px; font-size:11px; font-weight:800; }
.profile-crop-card input[type="range"] { width:100%; accent-color:#0758e8; }
.profile-crop-card > div:last-child { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.profile-crop-card > div:last-child button { min-height:46px; border:0; border-radius:14px; font-weight:800; }
.profile-crop-card > div:last-child button:last-child { color:#fff; background:#0758e8; }
.logout-dialog {
    width: min(calc(100% - 34px), 410px);
    max-width: 410px;
    margin: auto;
    padding: 0;
    border: 0;
    border-radius: 30px;
    color: var(--ink);
    background: transparent;
    overflow: visible;
}
.logout-dialog[open] { animation: logout-dialog-in .42s cubic-bezier(.22, 1, .36, 1) both; }
.logout-dialog.is-closing { animation: logout-dialog-out .22s ease-in both; }
.logout-dialog::backdrop {
    background: rgba(35, 8, 52, .62);
    backdrop-filter: blur(7px) saturate(.85);
    animation: logout-backdrop-in .3s ease-out both;
}
.logout-dialog.is-closing::backdrop { animation: logout-backdrop-out .22s ease-in both; }
.logout-dialog-card {
    position: relative;
    display: grid;
    justify-items: center;
    padding: 32px 26px 24px;
    border: 1px solid rgba(116, 69, 139, .16);
    border-radius: 30px;
    background: linear-gradient(155deg, #fff 0%, #fbf7fd 58%, #f1e7f7 100%);
    box-shadow: 0 30px 80px rgba(41, 11, 58, .32);
    text-align: center;
}
.logout-dialog-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: radial-gradient(circle at 50% 0, rgba(170, 116, 199, .18), transparent 44%);
    pointer-events: none;
}
.logout-dialog-orbit {
    position: relative;
    display: grid;
    place-items: center;
    width: 76px;
    height: 76px;
    margin-bottom: 20px;
    border-radius: 50%;
    background: #f4e8f8;
    color: #6f2d86;
}
.logout-dialog-orbit span {
    position: absolute;
    inset: -7px;
    border: 1px solid rgba(111, 45, 134, .2);
    border-radius: inherit;
    animation: logout-orbit 2.4s ease-in-out infinite;
}
.logout-dialog-orbit svg { width: 34px; height: 34px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.logout-dialog-card > p { position:relative; margin:0 0 7px; color:#8d5a9f; font-size:10px; font-weight:800; letter-spacing:.17em; }
.logout-dialog-card > h2 { position:relative; margin:0; font:800 25px/1.2 Manrope; letter-spacing:-.03em; }
.logout-dialog-card > span { position:relative; max-width:300px; margin-top:11px; color:#776a7d; font-size:13px; line-height:1.55; }
.logout-dialog-actions { position:relative; display:grid; grid-template-columns:1fr 1fr; gap:10px; width:100%; margin-top:25px; }
.logout-dialog-actions button { min-height:52px; border:0; border-radius:16px; font:800 13px DM Sans; cursor:pointer; }
.logout-dialog-actions button:first-child { background:#eee7f2; color:#5d4568; }
.logout-dialog-actions button:last-child { background:#5b1d70; color:#fff; box-shadow:0 10px 22px rgba(91,29,112,.24); }
.logout-dialog-actions button:last-child:disabled { opacity:.72; cursor:wait; }
.house-check-status { display:block; min-height:16px; margin:-12px 2px 10px; color:#a03d50; font-size:10px; font-weight:700; }
.house-check-status.is-valid { color:#397344; }
.registration-preview { position:relative; display:grid; gap:9px; width:100%; margin:20px 0 0; text-align:left; }
.registration-preview div { display:flex; justify-content:space-between; gap:16px; padding:10px 12px; border-radius:12px; background:#f6f1f8; }
.registration-preview dt { color:#8d7796; font-size:10px; font-weight:800; text-transform:uppercase; }
.registration-preview dd { margin:0; color:#321044; font-size:12px; font-weight:800; text-align:right; }
@keyframes logout-dialog-in { from { opacity:0; transform:translateY(26px) scale(.92); } to { opacity:1; transform:translateY(0) scale(1); } }
@keyframes logout-dialog-out { from { opacity:1; transform:translateY(0) scale(1); } to { opacity:0; transform:translateY(18px) scale(.96); } }
@keyframes logout-backdrop-in { from { opacity:0; } to { opacity:1; } }
@keyframes logout-backdrop-out { from { opacity:1; } to { opacity:0; } }
@keyframes logout-orbit { 0%,100% { transform:scale(.92); opacity:.35; } 50% { transform:scale(1.08); opacity:1; } }
.resident-admin-hub { min-height:100dvh; padding:24px 18px 110px; background:linear-gradient(180deg,#fbf8fd 0%,#f5eff9 100%); }
.resident-admin-heading { display:grid; grid-template-columns:46px minmax(0,1fr) 46px; align-items:center; gap:12px; }
.resident-admin-heading > a,.resident-admin-heading > span { display:grid; place-items:center; width:46px; height:46px; border-radius:15px; }
.resident-admin-heading > a { color:#4c1b60; background:#eee3f4; }
.resident-admin-heading > a svg { width:24px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.resident-admin-heading > span { color:#fff; background:#4c145f; font-weight:800; }
.resident-admin-heading p { margin:0 0 2px; color:#9b66aa; font-size:9px; font-weight:800; letter-spacing:.14em; }
.resident-admin-heading h1 { margin:0; font:800 22px Manrope; letter-spacing:-.03em; }
.resident-admin-intro { position:relative; display:grid; grid-template-columns:64px 1fr; gap:18px; margin:24px 0 18px; padding:25px 22px; overflow:hidden; border-radius:28px; color:#fff; background:linear-gradient(145deg,#471059,#7e3594); box-shadow:0 20px 42px rgba(73,19,91,.24); }
.resident-admin-intro::after { content:''; position:absolute; width:170px; height:170px; right:-60px; top:-80px; border:1px solid rgba(255,255,255,.15); border-radius:50%; box-shadow:0 0 0 30px rgba(255,255,255,.04),0 0 0 60px rgba(255,255,255,.025); }
.resident-admin-seal { position:relative; z-index:1; display:grid; place-items:center; width:64px; height:64px; border:1px solid rgba(255,255,255,.24); border-radius:21px; background:rgba(255,255,255,.12); backdrop-filter:blur(8px); }
.resident-admin-seal svg { width:34px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.resident-admin-intro > div { position:relative; z-index:1; }
.resident-admin-intro p { margin:0 0 7px; color:#ddc4e7; font-size:9px; font-weight:800; letter-spacing:.16em; }
.resident-admin-intro h2 { margin:0; font:800 26px/1.12 Manrope; letter-spacing:-.04em; }
.resident-admin-intro div > span { display:block; margin-top:10px; color:#eadcf0; font-size:11px; line-height:1.55; }
.resident-admin-stats { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-bottom:18px; }
.resident-admin-stats article { min-height:112px; padding:16px; border:1px solid #eadff0; border-radius:20px; background:#fff; box-shadow:0 8px 24px rgba(65,16,83,.06); }
.resident-admin-stats span,.resident-admin-stats small { display:block; color:#807486; font-size:10px; line-height:1.35; }
.resident-admin-stats strong { display:block; margin:10px 0 5px; color:#4c145f; font:800 28px/1 Manrope; }
.resident-admin-menu { display:grid; gap:10px; }
.resident-admin-menu-item { display:grid; grid-template-columns:52px minmax(0,1fr) auto; align-items:center; gap:14px; min-height:82px; padding:13px 15px; border:1px solid #eadff0; border-radius:21px; color:var(--ink); background:#fff; box-shadow:0 8px 24px rgba(65,16,83,.06); text-decoration:none; animation:admin-item-in .42s ease both; }
.resident-admin-menu-item:nth-child(2){animation-delay:.04s}.resident-admin-menu-item:nth-child(3){animation-delay:.08s}.resident-admin-menu-item:nth-child(4){animation-delay:.12s}.resident-admin-menu-item:nth-child(5){animation-delay:.16s}.resident-admin-menu-item:nth-child(6){animation-delay:.2s}
.resident-admin-menu-item > span { display:grid; place-items:center; width:52px; height:52px; border-radius:17px; }
.resident-admin-menu-item svg { width:27px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.resident-admin-menu-item h3 { margin:0 0 4px; font:800 15px Manrope; }
.resident-admin-menu-item p { margin:0; color:#807486; font-size:11px; }
.resident-admin-menu-item b { color:#a793b0; font-size:25px; font-weight:400; }
.resident-admin-menu-item.is-upcoming { filter:grayscale(1); opacity:.58; }
.resident-admin-menu-item.is-upcoming em { padding:5px 7px; border:1px solid #bbb; border-radius:999px; color:#666; background:#eee; font:700 8px DM Sans; white-space:nowrap; }
.resident-admin-menu-item.violet > span{color:#6c2a82;background:#efe3f5}.resident-admin-menu-item.rose > span{color:#a84a6c;background:#fae9f0}.resident-admin-menu-item.mint > span{color:#28705e;background:#e3f3ed}.resident-admin-menu-item.amber > span{color:#8c6718;background:#faf0d7}.resident-admin-menu-item.blue > span{color:#346b9b;background:#e3eff8}.resident-admin-menu-item.plum > span{color:#fff;background:#542067}
.resident-admin-super { display:grid; grid-template-columns:1fr auto; gap:2px 12px; margin-top:18px; padding:18px; border:1px dashed #b997c5; border-radius:20px; color:#5b256d; background:#f3e9f7; text-decoration:none; }
.resident-admin-super span { grid-column:1; font-size:9px; font-weight:800; letter-spacing:.15em; }
.resident-admin-super strong { grid-column:1; font-size:14px; }
.resident-admin-super b { grid-column:2; grid-row:1/3; align-self:center; font-size:24px; font-weight:400; }
@keyframes admin-item-in { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
.floating-nav {
    position: fixed;
    z-index: 10;
    bottom: calc(16px + env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    width: min(calc(100% - 30px), 540px);
    height: 70px;
    background: #42105ff2;
    border: 1px solid #ffffff1c;
    box-shadow: 0 15px 35px #2b0a403d;
    border-radius: 23px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    padding: 7px 8px;
    backdrop-filter: blur(12px);
}
.floating-nav button {
    width: 100%;
    height: 100%;
    border: 0;
    background: transparent;
    color: #d2bde0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    font-size: 9px;
    font-weight: 600;
    border-radius: 17px;
}
.floating-nav button svg {
    width: 21px;
    height: 21px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
}
.floating-nav button.is-active {
    background: #ffffff20;
    color: white;
}
.floating-nav form {
    margin: 0;
}
.floating-nav form button {
    color: #e5c8df;
}

/* Senior-friendly sizing: keep every core action readable and easy to tap. */
.resident-app {
    padding-bottom: calc(132px + env(safe-area-inset-bottom));
    font-size: 16px;
}
.app-header p {
    font-size: 14px;
}
.app-header h1 {
    font-size: 28px;
}
.avatar {
    width: 52px;
    height: 52px;
    font-size: 19px;
}
.welcome-card span,
.activity-tag,
.house-detail-top small,
.resident-names > small,
.household-heading small,
.household-sheet-heading small {
    font-size: 11px;
}
.welcome-card h2,
.section-heading h2 {
    font-size: 23px;
}
.section-heading button,
.vehicle-registry-heading button,
.household-heading button {
    min-height: 44px;
    padding: 10px 14px;
    font-size: 14px;
}
.quick-grid button {
    min-height: 88px;
    padding: 18px;
}
.quick-grid strong {
    font-size: 20px;
}
.quick-grid small,
.activity-copy p,
.activity-copy small,
.house-status,
.house-stats span,
.household-note,
.household-empty,
.vehicle-copy small,
.vehicle-empty span,
.household-sheet-heading p,
.app-flash,
.profile-menu small,
.profile-phone-note {
    font-size: 13px;
    line-height: 1.5;
}
.activity-copy h3 {
    font-size: 17px;
}
.activity-date span,
.household-copy small,
.household-role,
.vehicle-household-badge {
    font-size: 11px;
}
.view-title > span {
    font-size: 15px;
    line-height: 1.5;
}
.house-detail-top h3,
.house-stats strong {
    font-size: 18px;
}
.household-member {
    min-height: 72px;
    padding: 12px;
}
.household-avatar {
    width: 44px;
    height: 44px;
    font-size: 15px;
}
.household-copy strong {
    font-size: 15px;
}
.household-menu-toggle {
    min-height: 44px;
}
.vehicle-registry-heading small {
    font-size: 11px;
}
.vehicle-registry-heading h3 {
    font-size: 23px;
}
.vehicle-row {
    min-height: 76px;
    padding: 14px;
}
.vehicle-copy strong {
    font-size: 19px;
}
.household-sheet-heading h3 {
    font-size: 25px;
}
.household-sheet-heading > button {
    width: 48px;
    height: 48px;
}
.household-sheet label {
    font-size: 14px;
}
.household-input {
    height: 58px;
    font-size: 16px;
}
.household-sheet-actions button {
    min-height: 58px;
    font-size: 15px;
}
.profile-identity-card h3 {
    font-size: 23px;
}
.profile-identity-card p {
    font-size: 15px;
}
.profile-identity-card div > span {
    font-size: 11px;
}
.profile-menu > button,
.profile-menu > a,
.profile-menu form > button {
    min-height: 84px;
    padding: 14px 16px;
}
.profile-menu-icon {
    width: 48px;
    height: 48px;
}
.profile-menu strong {
    font-size: 16px;
}
.floating-nav {
    width: min(calc(100% - 24px), 560px);
    height: 82px;
    padding: 7px;
}
.floating-nav button {
    gap: 5px;
    font-size: 12px;
    font-weight: 700;
}
.floating-nav button svg {
    width: 25px;
    height: 25px;
}

/* Larger type and controls across sign-in, OTP and registration flows. */
.registration-header p,
.auth-copy {
    font-size: 16px;
    line-height: 1.65;
}
.step-pill,
.registered-phone span,
.eyebrow {
    font-size: 12px;
}
.registered-phone strong,
.registration-card label,
.role-picker legend,
.auth-card label {
    font-size: 15px;
}
.app-input,
.phone-field {
    min-height: 60px;
    font-size: 16px;
}
.role-picker label > span {
    min-height: 120px;
    height: auto;
    padding: 16px;
}
.role-picker strong {
    font-size: 16px;
}
.role-picker small,
.registration-note,
.auth-note {
    font-size: 13px;
    line-height: 1.55;
}
.declaration {
    gap: 12px;
    font-size: 15px;
    line-height: 1.55 !important;
}
.declaration input {
    width: 24px;
    height: 24px;
}
.registration-submit,
.primary-button {
    min-height: 64px;
    font-size: 17px;
}
.back-link {
    width: 48px;
    height: 48px;
}

:where(.app-shell) button,
:where(.app-shell) a,
:where(.app-shell) input,
:where(.app-shell) select {
    touch-action: manipulation;
}
:where(.app-shell) button:active,
:where(.app-shell) a:active {
    opacity: .78;
}
:where(.app-shell) button:focus-visible,
:where(.app-shell) a:focus-visible,
:where(.app-shell) input:focus-visible,
:where(.app-shell) select:focus-visible {
    outline: 3px solid #9a62bc;
    outline-offset: 3px;
}

@media (max-width: 420px) {
    .quick-grid {
        grid-template-columns: 1fr;
    }
    .field-grid {
        grid-template-columns: 1fr;
        gap: 0;
    }
    .household-member {
        grid-template-columns: 44px minmax(0, 1fr) auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    .app-view {
        animation: none;
    }
    .household-menu,
    .resident-delete-card {
        animation: none;
    }
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}
@media (min-width: 681px) {
    .app-shell {
        max-width: 720px;
        margin: auto;
        box-shadow: 0 0 60px #42105f20;
    }
    .auth-card {
        padding-left: 60px;
        padding-right: 60px;
    }
    .auth-illustration {
        height: 330px;
    }
}
@media (max-width: 360px) {
    .resident-app {
        padding-left: 14px;
        padding-right: 14px;
    }
    .welcome-card {
        height: 180px;
    }
    .quick-grid {
        gap: 8px;
    }
    .quick-grid button {
        padding: 12px;
    }
    .activity-card {
        grid-template-columns: 50px 1fr 8px;
        gap: 10px;
    }
    .auth-card {
        padding-left: 20px;
        padding-right: 20px;
    }
}

.property-admin-page { min-height:100dvh; padding:18px 18px 110px; background:linear-gradient(180deg,#fbf8fc 0,#f6f3f7 100%); }
.property-command { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:center; margin:20px 0 14px; padding:17px 8px; border-radius:22px; color:#fff; background:linear-gradient(135deg,#4b145f,#71338a); box-shadow:0 14px 30px rgba(75,20,95,.2); }
.property-command div { display:grid; justify-items:center; gap:2px; }
.property-command div + div { border-left:1px solid #ffffff38; }
.property-command strong { font:800 28px Manrope; }
.property-command span { color:#eadcf0; font-size:11px; }
.property-search { display:flex; align-items:center; gap:10px; min-height:50px; padding:0 15px; border:1px solid #e4dbe8; border-radius:17px; background:#fff; box-shadow:0 8px 22px rgba(65,16,83,.05); }
.property-search svg { width:20px; flex:0 0 auto; fill:none; stroke:#744486; stroke-width:1.8; stroke-linecap:round; }
.property-search input { min-width:0; flex:1; border:0; outline:0; color:#34283a; background:transparent; font:600 13px DM Sans; }
.property-search input::placeholder { color:#a095a5; }
.property-street-list { display:grid; gap:11px; margin-top:14px; }
.property-street { border:1px solid #e8dfea; border-radius:21px; background:#fff; box-shadow:0 9px 25px rgba(65,16,83,.055); overflow:hidden; }
.property-street[open] { overflow:visible; }
.property-street[hidden] { display:none; }
.property-street > summary { display:grid; grid-template-columns:46px minmax(0,1fr) auto; align-items:center; gap:12px; min-height:72px; padding:12px 15px; cursor:pointer; list-style:none; }
.property-street > summary::-webkit-details-marker { display:none; }
.property-street-icon { display:grid; width:46px; height:46px; place-items:center; border-radius:15px; color:#552069; background:#f0e5f4; }
.property-street-icon svg { width:25px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.property-street > summary strong,.property-street > summary small { display:block; }
.property-street > summary strong { color:#321d3a; font:800 15px Manrope; }
.property-street > summary small { margin-top:3px; color:#8a7d8f; font-size:11px; }
.property-street-toggle { display:grid; width:34px; height:34px; place-items:center; border:1px solid #e5d9e9; border-radius:50%; color:#694078; background:#faf7fb; transition:transform .18s,background .18s; }
.property-street-toggle svg { width:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.property-street[open] .property-street-toggle { transform:rotate(180deg); background:#f0e5f4; }
.property-house-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; padding:0 13px 14px; }
.property-house-grid article { display:grid; min-height:78px; align-content:center; justify-items:center; padding:9px 5px; border-radius:15px; background:#f8f4f9; text-align:center; }
.property-house-grid article span { color:#9b8da0; font-size:9px; }
.property-house-grid article strong { color:#4d1b60; font:800 19px Manrope; }
.property-house-grid article small { color:#7e7183; font-size:9px; }
.property-house-card { border-top:4px solid; }
.property-house-card.is-occupied { border-color:#2f9d68; background:#eef9f3; }
.property-house-card.is-vacant { border-color:#d69a2d; background:#fff8e9; }
.property-house-card.is-occupied small { color:#23764f; }
.property-house-card.is-vacant small { color:#9a6814; }
.property-house-card button { min-height:29px; margin-top:7px; padding:0 9px; border:0; border-radius:9px; color:#fff; background:#5a216e; font:800 9px DM Sans; }
.property-house-grid > p { grid-column:1/-1; margin:0; padding:18px 8px; color:#897c8d; font-size:12px; text-align:center; }
@media (min-width:481px) { .property-admin-page { border-right:1px solid #eadfec; border-left:1px solid #eadfec; } }
.people-admin-page { min-height:100dvh; padding:18px 18px 110px; background:linear-gradient(180deg,#fbf8fc 0,#f6f3f7 100%); }
.people-search { margin-top:18px; }
.people-street-list,.people-house-list { display:grid; gap:12px; }
.people-house-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
.residents-house-list { grid-template-columns:minmax(0,1fr); }
.people-street-list { margin-top:14px; }
.people-street[hidden] { display:none; }
.property-street > .people-house-list { padding:0 13px 14px; }
.people-house-card { padding:15px; border:1px solid #e8dfea; border-radius:20px; background:#fff; box-shadow:0 9px 25px rgba(65,16,83,.055); }
.people-house-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.people-house-heading small { color:#9c8ca2; font-size:8px; letter-spacing:.12em; }
.people-house-status { display:inline-flex; margin-left:5px; padding:3px 6px; border-radius:999px; font:800 7px DM Sans; letter-spacing:.08em; }
.people-house-status.is-rental { color:#8b4f12; background:#fff0d8; }
.people-house-status.is-owner { color:#216b56; background:#e3f4ed; }
.people-house-heading h2 { margin:2px 0 0; color:#4d1b60; font:800 18px Manrope; }
.people-house-heading button { min-height:36px; padding:0 13px; border:0; border-radius:12px; color:#fff; background:#5a216e; font:800 11px DM Sans; }
.people-list { display:grid; gap:9px; margin-top:13px; padding-top:12px; border-top:1px solid #f0e9f2; }
.people-list > div { display:flex; align-items:center; gap:10px; }
.people-list > div > span { display:grid; width:34px; height:34px; flex:0 0 auto; place-items:center; border-radius:50%; color:#5b246e; background:#f1e6f4; font:800 12px Manrope; }
.people-avatar:has(img) { overflow:hidden; background:#e8e1eb; }
.people-avatar img { width:100%; height:100%; object-fit:cover; }
.people-list p,.people-list strong,.people-list small { display:block; margin:0; }
.people-list strong { color:#3b2a40; font-size:12px; }
.people-list small { margin-top:2px; color:#8d808f; font-size:9px; }
.people-resident-row > p { min-width:0; flex:1; }
.people-action-menu { position:relative; z-index:4; margin-left:auto; }
.people-action-menu summary { display:grid; width:34px; height:34px; place-items:center; border-radius:50%; color:#6c5872; background:#f4eef5; cursor:pointer; list-style:none; font-size:20px; line-height:1; }
.people-action-menu summary::-webkit-details-marker { display:none; }
.people-action-menu > div { position:absolute; z-index:3; top:38px; right:0; width:112px; padding:5px; border:1px solid #e5dbe8; border-radius:12px; background:#fff; box-shadow:0 12px 28px rgba(52,22,62,.17); }
.people-action-menu form { margin:0; }
.people-action-menu button { width:100%; min-height:34px; padding:0 10px; border:0; border-radius:8px; color:#4f3458; background:transparent; font:700 10px DM Sans; text-align:left; }
.people-action-menu button:hover { background:#f5eff7; }
.people-action-menu form button { color:#a33249; }
.people-delete-orbit { color:#a33249; background:#fbecef; }
.people-delete-orbit span { border-color:rgba(163,50,73,.2); }
.logout-dialog-card > span strong { color:#5b1d70; }
.people-empty { color:#928697; font-size:11px; text-align:center; }
.people-dialog { width:min(calc(100% - 28px),430px); max-height:calc(100dvh - 28px); padding:0; border:0; border-radius:24px; background:transparent; }
.people-dialog::backdrop { background:rgba(35,16,42,.62); backdrop-filter:blur(3px); }
.people-dialog-card { padding:20px; border-radius:24px; background:#fff; box-shadow:0 24px 60px rgba(35,16,42,.25); }
.people-dialog-card > header { display:flex; align-items:start; justify-content:space-between; gap:12px; }
.people-dialog-card header small { color:#8c7196; font:700 8px DM Sans; letter-spacing:.12em; }
.people-dialog-card header h2 { margin:3px 0 0; color:#40174f; font:800 18px Manrope; }
.people-dialog-card header button { width:34px; height:34px; border:0; border-radius:50%; color:#6a5570; background:#f3edf5; font-size:22px; }
.people-dialog form { display:grid; gap:13px; margin-top:18px; }
.people-dialog form > label:not(.people-check) { display:grid; gap:6px; color:#59485e; font:700 10px DM Sans; }
.people-dialog input:not([type=checkbox]),.people-dialog select { width:100%; min-height:45px; padding:0 12px; border:1px solid #dfd4e3; border-radius:13px; color:#35273a; background:#fff; font:600 12px DM Sans; }
.people-check { display:flex; align-items:center; gap:9px; color:#58485d; font-size:11px; }
.people-check input { width:17px; height:17px; accent-color:#5a216e; }
.people-login-note { margin:0; padding:10px 12px; border-radius:12px; color:#542367; background:#f4eaf7; font-size:10px; }
.people-field-error { color:#a33249; font-size:10px; }
.people-submit { min-height:47px; margin-top:3px; border:0; border-radius:14px; color:#fff; background:linear-gradient(135deg,#4b145f,#71338a); font:800 12px DM Sans; }
@media (min-width:481px) { .people-admin-page { border-right:1px solid #eadfec; border-left:1px solid #eadfec; } }
