:root{--color-bg: var(--tg-theme-bg-color, #ffffff);--color-text: var(--tg-theme-text-color, #000000);--color-hint: var(--tg-theme-hint-color, #707579);--color-link: var(--tg-theme-link-color, #2481cc);--color-primary: var(--tg-theme-button-color, #2481cc);--color-primary-text: var(--tg-theme-button-text-color, #ffffff);--color-secondary: var(--tg-theme-secondary-bg-color, #f4f4f5);--color-success: #34c759;--color-warning: #ff9500;--color-danger: #ff3b30;--color-divider: rgba(0, 0, 0, .08);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-pill: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-xs: 11px;--font-size-sm: 13px;--font-size-base: 15px;--font-size-lg: 17px;--font-size-xl: 20px;--tab-h: 56px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}@media (prefers-color-scheme: dark){:root{--color-divider: rgba(255, 255, 255, .08)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{margin:0;padding:0;height:100%;font-family:var(--font-stack);background:var(--color-secondary);color:var(--color-text);font-size:var(--font-size-base);line-height:1.4;overscroll-behavior:none}button{font-family:inherit;font-size:inherit;cursor:pointer}.app-header{background:var(--color-bg);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-divider);position:sticky;top:0;z-index:50}.app-header h1{margin:0;font-size:var(--font-size-xl);font-weight:600}.app-header .subtitle{font-size:var(--font-size-sm);color:var(--color-hint);margin-top:2px}.screen{padding-bottom:calc(var(--tab-h) + var(--safe-bottom) + var(--space-4))}.section-header{text-transform:uppercase;font-size:var(--font-size-xs);color:var(--color-hint);padding:var(--space-4) var(--space-4) var(--space-2);letter-spacing:.3px;font-weight:600}.hero{background:linear-gradient(135deg,var(--color-primary) 0%,#1a6cb3 100%);color:var(--color-primary-text);margin:var(--space-3);padding:18px 16px;border-radius:var(--radius-md)}.hero .greeting{font-size:14px;opacity:.85}.hero .name{font-size:22px;font-weight:600;margin-top:2px}.hero .role{font-size:13px;opacity:.85;margin-top:4px}.event{background:var(--color-bg);margin:0 var(--space-3) var(--space-3);border-radius:var(--radius-md);padding:14px;display:flex;gap:12px;border:1px solid var(--color-divider);cursor:pointer;transition:transform .15s}.event:active{transform:scale(.99)}.event.today-event{border:2px solid var(--color-primary);box-shadow:0 4px 14px #2481cc1f}.event.completed .date-block{background:var(--color-secondary)}.event .date-block{background:var(--color-secondary);border-radius:10px;padding:8px 10px;text-align:center;min-width:56px;flex-shrink:0}.event.today-event .date-block{background:var(--color-primary);color:var(--color-primary-text)}.event.today-event .date-block .mon{color:#ffffffd9}.event .date-block .day{font-size:22px;font-weight:700;line-height:1}.event .date-block .mon{font-size:11px;text-transform:uppercase;color:var(--color-hint);margin-top:2px;letter-spacing:.5px}.event .info{flex:1;min-width:0}.event .info .title{font-weight:600;font-size:16px;margin-bottom:4px}.event .info .meta{font-size:13px;color:var(--color-hint);margin:2px 0}.event .info .meta b{color:var(--color-text);font-weight:500}.event .info .badges{margin-top:6px;display:flex;gap:4px;flex-wrap:wrap}.badge{display:inline-block;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.badge.confirmado{background:#34c75926;color:var(--color-success)}.badge.pendiente{background:#ff950026;color:var(--color-warning)}.badge.completado{background:#34c75926;color:var(--color-success)}.badge.capitan{background:#2481cc26;color:var(--color-primary)}.live-pill{display:inline-flex;align-items:center;gap:4px;background:var(--color-primary);color:var(--color-primary-text);font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 7px;border-radius:4px;letter-spacing:.4px}.live-pill:before{content:"";width:6px;height:6px;background:#fff;border-radius:50%;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton{background:var(--color-divider);animation:skeleton-pulse 1.4s ease-in-out infinite;display:block}@keyframes skeleton-pulse{0%,to{opacity:.7}50%{opacity:.35}}.btn{border:none;padding:11px 14px;border-radius:var(--radius-md);font-weight:600;font-size:14px;width:100%;margin-top:var(--space-3)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--color-primary);color:var(--color-primary-text)}.btn.ghost{background:var(--color-secondary);color:var(--color-text)}.btn.danger-soft{background:#ff3b301a;color:var(--color-danger)}.pill{display:flex;align-items:center;justify-content:center;gap:6px;padding:11px;margin-top:var(--space-3);border-radius:var(--radius-md);font-size:14px;font-weight:600}.pill.success{background:#34c7591f;color:var(--color-success)}.empty{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-hint)}.empty .ic{font-size:36px;margin-bottom:var(--space-2);opacity:.4}.error-screen{padding:var(--space-6);text-align:center}.error-screen h2{font-size:var(--font-size-lg);margin-bottom:var(--space-2)}.error-screen .hint{font-size:var(--font-size-sm);color:var(--color-hint);margin-top:var(--space-4)}.spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-3);color:var(--color-hint)}.spinner .dots{display:flex;gap:6px}.spinner .dot{width:10px;height:10px;background:var(--color-primary);border-radius:50%;animation:bounce 1.2s infinite ease-in-out}.spinner .dot:nth-child(2){animation-delay:.15s}.spinner .dot:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{transform:scale(.4);opacity:.4}40%{transform:scale(1);opacity:1}}.modal-bg{position:fixed;inset:0;background:#00000080;display:none;z-index:200;align-items:flex-end;justify-content:center}.modal-bg.show{display:flex}.modal{background:var(--color-bg);width:100%;max-width:480px;max-height:88vh;border-radius:16px 16px 0 0;overflow-y:auto;padding-bottom:calc(20px + var(--safe-bottom));animation:slideUp .25s ease-out}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-handle{width:36px;height:4px;background:var(--color-hint);opacity:.3;border-radius:2px;margin:8px auto 4px}.modal-body{padding:var(--space-3) var(--space-4)}.modal-body h2{margin:var(--space-2) 0 var(--space-1);font-size:var(--font-size-xl)}.detail-row{display:flex;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-divider)}.detail-row:last-of-type{border-bottom:none}.detail-row .ic{width:28px;height:28px;flex-shrink:0;border-radius:var(--radius-sm);background:var(--color-secondary);display:flex;align-items:center;justify-content:center;font-size:14px}.detail-row .lbl{font-size:var(--font-size-xs);color:var(--color-hint);text-transform:uppercase;letter-spacing:.3px}.detail-row .val{font-size:var(--font-size-base);font-weight:500;margin-top:2px}.modal-actions{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.saldo-card{background:var(--color-bg);margin:var(--space-3);padding:22px var(--space-4);border-radius:var(--radius-md);text-align:center}.saldo-card .saldo-lbl{font-size:var(--font-size-sm);color:var(--color-hint)}.saldo-card .saldo-amt{font-size:34px;font-weight:700;margin:8px 0 6px;letter-spacing:-.5px}.saldo-card .saldo-sub{font-size:var(--font-size-xs);color:var(--color-hint)}.saldo-card .saldo-foot{font-size:var(--font-size-xs);color:var(--color-hint);margin-top:var(--space-3)}.saldo-pill{display:inline-block;font-size:var(--font-size-xs);font-weight:600;padding:6px 12px;border-radius:999px;margin-top:var(--space-3)}.saldo-pill.warning{background:#ff950026;color:var(--color-warning)}.card{background:var(--color-bg);margin:0 var(--space-3) var(--space-3);border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-divider)}.ledger-row{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--color-divider);gap:12px}.ledger-row:last-child{border-bottom:none}.ledger-row .ledger-info{flex:1;min-width:0}.ledger-row .lt-title{font-weight:500;font-size:14px}.ledger-row .lt-sub{font-size:var(--font-size-xs);color:var(--color-hint);margin-top:2px}.ledger-amt{font-weight:600;font-size:14px;flex-shrink:0;white-space:nowrap}.amt-pos{color:var(--color-success)}.amt-neg{color:var(--color-danger)}.block-card{display:flex;align-items:center;gap:var(--space-3);background:var(--color-bg);margin:0 var(--space-3) var(--space-2);padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--color-divider)}.block-card .ic-tag{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.block-card.vacation .ic-tag{background:#2481cc26;color:var(--color-primary)}.block-card.sick .ic-tag{background:#ff3b3026;color:var(--color-danger)}.block-card.personal .ic-tag{background:#ff950026;color:var(--color-warning)}.block-card .block-info{flex:1;min-width:0}.block-card .block-title{font-weight:600;font-size:14px}.block-card .block-dates{font-size:12px;color:var(--color-hint);margin-top:2px}.block-card .block-reason{font-size:12px;color:var(--color-hint);margin-top:2px;font-style:italic}.block-card .block-remove{border:none;background:var(--color-secondary);width:30px;height:30px;border-radius:50%;color:var(--color-hint);font-size:14px;cursor:pointer;flex-shrink:0}.block-card .block-remove:disabled{opacity:.5;cursor:not-allowed}.form-card{background:var(--color-bg);margin:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-divider)}.form-card .lbl-group{font-size:var(--font-size-xs);text-transform:uppercase;color:var(--color-hint);letter-spacing:.3px;margin:14px 0 6px;font-weight:600}.form-card .lbl-group:first-child{margin-top:0}.form-card .chips{display:flex;flex-wrap:wrap;gap:6px}.form-card .chip{background:var(--color-secondary);border:1.5px solid transparent;border-radius:18px;padding:8px 12px;font-size:13px;color:var(--color-text);font-family:inherit;cursor:pointer}.form-card .chip.selected{background:#2481cc1a;border-color:var(--color-primary);color:var(--color-primary)}.form-card .select,.form-card textarea,.form-card input[type=date]{width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--color-divider);background:var(--color-secondary);font-family:inherit;font-size:14px;color:var(--color-text)}.form-card textarea{resize:vertical;min-height:60px}.form-card .select:focus,.form-card textarea:focus,.form-card input[type=date]:focus{outline:none;border-color:var(--color-primary)}.form-card .form-actions{display:grid;grid-template-columns:1fr 2fr;gap:var(--space-2);margin-top:var(--space-4)}.form-card .form-actions .btn{margin-top:0}.tab-bar{position:fixed;bottom:0;left:0;right:0;height:calc(var(--tab-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--color-bg);border-top:1px solid var(--color-divider);display:grid;z-index:100}.tab{border:none;background:transparent;color:var(--color-hint);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;padding:6px 0}.tab .ic{font-size:20px;line-height:1}.tab.active{color:var(--color-primary)}
