:root{--bg: #ffffff;--bg-elev: #f8fafc;--bg-elev-2: #f1f5f9;--fg: #0f172a;--fg-muted: #475569;--fg-faded: #94a3b8;--border: #e2e8f0;--border-strong: #cbd5e1;--accent: #2563eb;--accent-fg: #ffffff;--accent-soft: #dbeafe;--danger: #b91c1c;--danger-bg: #fee2e2;--ok: #166534;--ok-bg: #dcfce7;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 16px rgba(0, 0, 0, .04);--radius: 10px;--radius-sm: 6px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--header-h: 56px;--sidebar-w: 220px;--footer-h: 40px;color-scheme:light}[data-theme=dark]{--bg: #0f172a;--bg-elev: #1e293b;--bg-elev-2: #334155;--fg: #f1f5f9;--fg-muted: #cbd5e1;--fg-faded: #94a3b8;--border: #334155;--border-strong: #475569;--accent: #60a5fa;--accent-fg: #0f172a;--accent-soft: #1e3a8a;--danger: #fca5a5;--danger-bg: #7f1d1d;--ok: #86efac;--ok-bg: #14532d;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .3);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{margin:0 0 var(--space-3);line-height:1.25;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 var(--space-3)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--fg-muted)}.splash{display:grid;place-items:center;height:100vh;color:var(--fg-muted)}.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--fg);font:inherit;cursor:pointer;transition:background .12s,border-color .12s;text-decoration:none}.btn:hover{background:var(--bg-elev-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-primary:hover{filter:brightness(1.05)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger-bg)}.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--fg);cursor:pointer;font-size:1.1rem;font:inherit}.icon-btn:hover{background:var(--bg-elev);border-color:var(--border)}.link{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font:inherit}label{display:flex;flex-direction:column;gap:var(--space-1);font-size:.875rem;color:var(--fg-muted)}input[type=text],input[type=email],input[type=password],input[type=number],textarea{font:inherit;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg);color:var(--fg);width:100%}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.alert{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:.9rem}.alert-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger)}.alert-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:var(--space-5);background:var(--bg)}.auth-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);width:100%;max-width:380px;box-shadow:var(--shadow)}.auth-card h1{margin-bottom:0}.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.qr-wrap img{background:#fff;padding:8px;border-radius:var(--radius-sm)}.qr-wrap code{font-size:.85rem;word-break:break-all;background:var(--bg-elev-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--header-h) 1fr var(--footer-h);grid-template-areas:"header header" "sidebar main" "footer footer";min-height:100vh}.app-header{grid-area:header;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-elev);position:sticky;top:0;z-index:10}.app-title{font-size:1.05rem;margin:0;flex:1}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.sidebar-toggle{display:none}.sidebar{grid-area:sidebar;background:var(--bg-elev);border-right:1px solid var(--border);padding:var(--space-3)}.nav{display:flex;flex-direction:column;gap:var(--space-1)}.nav-link{display:block;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--fg);text-decoration:none;font-size:.95rem}.nav-link:hover{background:var(--bg-elev-2);text-decoration:none}.nav-link.active{background:var(--accent-soft);color:var(--accent);font-weight:500}.main{grid-area:main;padding:var(--space-5);overflow-y:auto}.app-footer{grid-area:footer;display:flex;align-items:center;justify-content:center;gap:var(--space-2);font-size:.85rem;color:var(--fg-faded);border-top:1px solid var(--border);background:var(--bg-elev)}.user-menu{position:relative}.user-menu summary{list-style:none;cursor:pointer;padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm)}.user-menu summary::-webkit-details-marker{display:none}.user-menu summary:hover{background:var(--bg-elev-2)}.user-menu-panel{position:absolute;right:0;top:calc(100% + 4px);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);min-width:200px;display:flex;flex-direction:column;gap:var(--space-2);box-shadow:var(--shadow);z-index:20}.user-meta{font-size:.85rem;color:var(--fg-muted)}.version-btn{font:inherit;font-size:.8rem;padding:var(--space-1) var(--space-2);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;color:var(--fg-muted);cursor:pointer}.version-btn:hover{border-color:var(--accent);color:var(--accent)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:grid;place-items:center;padding:var(--space-4);z-index:100}.modal-card{background:var(--bg);color:var(--fg);border-radius:var(--radius);width:100%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--shadow)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.modal-header h2{margin:0}.modal-body{padding:var(--space-4);overflow-y:auto}.version-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-3)}.version-card header h3 small{color:var(--fg-faded);font-weight:400;font-size:.85rem}.version-card h4{font-size:.9rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted);margin-top:var(--space-3)}.version-card ul{margin:0;padding-left:1.25rem}.versions-list{display:flex;flex-direction:column;gap:var(--space-2)}.page-header{margin-bottom:var(--space-5)}.page-actions{margin-top:var(--space-5);display:flex;gap:var(--space-2)}.empty-state{text-align:center;padding:var(--space-6);color:var(--fg-muted)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4)}.module-card{text-align:left;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);cursor:pointer;font:inherit;color:var(--fg);transition:border-color .12s,transform .06s}.module-card:hover{border-color:var(--accent)}.module-card:active{transform:scale(.99)}.module-card h3{margin:0 0 var(--space-1)}.module-card p{margin:0;font-size:.9rem}.settings-section{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4)}.settings-section h3{margin-top:0}.settings-form{display:flex;flex-direction:column;gap:var(--space-3);max-width:360px}.kv{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-4);margin:0}.kv dt{color:var(--fg-muted);font-size:.875rem}.kv dd{margin:0}@media (max-width: 720px){.app-shell{grid-template-columns:1fr;grid-template-areas:"header" "main" "sidebar" "footer"}.sidebar-toggle{display:inline-flex}.sidebar{border-right:0;border-top:1px solid var(--border);padding:var(--space-2)}.nav{flex-direction:row;overflow-x:auto;gap:var(--space-2)}.nav-link{flex-shrink:0}}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev)}.data-table{width:100%;border-collapse:collapse;font-size:.92rem}.data-table thead th{text-align:left;font-weight:500;color:var(--fg-muted);border-bottom:1px solid var(--border);padding:var(--space-2) var(--space-3);background:var(--bg-elev-2);position:sticky;top:0;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.data-table tbody td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:var(--bg-elev-2)}.data-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.data-table .empty{text-align:center;color:var(--fg-faded);padding:var(--space-5)}.positive{color:var(--ok)}.negative{color:var(--danger)}.toolbar{display:flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-3);flex-wrap:wrap}.toolbar input,.toolbar select{padding:6px 10px;font-size:.9rem;width:auto;min-width:160px}.toolbar input[type=search]{min-width:220px}.toolbar-spacer{flex:1}.hint{margin-top:var(--space-2);font-size:.85rem}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3);flex-wrap:wrap;gap:var(--space-2)}.section-head h3{margin:0}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:500;background:var(--bg-elev-2);color:var(--fg-muted);border:1px solid var(--border);white-space:nowrap}.badge.cat-saúde,.badge.tipo-vacina{background:#dcfce7;color:#166534;border-color:#86efac}.badge.cat-habitação{background:#dbeafe;color:#1e40af;border-color:#93c5fd}.badge.cat-fiscal{background:#fef3c7;color:#92400e;border-color:#fcd34d}.badge.cat-identidade{background:#ede9fe;color:#5b21b6;border-color:#c4b5fd}.badge.cat-seguros{background:#fce7f3;color:#9d174d;border-color:#f9a8d4}.badge.cat-veículos{background:#ffedd5;color:#9a3412;border-color:#fdba74}.badge.cat-educação{background:#cffafe;color:#155e75;border-color:#67e8f9}.badge.cat-trabalho{background:#e0e7ff;color:#3730a3;border-color:#a5b4fc}.badge.tipo-consulta{background:#dbeafe;color:#1e40af;border-color:#93c5fd}.badge.tipo-exame{background:#fef3c7;color:#92400e;border-color:#fcd34d}[data-theme=dark] .badge{filter:brightness(.85)}.stat-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);display:flex;flex-direction:column;gap:4px;text-align:left}.stat-card.clickable{cursor:pointer;transition:border-color .12s,transform .06s;border:1px solid var(--border)}.stat-card.clickable:hover{border-color:var(--accent)}.stat-card.clickable:active{transform:scale(.99)}.stat-card.highlight{background:var(--accent-soft);border-color:var(--accent)}.stat-label{color:var(--fg-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:1.5rem;font-weight:600;font-variant-numeric:tabular-nums}.stat-value-sm{font-size:.95rem;font-weight:500;line-height:1.3}.small{font-size:.8rem}.bars{display:flex;flex-direction:column;gap:var(--space-2)}.bar-row{display:grid;grid-template-columns:130px 1fr 100px;align-items:center;gap:var(--space-2);font-size:.9rem}.bar-label{color:var(--fg-muted)}.bar-track{display:block;background:var(--bg-elev-2);height:12px;border-radius:4px;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:4px;transition:width .3s}.bar-value{text-align:right;font-variant-numeric:tabular-nums}.sparkline{width:100%;height:180px;display:block}.sparkline-labels{display:flex;justify-content:space-between;color:var(--fg-faded);font-size:.75rem;margin-top:var(--space-1);padding:0 8px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}@media (max-width: 900px){.two-col{grid-template-columns:1fr}}.bare-list{margin:0;padding:0;list-style:none}.list-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--border);gap:var(--space-3)}.list-row:last-child{border-bottom:0}.list-row .right{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.upcoming-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-3)}.upcoming-card{display:flex;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev-2);align-items:center}.upcoming-date{display:flex;flex-direction:column;align-items:center;background:var(--accent);color:var(--accent-fg);border-radius:var(--radius-sm);padding:6px 10px;min-width:56px}.upcoming-date .day{font-size:1.4rem;font-weight:600;line-height:1}.upcoming-date .month{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.upcoming-title{font-weight:500}@media print{body{background:#fff!important;color:#000!important}.app-header,.sidebar,.app-footer,.header-actions,.page-actions,.no-print{display:none!important}.app-shell{display:block}.main{padding:0!important;overflow:visible!important}.module-card,.version-card,.settings-section{border:1px solid #ccc;box-shadow:none!important;page-break-inside:avoid}body:after{content:"Home Sweet Home — " attr(data-print-date);display:block;margin-top:2rem;font-size:.8rem;color:#555}}
