:root{--page-bg: #0A0B0D;--surface: #131519;--surface2: #1A1D22;--border: #22262C;--text: #F5F6F7;--text-dim: #8A8F98;--text-faint: #4B5058;--accent: #22C55E;--on-accent: #04140b;--brand-blue: #2563FF;--brand-violet: #7C3AED;--brand-cyan: #00ABFF;--success: #22C55E;--warning: #F59E0B;--danger: #EF4444;--r-card: 15px;--r-ctrl: 11px;--r-pill: 999px;--r-navicon: 9px;--bg: var(--page-bg);--panel: var(--surface);--panel2: var(--surface2);--line: var(--border);--tx: var(--text);--tx2: var(--text-dim);--tx3: var(--text-faint);--acc: var(--accent);--acc-dim: color-mix(in srgb, var(--accent) 18%, transparent);--blue: var(--brand-blue);--amber: var(--warning);--red: var(--danger);--violet: var(--brand-violet);--r: var(--r-card);--overlay: rgba(0, 0, 0, .55)}[data-theme=light]{--page-bg: #F7F8FA;--surface: #FFFFFF;--surface2: #F1F3F5;--border: #E4E7EB;--text: #0F172A;--text-dim: #64748B;--text-faint: #94A3B8;--accent: #16A34A;--on-accent: #FFFFFF;--success: #16A34A;--warning: #D97706;--danger: #DC2626;--brand-blue: #2563FF;--brand-violet: #7C3AED;--brand-cyan: #00ABFF}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;font-weight:500;background:var(--page-bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh}h1,h2,h3,.brand b,.hero-day,.kpi .val,.saldo-big{font-family:Manrope,Inter,system-ui,sans-serif}#app{display:flex;min-height:100vh;position:relative}.side{width:230px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:18px 12px;height:100vh;position:sticky;top:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;z-index:40;transition:width .18s ease}.side.collapsed{width:72px;padding:18px 8px}.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 20px;flex-shrink:0}.side.collapsed .brand{justify-content:center;padding:6px 0 20px}.side.collapsed .brand-text{display:none}.logo{width:34px;height:34px;border-radius:12px;background:var(--accent);display:flex;align-items:center;justify-content:center;font-family:Manrope,sans-serif;font-weight:800;color:var(--on-accent);font-size:18px;flex-shrink:0}.brand b{font-size:16px;font-weight:800;letter-spacing:.3px}.brand span{font-size:11px;color:var(--text-faint);display:block;margin-top:1px;font-weight:400}.navsec{font-family:Inter,sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-faint);padding:14px 12px 6px}.side.collapsed .navsec{font-size:0;padding:10px 0 4px;text-align:center}.side.collapsed .navsec:after{content:"·";font-size:14px;color:var(--text-faint)}.nav{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--r-ctrl);color:var(--text-dim);cursor:pointer;font-size:14px;font-weight:500;transition:.12s;border:none;background:none;width:100%;text-align:left;font-family:inherit}.side.collapsed .nav{justify-content:center;padding:10px 0;gap:0}.side.collapsed .nav-label{display:none}.nav:hover{background:var(--surface2);color:var(--text)}.nav.on{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.nav .ic{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}.nav .ic .ico{display:block}.side-nav{flex:1}.side-foot{margin-top:auto;padding:12px 8px 4px;border-top:1px solid var(--border);font-size:12px;color:var(--text-faint);display:flex;flex-direction:column;gap:8px}.side.collapsed .side-user{display:none}.side-foot-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.side.collapsed .side-foot-row{flex-direction:column}.side-foot .btn{width:100%}.side.collapsed .side-logout{display:none}.side-collapse{width:32px;height:32px;border-radius:var(--r-navicon);border:1px solid var(--border);background:var(--surface2);color:var(--text-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.side-collapse:hover{color:var(--text)}.theme-switch{width:38px;height:22px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface2);position:relative;padding:0;cursor:pointer;flex-shrink:0}.theme-knob{position:absolute;top:1px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--text-dim);transition:left .18s ease}.theme-switch[aria-checked=true] .theme-knob{left:16px;background:var(--accent)}.side-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:35;border:none;padding:0;cursor:pointer}.side-overlay.on{display:block}.mob-top{display:none;position:sticky;top:0;z-index:30;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.mob-top .logo{width:30px;height:30px;font-size:15px;border-radius:10px}.mob-top b{font-family:Manrope,sans-serif;font-weight:800;font-size:15px}.main-wrap{flex:1;min-width:0;display:flex;flex-direction:column}.main{flex:1;padding:32px 40px 60px;max-width:1320px;width:100%;margin:0 auto}.btn{background:var(--accent);color:var(--on-accent);border:none;padding:10px 16px;border-radius:var(--r-ctrl);font-weight:700;font-size:13px;cursor:pointer;transition:.12s;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost,.btn-secundario{background:var(--surface);color:var(--text);border:1px solid var(--border);font-weight:600}.btn.sm{padding:6px 12px;font-size:12px}.header-pagina,.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:12px;flex-wrap:wrap}.header-pagina h1,.topbar h1{font-size:22px;font-weight:800}.header-pagina .sub,.topbar .sub{color:var(--text-faint);font-size:13px;margin-top:3px;font-weight:400}.header-pagina-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--r-pill);border:none;background:var(--surface2);color:var(--text-dim);font-size:13px;font-weight:500;cursor:pointer;font-family:inherit}.chip.on{background:var(--accent);color:var(--on-accent);font-weight:700}.pill-nav,.tab{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);padding:4px;border-radius:var(--r-ctrl);margin-bottom:16px;width:fit-content;flex-wrap:wrap}.pill-nav button,.tab button{background:none;border:none;color:var(--text-dim);padding:8px 15px;border-radius:8px;font-size:13px;cursor:pointer;font-weight:500;font-family:inherit}.pill-nav button.on,.tab button.on{background:var(--accent);color:var(--on-accent);font-weight:700}.estado-vacio,.empty{text-align:center;color:var(--text-faint);padding:48px 24px;font-size:14px;line-height:1.5}.estado-vacio-title{font-family:Manrope,sans-serif;font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px}.estado-vacio-hint{font-size:13px;color:var(--text-dim);max-width:320px;margin:0 auto}.tabla-wrap,.card.tabla-wrap{padding:0;overflow:hidden}.tabla,table.tabla,table{width:100%;border-collapse:collapse}.tabla th,table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-faint);padding:10px 12px;border-bottom:1px solid var(--border);font-weight:700}.tabla td,table td{padding:13px 12px;border-bottom:1px solid var(--border);font-size:13px}.tabla tr:last-child td,table tr:last-child td{border-bottom:none}.ico{display:inline-block;vertical-align:middle;flex-shrink:0}.nav .ico{width:18px;height:18px}.side.collapsed .nav .ico{margin:0}.menuBtn{display:none;background:var(--surface2);border:1px solid var(--border);color:var(--text);width:40px;height:40px;border-radius:var(--r-ctrl);font-size:18px;cursor:pointer;flex-shrink:0;align-items:center;justify-content:center;padding:0}.grid{display:grid;gap:20px}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:18px 20px}.kpi .lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-dim);margin-bottom:8px;display:flex;align-items:center;gap:6px}.kpi .val{font-size:30px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.kpi .val.sm{font-size:21px}.kpi .delta{font-size:11px;margin-top:6px;color:var(--text-faint)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.sectionhead{display:flex;align-items:center;justify-content:space-between;margin:26px 0 14px}.sectionhead h2{font-size:16px;font-weight:650;font-family:Manrope,sans-serif}.sectionhead a,.link{font-size:12px;color:var(--accent);cursor:pointer;background:none;border:none;font-family:inherit}.proj{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:18px;cursor:pointer;transition:.14s;text-align:left;width:100%;color:inherit;font-family:inherit}.proj:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--border));transform:translateY(-2px)}.proj .folio{font-size:10px;color:var(--text-faint);letter-spacing:.5px}.proj h3{font-size:15px;margin:5px 0 3px;font-weight:650}.proj .cli{font-size:12px;color:var(--text-dim)}.badge{display:inline-block;padding:3px 9px;border-radius:var(--r-pill);font-size:10px;font-weight:600;margin-top:10px}.badge.act{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.bar{height:6px;background:var(--surface2);border-radius:6px;margin-top:14px;overflow:hidden}.bar i{display:block;height:100%;background:var(--accent)}.projrow{display:flex;justify-content:space-between;font-size:12px;color:var(--text-dim);margin-top:12px}.projrow b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-faint);padding:10px 12px;border-bottom:1px solid var(--border);font-weight:700}td{padding:13px 12px;border-bottom:1px solid var(--border);font-size:13px}tr:last-child td{border-bottom:none}tr.click{cursor:pointer}tr.click:hover td{background:var(--surface2)}.money,.kpi .val,.saldo-big,.projrow b{font-variant-numeric:tabular-nums}.money{font-weight:600}.neg{color:var(--danger)}.pos{color:var(--accent)}.tag{font-size:11px;padding:3px 9px;border-radius:6px;background:var(--surface2);color:var(--text-dim)}.tab{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);padding:4px;border-radius:var(--r-ctrl);margin-bottom:16px;width:fit-content;flex-wrap:wrap}.tab button{background:none;border:none;color:var(--text-dim);padding:8px 15px;border-radius:8px;font-size:13px;cursor:pointer;font-weight:500;font-family:inherit}.tab button.on{background:var(--accent);color:var(--on-accent);font-weight:700}.task{display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid var(--border)}.chk{width:19px;height:19px;border:2px solid var(--text-faint);border-radius:6px;cursor:pointer;flex-shrink:0;transition:.12s;background:transparent}.chk.done{background:var(--accent);border-color:var(--accent)}.task.done .tt{color:var(--text-faint);text-decoration:line-through}.tt{flex:1;font-size:14px}.pri{font-size:10px;padding:2px 8px;border-radius:5px;font-weight:600}.pri.alta{background:color-mix(in srgb,var(--danger) 22%,transparent);color:var(--danger)}.pri.media{background:color-mix(in srgb,var(--warning) 22%,transparent);color:var(--warning)}.pri.baja{background:color-mix(in srgb,var(--brand-blue) 22%,transparent);color:var(--brand-blue)}.quick{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}.quick input,.quick select{flex:1;min-width:160px;background:var(--surface);border:1px solid var(--border);color:var(--text);padding:12px 14px;border-radius:var(--r-ctrl);font-size:14px;font-family:inherit}.quick input:focus,.quick select:focus{outline:none;border-color:var(--accent)}.filepick{flex:1;padding:10px;background:var(--surface);border:1px dashed var(--border);border-radius:var(--r-ctrl);color:var(--text-faint);font-size:13px}.ov{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:none;align-items:center;justify-content:center;z-index:50;padding:20px}.ov.on{display:flex}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;width:100%;max-width:440px;max-height:90vh;overflow-y:auto}.modal h3{font-size:17px;margin-bottom:18px;font-family:Manrope,sans-serif;font-weight:800}.fld{margin-bottom:14px}.fld label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px}.fld input,.fld select,.fld textarea{width:100%;background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:11px 13px;border-radius:9px;font-size:14px;font-family:inherit}.fld textarea{min-height:72px;resize:vertical}.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--accent)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mact{display:flex;gap:10px;margin-top:22px}.mact .btn{flex:1}.empty{text-align:center;color:var(--text-faint);padding:50px 20px;font-size:14px;line-height:1.5}.banner{background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);border-radius:12px;padding:13px 16px;font-size:13px;color:var(--text-dim);margin-bottom:22px;display:flex;gap:10px;align-items:center}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse at 20% 20%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 50%),radial-gradient(ellipse at 80% 80%,color-mix(in srgb,var(--brand-blue) 12%,transparent),transparent 45%),var(--page-bg)}.login-card{width:100%;max-width:380px}.login-card .brand{justify-content:center;margin-bottom:8px}.login-card .logo{width:44px;height:44px;border-radius:12px;font-size:22px}.err{background:color-mix(in srgb,var(--danger) 18%,transparent);border:1px solid var(--danger);color:var(--danger);padding:10px 12px;border-radius:9px;font-size:13px;margin-bottom:14px}.muted{color:var(--text-faint);font-size:12px;text-align:center;margin-top:16px}.priv-dot{position:fixed;top:10px;left:10px;z-index:60;width:10px;height:10px;border-radius:50%;border:none;padding:0;background:var(--border);opacity:.35;cursor:pointer}.priv-dot:hover{opacity:.7}.priv-dot.on{background:var(--brand-violet);opacity:.85}.hab-heat{display:flex;flex-wrap:wrap;gap:3px}.hab-cell{width:12px;height:12px;border-radius:2px;border:none;padding:0;cursor:pointer;background:var(--surface2)}.hab-cell.on{background:var(--accent)}.chat-fab{position:fixed;right:20px;bottom:20px;z-index:200;width:52px;height:52px;border-radius:16px;border:none;background:var(--accent);color:var(--on-accent);font-size:22px;font-weight:700;cursor:pointer}.chat-panel{position:fixed;right:20px;bottom:84px;z-index:200;width:min(380px,calc(100vw - 24px));height:min(520px,70vh);background:var(--surface);border:1px solid var(--border);border-radius:16px;display:none;flex-direction:column;overflow:hidden}.chat-panel.on{display:flex}.chat-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border)}.chat-log{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.chat-bubble{font-size:13px;line-height:1.4;padding:10px 12px;border-radius:12px;background:var(--surface2);max-width:92%;white-space:pre-wrap}.chat-bubble.me{align-self:flex-end;background:color-mix(in srgb,var(--accent) 18%,transparent)}.chat-bubble .who{display:block;font-size:10px;color:var(--text-faint);margin-bottom:4px}.chat-pending{padding:0 12px 8px}.chat-confirm{background:color-mix(in srgb,var(--brand-blue) 12%,var(--surface));border:1px solid var(--brand-blue);border-radius:12px;padding:12px;font-size:13px}.chat-attach-preview{padding:0 10px 8px;border-top:1px solid var(--border)}.chat-attach-card{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:12px}.chat-attach-card img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex-shrink:0}.chat-attach-ico{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;background:var(--surface);border:1px solid var(--border);font-size:11px;font-weight:700;color:var(--text-dim);flex-shrink:0}.chat-attach-meta{flex:1;min-width:0}.chat-attach-name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-attach-size{font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.chat-attach-wrap{position:relative}.chat-attach-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:5;min-width:140px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px color-mix(in srgb,var(--text) 12%,transparent);padding:4px;display:flex;flex-direction:column}.chat-attach-menu[hidden]{display:none}.chat-attach-menu button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--text);font:inherit;font-size:13px;text-align:left;padding:10px 12px;border-radius:8px;cursor:pointer}.chat-attach-menu button:hover{background:var(--surface2)}.chat-drop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 18%,var(--surface));border:2px dashed var(--accent);border-radius:16px;font-size:15px;font-weight:650;color:var(--accent);pointer-events:none}.chat-drop[hidden]{display:none}.chat-in{display:flex;gap:6px;align-items:center;padding:10px;border-top:1px solid var(--border)}.chat-in input{flex:1;background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:var(--r-ctrl);padding:8px 10px;font-size:13px;font-family:inherit}.dash-hero{display:flex;flex-direction:column;gap:4px;margin-bottom:16px;background:linear-gradient(135deg,var(--surface2),var(--surface))}.hero-date{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.hero-day{font-size:38px;font-weight:800;letter-spacing:-1px;line-height:1}.hero-line{font-size:13px;color:var(--text-dim)}.hero-hi{font-size:20px;font-weight:700;margin-top:8px;font-family:Manrope,sans-serif}.hero-sub{font-size:13px;color:var(--text-faint)}.grid.dash{align-items:stretch}.dash-card{display:flex;flex-direction:column;gap:12px;align-items:flex-start;text-align:left;cursor:pointer;color:inherit;font:inherit;position:relative;transition:.14s;min-height:150px}.dash-card:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--border));transform:translateY(-2px)}.dash-head{width:100%;padding-right:54px}.dash-title{font-size:14px;font-weight:650;color:var(--text)}.dash-sub{font-size:11px;color:var(--text-faint);margin-top:2px}.ring{position:absolute;top:16px;right:16px;width:46px;height:46px;border-radius:50%;flex-shrink:0;background:conic-gradient(var(--accent) calc(var(--pct, 0) * 1%),var(--border) 0)}.ring:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border-radius:50%;background:var(--surface)}.ring span{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:10px;font-weight:700;z-index:1;color:var(--text)}.dl{width:100%;display:flex;flex-direction:column;gap:9px}.dl-row{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:13px}.dl-row .dl-t{flex:1;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-dot{width:7px;height:7px;border-radius:50%;background:var(--text-faint);flex-shrink:0}.dl-dot.on{background:var(--accent)}.dl-meta{font-size:11px;color:var(--text-faint);white-space:nowrap}.dl-empty{font-size:13px;color:var(--text-faint);padding:6px 0}.saldo-big{font-size:30px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.saldo-big.neg{color:var(--danger)}.saldo-week{font-size:12px;font-weight:600;margin-top:-4px}.spark{width:100%;height:52px;display:block}.spark-x{display:flex;justify-content:space-between;width:100%;font-size:9px;color:var(--text-faint);text-transform:capitalize}.nota-t{font-size:14px;font-weight:600;color:var(--text)}.nota-s{font-size:12px;color:var(--text-dim);margin-top:4px;line-height:1.4}.cal-wrap{display:grid;grid-template-columns:250px 1fr;gap:16px;align-items:start}.cal-side{display:flex;flex-direction:column;gap:14px}.cal-main{min-width:0;overflow:hidden}.mini-cal .mini-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.mini-cal .mini-title{font-size:13px;font-weight:650}.mini-nav{display:flex;gap:4px}.mini-nav button,.cal-nav button{background:var(--surface2);border:1px solid var(--border);color:var(--text);width:26px;height:26px;border-radius:7px;cursor:pointer;font-size:13px;font-family:inherit}.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.mini-grid .mc-dow{font-size:9px;color:var(--text-faint);text-align:center;padding:2px 0}.mini-grid .mc-day{font-size:11px;text-align:center;padding:5px 0;border-radius:6px;cursor:pointer;border:none;background:none;color:var(--text-dim);font-family:inherit}.mini-grid .mc-day:hover{background:var(--surface2)}.mini-grid .mc-day.other{color:var(--text-faint);opacity:.45}.mini-grid .mc-day.today{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);font-weight:700}.mini-grid .mc-day.sel{outline:1px solid var(--accent)}.mini-grid .mc-day.has:after{content:"";display:block;width:4px;height:4px;border-radius:50%;background:var(--brand-blue);margin:1px auto 0}.side-tasks .st-head{font-size:12px;font-weight:650;color:var(--text-dim);margin:4px 0 8px;display:flex;justify-content:space-between}.side-tasks .st-row{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid var(--border);font-size:13px}.side-tasks .st-row:last-child{border-bottom:none}.side-tasks .st-atr{color:var(--warning)}.cal-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.cal-nav{display:flex;align-items:center;gap:6px}.cal-nav .cal-label{font-size:14px;font-weight:650;min-width:150px}.cal-grid{border:1px solid var(--border);border-radius:var(--r-card);overflow:auto;background:var(--surface)}.cal-cols{display:grid}.cal-colhead{font-size:11px;color:var(--text-dim);text-align:center;padding:8px 4px;border-bottom:1px solid var(--border);border-left:1px solid var(--border)}.cal-colhead:first-child{border-left:none}.cal-colhead .cd-num{font-size:16px;font-weight:700;color:var(--text);display:block}.cal-colhead.today .cd-num{color:var(--accent)}.cal-row{display:grid;border-bottom:1px solid var(--border)}.cal-row:last-child{border-bottom:none}.cal-hour{font-size:10px;color:var(--text-faint);padding:4px 6px;text-align:right;border-right:1px solid var(--border)}.cal-cell{border-left:1px solid var(--border);min-height:34px;padding:2px;cursor:pointer;position:relative}.cal-cell:hover{background:var(--surface2)}.cal-cell.today{background:color-mix(in srgb,var(--accent) 4%,transparent)}.cal-ev{font-size:11px;padding:2px 6px;border-radius:6px;margin-bottom:2px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-ev.task{background:color-mix(in srgb,var(--brand-blue) 18%,transparent);color:var(--brand-blue)}.cal-allday{border-bottom:1px solid var(--border)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.month-dow{font-size:10px;color:var(--text-faint);text-align:center;padding:6px 0;border-bottom:1px solid var(--border)}.month-cell{min-height:92px;border-left:1px solid var(--border);border-bottom:1px solid var(--border);padding:4px 5px;cursor:pointer}.month-cell:nth-child(7n+1){border-left:none}.month-cell:hover{background:var(--surface2)}.month-cell.other{opacity:.4}.month-cell .mc-n{font-size:12px;color:var(--text-dim)}.month-cell.today .mc-n{background:var(--accent);color:var(--on-accent);border-radius:50%;width:20px;height:20px;display:inline-grid;place-items:center;font-weight:700}.month-chip{font-size:10px;padding:1px 5px;border-radius:5px;margin-top:2px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-chip.task{background:color-mix(in srgb,var(--brand-blue) 18%,transparent);color:var(--brand-blue)}.chart-area{width:100%;height:220px;display:block}.chart-spark,.spark{width:100%;height:40px;display:block}.chart-label{fill:var(--text-faint);font-size:11px;font-family:Inter,sans-serif}.chart-empty{color:var(--text-faint);font-size:13px;padding:24px;text-align:center}.chart-donut{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.donut-svg-wrap{position:relative;width:160px;height:160px;flex-shrink:0}.donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none}.donut-total{font-family:Manrope,sans-serif;font-weight:800;font-size:18px;font-variant-numeric:tabular-nums;color:var(--text)}.donut-legend{display:flex;flex-direction:column;gap:8px;min-width:140px}.donut-leg{display:flex;align-items:center;gap:8px;font-size:13px}.donut-leg-label{flex:1;color:var(--text-dim)}.donut-leg-pct{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}.chart-barras{display:flex;align-items:flex-end;gap:10px;width:100%}.bar-col{flex:1;min-width:0;text-align:center}.bar-track{display:flex;align-items:flex-end;justify-content:center;background:var(--surface2);border-radius:var(--r-ctrl);overflow:hidden}.bar-fill{width:70%;border-radius:var(--r-ctrl) var(--r-ctrl) 0 0;min-height:2px}.bar-fill.pos{background:var(--accent)}.bar-fill.neg{background:var(--danger)}.bar-label{font-size:11px;color:var(--text-faint);margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-row{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.chip-vence{font-size:10px;font-weight:700;padding:2px 8px;border-radius:var(--r-pill);background:var(--surface2);color:var(--text-dim);white-space:nowrap}.chip-vence.today{background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent)}.chip-vence.soon{background:color-mix(in srgb,var(--warning) 22%,transparent);color:var(--warning)}.chip-vence.overdue{background:color-mix(in srgb,var(--danger) 22%,transparent);color:var(--danger)}.hab-card-top{margin-bottom:14px}.hab-nombre{font-family:Manrope,sans-serif;font-weight:700;font-size:15px}.hab-racha{font-size:12px;color:var(--text-dim);margin-top:4px}.hab-week{display:flex;gap:8px;justify-content:space-between}.hab-dot{width:28px;height:28px;border-radius:50%;border:none;padding:0;cursor:pointer;background:var(--surface2)}.hab-dot.on{background:var(--accent)}.perfil-card{display:flex;align-items:center;gap:16px}.perfil-avatar{width:56px;height:56px;border-radius:14px;background:var(--accent);color:var(--on-accent);font-family:Manrope,sans-serif;font-weight:800;font-size:22px;display:grid;place-items:center;flex-shrink:0}.perfil-nombre{font-family:Manrope,sans-serif;font-weight:800;font-size:18px}.perfil-email{font-size:13px;color:var(--text-dim);margin-top:2px}.perfil-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.perfil-row-title{font-weight:600;font-size:14px}.perfil-row-sub{font-size:12px;color:var(--text-faint);margin-top:2px}.perfil-menu-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 18px;background:none;border:none;border-bottom:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;text-align:left}.perfil-menu-item:last-child{border-bottom:none}.perfil-chevron{color:var(--text-faint);font-size:18px}@media(max-width:860px){.grid{gap:14px}.cal-wrap{grid-template-columns:1fr}.side{position:fixed;left:0;top:0;width:260px;padding:18px 12px;transform:translate(-100%);transition:transform .2s ease;z-index:50}.side.open{transform:translate(0)}.side.collapsed{width:260px;padding:18px 12px}.side.collapsed .brand{justify-content:flex-start;padding:6px 10px 20px}.side.collapsed .brand-text,.side.collapsed .nav-label,.side.collapsed .side-user,.side.collapsed .side-logout{display:block}.side.collapsed .nav{justify-content:flex-start;padding:10px 12px;gap:11px}.side.collapsed .navsec{font-size:11px;padding:14px 12px 6px;text-align:left}.side.collapsed .navsec:after{content:none}.mob-top{display:flex}.menuBtn{display:block}.main{padding:18px 16px 60px;max-width:none}.g4{grid-template-columns:1fr 1fr}.g3,.g2{grid-template-columns:1fr}.topbar h1{font-size:19px}.row2{grid-template-columns:1fr}.side-collapse{display:none}}
