*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:#1a1a1a;background:#f1f3f5;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;background:#fff;border-right:1px solid #e5e7eb;padding:24px 0;position:fixed;top:0;left:0;bottom:0;display:flex;flex-direction:column;z-index:100}.sidebar-brand{padding:0 20px 24px;font-size:17px;font-weight:700;color:#111;border-bottom:1px solid #f0f0f0;margin-bottom:8px}.sidebar-nav{display:flex;flex-direction:column;gap:2px;padding:0 10px;flex:1 1}.sidebar-link{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:8px;font-size:14px;font-weight:500;color:#555;transition:background .15s,color .15s;cursor:pointer;border:none;background:none;text-align:left;width:100%}.sidebar-link:hover{background:#f3f4f6;color:#111}.sidebar-link.active{background:#eff6ff;color:#2563eb;font-weight:600}.sidebar-link .sidebar-icon{width:20px;text-align:center;font-size:16px;flex-shrink:0}.main-area{margin-left:220px;flex:1 1;min-height:100vh;display:flex;flex-direction:column}.page{max-width:900px}.page,.page-wide{padding:32px 32px 48px;width:100%}.page-wide{max-width:1060px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.page-header h1{font-size:22px;font-weight:700;color:#111}.page-header .page-subtitle{font-size:14px;color:#888;margin-top:2px}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.header h1{font-size:22px;font-weight:700;color:#111}.nav{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.nav-link{padding:7px 14px;border:1px solid #e0e0e0;border-radius:6px;font-size:13px;font-weight:500;color:#444;background:#fff;transition:border-color .15s,background .15s}.nav-link:hover{border-color:#bbb;background:#f5f5f5}.nav-link.active{border-color:#3b82f6;color:#3b82f6;background:#eff6ff}.card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:22px;margin-bottom:20px;box-shadow:0 1px 3px rgba(0,0,0,.04)}.card h2{font-size:15px;font-weight:600;color:#333;margin-bottom:14px}.stat-row{display:flex;gap:16px;margin-bottom:20px}.stat-box{flex:1 1;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:18px 20px;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.04)}.stat-box .stat-label{font-size:11px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.5px}.stat-box .stat-value{font-size:22px;font-weight:700;color:#111;margin-top:4px}.stat-box.stat-green .stat-value{color:#16a34a}.stat-box.stat-blue .stat-value{color:#2563eb}.stat-box.stat-yellow .stat-value{color:#d97706}.stat-box.stat-red .stat-value{color:#dc2626}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .1s}.btn:hover{opacity:.88}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#3b82f6;color:#fff}.btn-success{background:#22c55e;color:#fff}.btn-danger{background:#ef4444;color:#fff}.btn-secondary{background:#f4f4f5;color:#444;border:1px solid #ddd}.btn-whatsapp{background:#25d366;color:#fff}.btn-sm{padding:5px 10px;font-size:12px;border-radius:5px}.btn-xs{padding:3px 8px;font-size:11px;border-radius:4px}table{width:100%;border-collapse:collapse}thead th{padding:10px 12px;text-align:left;font-size:11px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid #f0f0f0}tbody td{padding:10px 12px;font-size:14px;vertical-align:middle}tbody tr{border-bottom:1px solid #f5f5f5;transition:background .1s}tbody tr:hover{background:#fafbfc}tbody tr:last-child{border-bottom:none}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.3px}.badge-pending{background:#fef3c7;color:#92400e}.badge-done{background:#dcfce7;color:#166534}.badge-cancelled{background:#f3f4f6;color:#6b7280}.badge-rescheduled{background:#dbeafe;color:#1e40af}.badge-makeup{background:#ede9fe;color:#6d28d9}.badge-paid{background:#dcfce7;color:#166534}.badge-overdue,.badge-unpaid{background:#fef2f2;color:#991b1b}.badge-active{background:#dcfce7;color:#166534}.badge-inactive{background:#f3f4f6;color:#6b7280}.badge-potential{background:#e0e7ff;color:#3730a3}.input,.select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;background:#fff;color:#333;transition:border-color .15s}.input:focus,.select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.input{width:100%}textarea.input{resize:vertical;min-height:100px;font-family:inherit;line-height:1.6}.label{display:block;font-size:13px;color:#555;margin-bottom:4px}.label,.toast{font-weight:500}.toast{padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:16px}.toast-success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.toast-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.toast-warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.flex,.flex-col{display:flex}.flex-col{flex-direction:column}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1 1}.text-center{text-align:center}.text-right{text-align:right}.text-muted{color:#888}.text-muted,.text-sm{font-size:13px}.text-xs{font-size:12px}.font-bold{font-weight:600}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mt-2{margin-top:8px}.nowrap,.truncate{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;max-width:160px}.link{color:#3b82f6}.link:hover{text-decoration:underline}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.grid-3{grid-template-columns:1fr 1fr 1fr;grid-gap:16px}.card-grid,.grid-3{display:grid;gap:16px}.card-grid{grid-template-columns:repeat(3,1fr);grid-gap:16px}@media (max-width:900px){.card-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.card-grid{grid-template-columns:1fr}}.card-link{display:block;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;text-decoration:none;color:inherit;box-shadow:0 1px 3px rgba(0,0,0,.04);transition:box-shadow .15s,transform .15s;cursor:pointer}.card-link:hover{box-shadow:0 4px 12px rgba(0,0,0,.08);transform:translateY(-2px)}.timeline{position:relative;padding-left:28px}.timeline:before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:#e5e7eb;border-radius:1px}.timeline-item{position:relative;padding-bottom:20px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-28px;top:4px;width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 2px #e5e7eb}.timeline-dot.dot-done{background:#22c55e;box-shadow:0 0 0 2px #bbf7d0}.timeline-dot.dot-pending{background:#f59e0b;box-shadow:0 0 0 2px #fde68a}.timeline-dot.dot-rescheduled{background:#3b82f6;box-shadow:0 0 0 2px #bfdbfe}.timeline-dot.dot-cancelled{background:#9ca3af;box-shadow:0 0 0 2px #e5e7eb}.timeline-body{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px 16px;box-shadow:0 1px 2px rgba(0,0,0,.03)}.timeline-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.timeline-date{font-size:13px;font-weight:600;color:#333}.timeline-notes{font-size:13px;color:#666;line-height:1.5;margin-top:6px}.timeline-notes strong{font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:#999;font-weight:600}.timeline-rescheduled{font-size:12px;color:#3b82f6;margin-top:4px}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin .7s linear infinite}.empty{color:#aaa;text-align:center;padding:32px 16px;font-size:14px}.bottom-nav{display:none}@media (max-width:768px){.main-area{margin-left:0;overflow-x:hidden}.page,.page-wide{max-width:100vw;overflow-x:hidden}.sidebar{display:none}.page,.page-wide{padding:20px 16px 100px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #e5e7eb;z-index:200;padding:6px 0 env(safe-area-inset-bottom,8px);justify-content:space-around;box-shadow:0 -2px 8px rgba(0,0,0,.06)}.bottom-nav,.bottom-nav-item{display:flex;align-items:center}.bottom-nav-item{flex-direction:column;gap:2px;padding:6px 12px;font-size:10px;font-weight:500;color:#888;text-decoration:none;border-radius:8px;transition:color .15s;-webkit-tap-highlight-color:transparent}.bottom-nav-item.active{color:#2563eb;font-weight:600}.bottom-nav-icon{font-size:20px;line-height:1}.login-shell .bottom-nav{display:none}.login-shell .main-area{margin-left:0}.page-header{flex-wrap:wrap;gap:8px}.stat-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.stat-box{padding:14px 12px}.stat-box .stat-value{font-size:18px}.stat-box .stat-label{font-size:10px}.card{padding:16px;margin-bottom:14px;overflow-x:auto;-webkit-overflow-scrolling:touch}.card h2{font-size:14px;margin-bottom:10px}thead th{padding:8px 10px;font-size:10px;white-space:nowrap}tbody td{padding:8px 10px;font-size:13px}.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr 1fr}.btn{min-height:40px;padding:10px 16px;font-size:14px}.btn-sm{min-height:36px;padding:8px 12px;font-size:13px}.btn-xs{min-height:32px;padding:6px 10px;font-size:12px}.flex.gap-2,.flex.gap-3,.flex.gap-4{flex-wrap:wrap}.input,.select{font-size:16px;padding:10px 12px}.timeline{padding-left:22px}.timeline-dot{left:-22px;width:10px;height:10px}.timeline-body{padding:10px 12px}.timeline-head{flex-wrap:wrap;gap:6px}.timeline-date,.timeline-notes{font-size:12px}.toast{position:fixed;top:12px;left:16px;right:16px;z-index:300;box-shadow:0 4px 12px rgba(0,0,0,.12)}.nav-link{padding:6px 10px;font-size:12px}.calendar-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.calendar-year-grid{grid-template-columns:repeat(2,1fr)!important;gap:8px!important}.calendar-cell{min-height:50px!important;padding:3px!important;border-radius:6px!important}.calendar-nav{flex-wrap:wrap;gap:8px}.hide-mobile{display:none!important}}