:root{--color-primary:#2f6ee8;--color-primary-hover:#1d4ed8;--color-primary-light:#eff6ff;--color-cumple:#10b981;--color-parcial:#f59e0b;--color-nocumple:#dc3545;--color-heading:#22223b;--color-text:#374151;--color-text-muted:#64748b;--color-border:#e5e7eb;--color-surface:#ffffff;--color-surface-input:#f9fafb;--color-surface-muted:#f8f9fa;--color-success:#10b981;--color-warning:#f59e0b;--color-error:#dc3545;--color-info:#3b82f6;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-pill:999px;--shadow-card:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);--shadow-subtle:0 2px 8px rgba(0,0,0,0.08);--shadow-dropdown:0 4px 20px rgba(0,0,0,0.1);--shadow-modal:0 10px 40px rgba(0,0,0,0.12);--focus-ring:0 0 0 3px rgba(59,130,246,0.1);--font-size-body:15px;--font-size-title:1.6em}.btn-primary{background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);padding:10px 20px;font-weight:600;display:inline-flex;align-items:center;gap:8px;cursor:pointer;transition:background .2s}.btn-primary:hover{background:var(--color-primary-hover)}.btn-outline{background:#fff;color:var(--color-primary);border:2px solid var(--color-primary);border-radius:var(--radius-sm);padding:10px 20px;font-weight:600;cursor:pointer}.btn-outline:hover{background:var(--color-primary-light)}.input{background:var(--color-surface-input);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:12px 16px;font-size:1em;color:var(--color-text);transition:border-color .2s,box-shadow .2s,background .2s}.input:focus{border-color:var(--color-primary);outline:none;box-shadow:var(--focus-ring);background:#fff}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:20px}.badge-cumple{background:var(--color-cumple);color:#fff}.badge-cumple,.badge-parcial{padding:4px 10px;border-radius:var(--radius-md);font-size:12px;font-weight:600}.badge-parcial{background:var(--color-parcial);color:#000}.badge-nocumple{background:var(--color-nocumple);color:#fff;padding:4px 10px;border-radius:var(--radius-md);font-size:12px;font-weight:600}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden}body{color:var(--color-text);background:var(--color-surface-muted);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:var(--font-size-body);line-height:1.5}a{color:inherit;text-decoration:none}h1,h2,h3{color:var(--color-heading)}