/* Manage Household Component */ .manage-household { display: flex; flex-direction: column; gap: 1rem; max-width: 900px; margin: 0 auto; width: 100%; } .manage-section { display: flex; flex-direction: column; gap: 1rem; width: 100%; box-sizing: border-box; padding: 1.2rem 1.25rem; border: 1px solid var(--color-border-light); border-radius: var(--border-radius-lg); background: linear-gradient(180deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.97)), var(--card-bg); box-shadow: var(--shadow-sm); } [data-theme="dark"] .manage-section, body.dark-mode .manage-section { background: linear-gradient(180deg, rgba(26, 37, 52, 0.98), rgba(18, 27, 40, 0.94)), var(--card-bg); border-color: var(--color-border-medium); } .manage-section-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; } .manage-section-header h2 { margin: 0; font-size: 1.2rem; color: var(--text-primary); } .section-description { color: var(--text-secondary); font-size: 0.92rem; line-height: 1.55; margin: 0.45rem 0 0; } .section-error { color: var(--danger); margin: 0; padding: 0.8rem 0.95rem; border-radius: var(--border-radius-md); border: 1px solid color-mix(in srgb, var(--danger) 28%, transparent); background: color-mix(in srgb, var(--danger-light) 78%, white); } /* Household Name Section */ .name-display { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; } .name-display-copy { display: flex; flex-direction: column; gap: 0.7rem; } .name-display h3 { font-size: 1.55rem; color: var(--text-primary); margin: 0; } .household-summary-chips { display: flex; flex-wrap: wrap; gap: 0.55rem; } .household-summary-chip { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.4rem 0.75rem; border-radius: var(--border-radius-full); background: var(--primary-light); color: var(--primary-dark); font-size: 0.82rem; font-weight: 600; } .edit-name-form { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 0.75rem; align-items: center; } .edit-name-form input { min-width: 0; padding: 0.85rem 1rem; border: 1px solid var(--border); border-radius: var(--border-radius-md); font-size: 0.98rem; background: rgba(255, 255, 255, 0.82); color: var(--text-primary); } [data-theme="dark"] .edit-name-form input, body.dark-mode .edit-name-form input { background: rgba(12, 19, 30, 0.92); border-color: var(--color-border-medium); } .manage-household-join-policy-toggle { margin-bottom: 0; } .pending-requests-summary { display: inline-flex; align-items: center; gap: 0.65rem; width: fit-content; padding: 0.45rem 0.8rem; border-radius: var(--border-radius-full); background: rgba(30, 144, 255, 0.1); color: var(--primary-dark); } .pending-requests-summary-label { font-size: 0.8rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .pending-requests-summary-count { min-width: 1.85rem; height: 1.85rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; background: var(--primary); color: var(--color-text-inverse); font-size: 0.85rem; font-weight: 700; } [data-theme="dark"] .pending-requests-summary, body.dark-mode .pending-requests-summary { background: rgba(95, 178, 255, 0.14); color: #d8ecff; } .pending-requests-list { display: flex; flex-direction: column; gap: 0.75rem; } .pending-request-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.85rem; align-items: center; padding: 0.95rem 1rem; border: 1px solid var(--border); border-radius: var(--border-radius-lg); background: color-mix(in srgb, var(--primary-light) 40%, white); } [data-theme="dark"] .pending-request-card, body.dark-mode .pending-request-card { background: rgba(14, 27, 45, 0.96); border-color: var(--color-border-medium); } .pending-request-main { min-width: 0; } .pending-request-topline { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 0.35rem; } .pending-request-name, .pending-request-meta { margin: 0; } .pending-request-name { font-weight: 700; color: var(--text-primary); } .pending-request-meta { color: var(--text-secondary); font-size: 0.84rem; line-height: 1.5; } .pending-request-badge { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.28rem 0.6rem; border-radius: var(--border-radius-full); background: rgba(245, 158, 11, 0.18); color: #b45309; font-size: 0.78rem; font-weight: 700; } .pending-request-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; justify-content: flex-end; } .invite-controls { display: grid; grid-template-columns: 1fr; gap: 0.45rem; align-items: stretch; } .invite-controls label { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: 0.75rem; align-items: center; color: var(--text-primary); font-size: 0.9rem; } .invite-control-label { font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; color: var(--text-secondary); text-transform: uppercase; } .invite-controls select { width: 100%; min-width: 0; border: 1px solid var(--border); border-radius: var(--border-radius-md); padding: 0.62rem 0.75rem; background: rgba(255, 255, 255, 1); color: var(--text-primary); } .invite-controls .btn-primary { margin-top: 0.2rem; } [data-theme="dark"] .invite-controls select, body.dark-mode .invite-controls select { background: rgba(12, 19, 30, 0.92); border-color: var(--color-border-medium); } .invite-links-list { display: flex; flex-direction: column; gap: 0.75rem; } .invite-link-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.85rem; align-items: center; padding: 0.9rem 1rem; border: 1px solid var(--border); border-radius: var(--border-radius-lg); background: rgba(255, 255, 255, 1); } [data-theme="dark"] .invite-link-card, body.dark-mode .invite-link-card { background: rgba(12, 19, 30, 0.9); border-color: var(--color-border-medium); } .invite-link-main { min-width: 0; } .invite-link-topline { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 0.35rem; } .invite-link-token, .invite-link-meta { margin: 0; } .invite-link-token { font-weight: 700; color: var(--text-primary); } .invite-link-meta { color: var(--text-secondary); font-size: 0.84rem; line-height: 1.5; } .invite-status-badge { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.28rem 0.6rem; border-radius: var(--border-radius-full); font-size: 0.78rem; font-weight: 700; } .invite-status-badge.is-active { background: var(--success-light); color: var(--success); } .invite-status-badge.is-used { background: color-mix(in srgb, var(--color-gray-200) 74%, white); color: var(--color-gray-700); } [data-theme="dark"] .invite-status-badge.is-used, body.dark-mode .invite-status-badge.is-used { background: rgba(100, 116, 139, 0.22); color: #d9e2ef; } .invite-status-badge.is-revoked { background: var(--danger-light); color: var(--danger); } .invite-status-badge.is-expired { background: var(--color-warning-light); color: var(--color-warning); } .invite-link-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; justify-content: flex-end; } /* Members Section */ .members-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 0.4rem; } .member-card { display: flex; flex-direction: column; gap: 0.3rem; width: 100%; min-height: 44px; padding: 0.55rem 0.8rem; background: rgba(255, 255, 255, 1); border: 1px solid var(--border); border-radius: var(--border-radius-md); color: inherit; font: inherit; text-align: left; transition: all 0.2s; } .member-card-button { appearance: none; cursor: pointer; } [data-theme="dark"] .member-card, body.dark-mode .member-card { background: rgba(12, 19, 30, 0.9); border-color: var(--color-border-medium); } .member-card:hover { background: var(--card-hover); border-color: var(--primary); transform: translateY(-1px); } [data-theme="dark"] .member-card:hover, body.dark-mode .member-card:hover { background: rgba(20, 32, 48, 0.98); } .member-card-button:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; } .member-main { min-width: 0; } .member-info { display: flex; align-items: center; gap: 0.35rem; min-width: 0; max-width: 100%; white-space: nowrap; } .member-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-weight: 700; color: var(--text-primary); font-size: 0.95rem; } .member-role { display: inline-flex; align-items: center; gap: 0.28rem; flex: 0 0 auto; font-size: 0.82rem; text-transform: capitalize; font-weight: 700; } .member-role-owner { color: #b45309; } .member-role-admin { color: var(--primary-dark); } .member-role-member, .member-role-viewer { color: #6d28d9; } .member-self-pill { display: inline-flex; align-items: center; gap: 0.25rem; flex: 0 0 auto; padding: 0.18rem 0.45rem; border-radius: var(--border-radius-full); background: rgba(245, 158, 11, 0.16); color: #a16207; font-size: 0.75rem; font-weight: 700; } .member-owner-action { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12); } .member-role-action { background: rgba(30, 144, 255, 0.14); color: var(--primary-dark); border-color: rgba(30, 144, 255, 0.34); } .member-role-action:hover:not(:disabled) { background: rgba(30, 144, 255, 0.22); border-color: rgba(30, 144, 255, 0.54); color: var(--primary-dark); } [data-theme="dark"] .member-role-action, body.dark-mode .member-role-action { background: rgba(30, 144, 255, 0.22); color: #d8ecff; border-color: rgba(95, 178, 255, 0.4); } [data-theme="dark"] .member-role-action:hover:not(:disabled), body.dark-mode .member-role-action:hover:not(:disabled) { background: rgba(30, 144, 255, 0.32); border-color: rgba(95, 178, 255, 0.6); color: #f3f9ff; } /* Danger Zone */ .danger-zone { border-color: color-mix(in srgb, var(--danger) 30%, transparent); background: linear-gradient(180deg, rgba(254, 242, 242, 0.95), rgba(255, 255, 255, 0.78)), var(--card-bg); } [data-theme="dark"] .danger-zone, body.dark-mode .danger-zone { background: linear-gradient(180deg, rgba(70, 26, 32, 0.92), rgba(28, 14, 19, 0.94)), var(--card-bg); border-color: color-mix(in srgb, var(--danger) 42%, transparent); } .danger-zone h2 { color: var(--danger); } .danger-zone .manage-section-header { align-items: center; } /* Buttons */ .btn-primary, .btn-secondary, .btn-danger { min-height: 40px; padding: 0.58rem 0.95rem; border-radius: var(--border-radius-full); font-size: 0.88rem; font-weight: 600; } .btn-small { min-height: 34px; padding: 0.38rem 0.72rem; font-size: 0.8rem; } .btn-danger:disabled { background: var(--text-secondary); opacity: 0.5; cursor: not-allowed; } .member-actions-modal-overlay { position: fixed; inset: 0; z-index: var(--z-modal); display: flex; align-items: center; justify-content: center; padding: var(--spacing-md); background: var(--modal-backdrop-bg); } .member-actions-modal { width: min(420px, calc(100vw - (2 * var(--spacing-md)))); max-height: calc(100vh - (2 * var(--spacing-md))); overflow: auto; padding: 1.2rem; border: 1px solid var(--color-border-light); border-radius: var(--border-radius-lg); background: var(--modal-bg); box-shadow: var(--shadow-xl); } .member-actions-modal-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; } .member-actions-modal-copy { min-width: 0; } .member-actions-modal-copy h3 { margin: 0.15rem 0 0.45rem; color: var(--text-primary); font-size: 1.25rem; overflow-wrap: anywhere; } .member-actions-modal-close { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 40px; height: 40px; border: 1px solid var(--border); border-radius: var(--border-radius-full); background: var(--button-ghost-bg); color: var(--text-primary); cursor: pointer; font-size: 1.3rem; line-height: 1; } .member-actions-modal-close:hover, .member-actions-modal-close:focus-visible { border-color: var(--primary); color: var(--primary); outline: none; } .member-actions-modal-actions { display: flex; flex-direction: column; gap: 0.65rem; margin-top: 1.1rem; } .member-actions-modal-actions button { width: 100%; } .member-actions-modal-empty { margin: 1rem 0 0; color: var(--text-secondary); font-size: 0.92rem; } /* Responsive */ @media (max-width: 900px) { .invite-link-card { grid-template-columns: 1fr; } .invite-link-actions { justify-content: flex-start; } .pending-request-card { grid-template-columns: 1fr; } .pending-request-actions { justify-content: flex-start; } } @media (max-width: 768px) { .manage-section { padding: 1rem; } .manage-section-header, .name-display, .danger-zone .manage-section-header { flex-direction: column; align-items: stretch; } .edit-name-form { grid-template-columns: 1fr; } .invite-controls { grid-template-columns: 1fr; } .invite-controls label, .invite-controls select, .invite-controls button { width: 100%; } .members-list { grid-template-columns: 1fr; } .pending-request-actions button { flex: 1 1 100%; } }