:root{--bg: #F8F5EF;--surface: #FFFFFF;--surface-alt: #F1EBDE;--surface-warm: #EAE1CD;--border: #E6DECB;--border-strong: #D6C9AC;--text: #2A2620;--text-secondary: #6E6558;--text-tertiary: #9C9184;--text-on-accent: #FFFFFF;--accent-50: #F3ECDD;--accent-100: #E8DBBF;--accent-500: #9C815A;--accent-600: #7E6746;--accent-700: #625038;--danger: #A15D48;--danger-bg: #F2E4DD;--warning: #9C7E33;--warning-bg: #F1E9D2;--success: #5C7460;--success-bg: #E7EDE5;--neutral-bg: #EFE9DA;--shadow-xs: 0 1px 2px rgba(42, 38, 32, .04);--shadow-sm: 0 1px 3px rgba(42, 38, 32, .05), 0 3px 10px rgba(42, 38, 32, .03);--shadow-md: 0 3px 14px rgba(42, 38, 32, .07), 0 1px 3px rgba(42, 38, 32, .05);--shadow-lg: 0 10px 28px rgba(42, 38, 32, .1), 0 2px 6px rgba(42, 38, 32, .05);--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-pill: 999px;--nav-w: 248px;--header-h: 60px;--bottomnav-h: 62px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}input,textarea,select,button{font-family:inherit}input::placeholder,textarea::placeholder{color:#ada290}h1,h2,h3,h4,p{margin:0}button{cursor:pointer}.t-display{font-size:23px;font-weight:600;letter-spacing:-.015em;color:var(--text)}.t-title{font-size:16.5px;font-weight:600;letter-spacing:-.01em;color:var(--text)}.t-label{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary)}.t-body{font-size:14.5px;font-weight:400;color:var(--text);line-height:1.6}.t-small{font-size:12.5px;color:var(--text-secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--r-md);font-weight:600;border:1px solid transparent;transition:box-shadow .15s ease,background .15s ease,border-color .15s ease,color .15s ease;white-space:nowrap;text-decoration:none;letter-spacing:.01em}.btn:focus-visible{outline:2px solid var(--accent-500);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-md{padding:11px 18px;font-size:14px}.btn-lg{padding:13px 22px;font-size:14.5px}.btn-sm{padding:7px 12px;font-size:12.5px}.btn-block{width:100%}.btn-primary{background:var(--text);color:#fff;box-shadow:var(--shadow-xs)}.btn-primary:hover:not(:disabled){background:#3d372e;box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-alt)}.btn-tertiary{background:transparent;color:var(--text-secondary);border-color:transparent}.btn-tertiary:hover:not(:disabled){background:var(--surface-alt);color:var(--text)}.btn-destructive{background:transparent;color:var(--danger);border-color:var(--border)}.btn-destructive:hover:not(:disabled){background:var(--danger-bg);border-color:#e0c9bf}.btn-whatsapp{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-whatsapp:hover:not(:disabled){background:var(--surface-alt)}.field-label{display:block;font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:7px}.field-hint{font-size:11.5px;color:var(--text-tertiary);margin-top:5px;line-height:1.4}.field-error{font-size:12px;color:var(--danger);margin-top:5px;font-weight:500}.input{width:100%;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:11px 13px;font-size:14.5px;color:var(--text);transition:border-color .12s,box-shadow .12s}.input:hover{border-color:#c2b396}.input:focus{outline:none;border-color:var(--accent-500);box-shadow:0 0 0 3px var(--accent-50)}.input.has-error{border-color:var(--danger)}.input.has-error:focus{box-shadow:0 0 0 3px var(--danger-bg)}.input:disabled{background:var(--surface-alt);color:var(--text-tertiary)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-xs)}.card-hover{transition:box-shadow .15s ease,border-color .15s ease;cursor:pointer}.card-hover:hover{box-shadow:var(--shadow-sm);border-color:var(--border-strong)}.chip{padding:10px 15px;border-radius:var(--r-sm);font-size:13.5px;font-weight:600;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);transition:all .12s ease;min-height:40px}.chip:hover{border-color:var(--accent-500)}.chip.active{background:var(--text);border-color:var(--text);color:#fff}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:var(--r-pill);letter-spacing:.01em}.badge-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.badge-overdue{background:var(--danger-bg);color:var(--danger)}.badge-overdue .badge-dot{background:var(--danger)}.badge-today{background:var(--success-bg);color:var(--success)}.badge-today .badge-dot{background:var(--success)}.badge-upcoming{background:var(--warning-bg);color:var(--warning)}.badge-upcoming .badge-dot{background:var(--warning)}.badge-neutral{background:var(--neutral-bg);color:var(--text-tertiary)}.badge-neutral .badge-dot{background:var(--text-tertiary)}.badge-requirement{background:var(--surface-warm);color:var(--accent-700);font-weight:600}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}.skeleton{background:linear-gradient(90deg,var(--surface-alt) 25%,#E7DFCB 37%,var(--surface-alt) 63%);background-size:400px 100%;animation:shimmer 1.3s ease-in-out infinite;border-radius:var(--r-sm)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.toast{position:fixed;left:50%;bottom:88px;transform:translate(-50%);background:var(--text);color:#fff;padding:11px 18px;border-radius:var(--r-pill);font-size:13.5px;font-weight:600;box-shadow:var(--shadow-lg);z-index:100;animation:toastIn .18s ease;display:flex;align-items:center;gap:8px}a{color:var(--accent-700);text-decoration:none}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .2s ease}@keyframes sheetIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.sheet-in{animation:sheetIn .2s cubic-bezier(.16,1,.3,1)}.row2{display:grid;gap:14px;grid-template-columns:1fr}@media (min-width: 560px){.row2{grid-template-columns:1fr 1fr}}.app-shell{display:flex;min-height:100vh}.app-main{flex:1;min-width:0}.app-content{max-width:1080px;margin:0 auto;padding:28px 24px calc(40px + var(--bottomnav-h))}@media (min-width: 900px){.app-content{padding:40px 40px 48px}}
