:root{color-scheme:light;--color-bg: #f6f9f8;--color-surface: #ffffff;--color-border: #dbe8e5;--color-text: #223432;--color-text-muted: #5f7573;--color-primary: #1f7a72;--color-primary-hover: #175f59;--color-accent-soft: #e3f2f0;--color-danger: #a4342a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text)}a{color:var(--color-primary)}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--color-surface);border-right:1px solid var(--color-border);border-top:4px solid var(--color-primary);padding:1.5rem 1rem;display:flex;flex-direction:column;gap:.25rem}.sidebar-brand{display:flex;align-items:center;gap:.5rem;margin:0 0 .15rem .25rem}.sidebar-brand .star{color:var(--color-primary);flex-shrink:0}.sidebar-brand h1{font-size:1.05rem;margin:0;line-height:1.2}.sidebar-tagline{font-size:.72rem;color:var(--color-text-muted);margin:0 0 1.25rem .25rem}.sidebar a{padding:.5rem .75rem;border-radius:6px;text-decoration:none;color:var(--color-text);font-size:.92rem}.sidebar a.active,.sidebar a:hover{background:var(--color-accent-soft);color:var(--color-primary)}.sidebar .role-badge{margin-top:auto;font-size:.75rem;color:var(--color-text-muted);border-top:1px solid var(--color-border);padding-top:.75rem}.main{flex:1;padding:2rem 2.5rem;max-width:1100px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:1.25rem 1.5rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:10px;padding:1rem 1.25rem}.stat-card .value{font-size:1.6rem;font-weight:600;color:var(--color-primary)}.stat-card .label{font-size:.8rem;color:var(--color-text-muted)}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--color-border)}th{color:var(--color-text-muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}.badge{display:inline-block;font-size:.72rem;padding:.15rem .5rem;border-radius:999px;background:var(--color-accent-soft);color:var(--color-primary)}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:340px;background:var(--color-surface);border:1px solid var(--color-border);border-top:4px solid var(--color-primary);border-radius:12px;padding:2rem}.login-card h1{font-size:1.2rem;margin-bottom:.15rem}.login-brand{display:flex;align-items:center;gap:.5rem;margin-bottom:.15rem}.login-brand .star{color:var(--color-primary);flex-shrink:0}.login-tagline{font-size:.8rem;color:var(--color-text-muted);margin-bottom:1.5rem}label{display:block;font-size:.85rem;margin-bottom:.3rem;color:var(--color-text-muted)}input,select{width:100%;padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:6px;font-size:.9rem;margin-bottom:1rem}button{cursor:pointer;border:none;border-radius:6px;padding:.55rem 1rem;background:var(--color-primary);color:#fff;font-size:.9rem}button:hover{background:var(--color-primary-hover)}.error-text{color:var(--color-danger);font-size:.85rem;margin-bottom:.75rem}.search-row{display:flex;gap:.75rem;margin-bottom:1rem;max-width:400px}.search-row input{margin-bottom:0}.page-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:1.25rem}.page-header h2{margin:0}.muted{color:var(--color-text-muted);font-size:.85rem}.directory-household{break-inside:avoid;padding:.6rem 0;border-bottom:1px solid var(--color-border)}.directory-household h3{margin:0 0 .15rem;font-size:1rem}.directory-member{font-size:.88rem;color:var(--color-text-muted)}.upcoming-list{list-style:none;padding:0;margin:0}.upcoming-list li{display:flex;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid var(--color-border);font-size:.88rem}.upcoming-list li:last-child{border-bottom:none}@media print{.sidebar,.search-row,.no-print{display:none!important}.main{padding:0;max-width:none}.app-shell{display:block}body{background:#fff}}
