:root{--bg:#080b14;--surface-1:#0f1524;--surface-2:#151c2e;--surface-3:#1b2337;--surface-hover:#202a41;--border:#ffffff14;--border-strong:#ffffff29;--text:#e7ecf7;--text-dim:#9aa6c0;--text-faint:#6a7590;--accent:#7c5cff;--accent-2:#22d3ee;--accent-soft:#7c5cff24;--accent-grad:linear-gradient(135deg, #7c5cff 0%, #22d3ee 100%);--success:#34d399;--warning:#fbbf24;--danger:#fb7185;--info:#60a5fa;--success-soft:#34d39924;--warning-soft:#fbbf2424;--danger-soft:#fb718524;--info-soft:#60a5fa24;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:22px;--r-full:999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 24px #00000059;--shadow-lg:0 24px 60px #00000080;--ring:0 0 0 3px #7c5cff59;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:"SF Mono", "Cascadia Code", "Fira Code", Consolas, monospace;--sidebar-w:256px;--topbar-h:68px}:root[data-theme=light]{--bg:#eef1f7;--surface-1:#fff;--surface-2:#f6f8fc;--surface-3:#eef2f9;--surface-hover:#e9eef7;--border:#0f172a17;--border-strong:#0f172a29;--text:#131a2b;--text-dim:#5a6480;--text-faint:#8a94ad;--accent-soft:#7c5cff1f;--success-soft:#10a06e24;--warning-soft:#ca8a0429;--danger-soft:#e13c5a24;--info-soft:#256edc24;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 10px 30px #0f172a1a;--shadow-lg:0 24px 60px #0f172a29}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.5;overflow:hidden}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}::selection{background:var(--accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--surface-3) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:var(--r-full);background-clip:content-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--surface-hover);background-clip:content-box}.app{grid-template-columns:var(--sidebar-w) 1fr;height:100vh;display:grid;overflow:hidden}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.content{flex:1;padding:28px 32px 64px;overflow-y:auto}.content-narrow{max-width:1240px;margin:0 auto}.sidebar{background:var(--surface-1);border-right:1px solid var(--border);flex-direction:column;gap:6px;padding:18px 14px;display:flex;overflow-y:auto}.brand{align-items:center;gap:11px;padding:6px 8px 18px;display:flex}.brand-logo{background:var(--accent-grad);color:#08101f;border-radius:11px;flex-shrink:0;place-items:center;width:38px;height:38px;font-weight:800;display:grid;box-shadow:0 6px 18px #7c5cff66}.brand-name{letter-spacing:-.01em;font-size:15px;font-weight:700}.brand-sub{color:var(--text-faint);font-size:11px}.nav-group-label{text-transform:uppercase;letter-spacing:.09em;color:var(--text-faint);padding:14px 10px 6px;font-size:10.5px;font-weight:600}.nav-item{border-radius:var(--r-md);color:var(--text-dim);text-align:left;align-items:center;gap:12px;width:100%;padding:9px 11px;font-size:13.5px;font-weight:500;transition:background .14s,color .14s;display:flex;position:relative}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--text)}.nav-item.active:before{content:"";background:var(--accent-grad);border-radius:0 3px 3px 0;width:3px;height:20px;position:absolute;top:50%;left:-14px;transform:translateY(-50%)}.nav-item .nav-icon{flex-shrink:0;place-items:center;width:20px;display:grid}.nav-item .nav-count{color:var(--text-faint);background:var(--surface-2);border-radius:var(--r-full);font-variant-numeric:tabular-nums;margin-left:auto;padding:1px 8px;font-size:11px}.nav-item.active .nav-count{background:var(--surface-3);color:var(--text-dim)}.sidebar-footer{margin-top:auto;padding-top:12px}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-shrink:0;align-items:center;gap:16px;padding:0 32px;display:flex}.topbar-title h1{letter-spacing:-.02em;font-size:19px;font-weight:700}.topbar-title p{color:var(--text-faint);font-size:12.5px}.topbar-spacer{flex:1}.search{width:300px;max-width:34vw;position:relative}.search input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);width:100%;height:40px;color:var(--text);outline:none;padding:0 14px 0 38px;transition:border .14s,box-shadow .14s}.search input:focus{border-color:var(--accent);box-shadow:var(--ring)}.search input::placeholder{color:var(--text-faint)}.search .search-icon{color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.btn{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);height:40px;color:var(--text);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:13.5px;font-weight:600;transition:background .14s,border .14s,transform 60ms,box-shadow .14s;display:inline-flex}.btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn:active{transform:translateY(1px)}.btn:focus-visible{box-shadow:var(--ring);outline:none}.btn-primary{background:var(--accent-grad);color:#08101f;border:none;box-shadow:0 6px 18px #7c5cff59}.btn-primary:hover{filter:brightness(1.06);background:var(--accent-grad)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.btn-danger:hover{background:var(--danger);color:#fff}.btn-sm{border-radius:var(--r-sm);height:32px;padding:0 12px;font-size:12.5px}.btn-icon{width:40px;padding:0}.btn-icon.btn-sm{width:32px}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-dim);font-size:12px;font-weight:600}.input,.select,.textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);width:100%;color:var(--text);outline:none;padding:10px 12px;transition:border .14s,box-shadow .14s}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}.textarea{resize:vertical;min-height:74px;line-height:1.55}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-faint) 50%), linear-gradient(135deg, var(--text-faint) 50%, transparent 50%);background-position:calc(100% - 18px) 18px,calc(100% - 13px) 18px;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:34px}.field-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.badge{border-radius:var(--r-full);background:var(--surface-3);height:22px;color:var(--text-dim);white-space:nowrap;align-items:center;gap:6px;padding:0 9px;font-size:11.5px;font-weight:600;display:inline-flex}.badge .dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.chip{border-radius:var(--r-full);background:var(--surface-3);color:var(--text-dim);align-items:center;gap:6px;padding:3px 9px;font-size:11.5px;display:inline-flex}.tag{color:var(--text-dim);background:var(--surface-3);border-radius:var(--r-sm);padding:2px 8px;font-size:11px}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:20px}.card-head{align-items:center;gap:12px;margin-bottom:16px;display:flex}.card-head h3{letter-spacing:-.01em;font-size:14.5px;font-weight:700}.card-head .card-sub{color:var(--text-faint);font-size:12px}.section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin-bottom:14px;font-size:12px;font-weight:700}.stat{padding:18px 20px;position:relative;overflow:hidden}.stat-label{color:var(--text-dim);align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex}.stat-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:8px;font-size:32px;font-weight:800;line-height:1}.stat-foot{color:var(--text-faint);margin-top:8px;font-size:12px}.stat-icon{border-radius:var(--r-md);place-items:center;width:38px;height:38px;display:grid;position:absolute;top:16px;right:16px}.grid{gap:18px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.dash-main{grid-template-columns:1.6fr 1fr;align-items:start;gap:18px;display:grid}@media (width<=1180px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.dash-main{grid-template-columns:1fr}}@media (width<=720px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}.progress{border-radius:var(--r-full);background:var(--surface-3);height:8px;overflow:hidden}.progress>span{border-radius:var(--r-full);background:var(--accent-grad);height:100%;transition:width .4s cubic-bezier(.22,1,.36,1);display:block}.kanban{grid-auto-columns:minmax(280px,1fr);grid-auto-flow:column;align-items:start;gap:16px;padding-bottom:12px;display:grid;overflow-x:auto}.kanban-col{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);flex-direction:column;min-height:120px;transition:border .15s,background .15s;display:flex}.kanban-col.drag-over{border-color:var(--accent);background:var(--accent-soft)}.kanban-col-head{align-items:center;gap:9px;padding:14px 16px 10px;font-size:13px;font-weight:700;display:flex}.kanban-col-head .count{color:var(--text-faint);background:var(--surface-3);border-radius:var(--r-full);margin-left:auto;padding:1px 9px;font-size:12px}.kanban-list{flex-direction:column;gap:10px;min-height:40px;padding:4px 12px 14px;display:flex}.task-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);cursor:grab;border-left:3px solid var(--prio,var(--border-strong));padding:13px 14px;transition:border .14s,transform 60ms,box-shadow .14s,background .14s}.task-card:hover{border-color:var(--border-strong);border-left-color:var(--prio,var(--border-strong));background:var(--surface-3)}.task-card.dragging{opacity:.45}.task-card-title{margin-bottom:9px;font-size:13.5px;font-weight:600;line-height:1.4}.task-card-title.done{color:var(--text-faint);text-decoration:line-through}.task-card-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.task-proj{color:var(--text-dim);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.task-proj .dot{border-radius:50%;width:8px;height:8px}.list{flex-direction:column;display:flex}.row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 4px;transition:background .12s;display:flex}.row:last-child{border-bottom:none}.row.click{cursor:pointer;border-radius:var(--r-md);margin:0 -10px;padding-left:10px;padding-right:10px}.row.click:hover{background:var(--surface-2)}.check{border:2px solid var(--border-strong);color:#0000;border-radius:6px;flex-shrink:0;place-items:center;width:20px;height:20px;transition:background .14s,border .14s;display:grid}.check:hover{border-color:var(--accent)}.check.checked{background:var(--success);border-color:var(--success);color:#06110c}.pill-icon{color:#08101f;border-radius:10px;flex-shrink:0;place-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:grid}.overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#04070e99;place-items:center;padding:24px;animation:.16s fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--r-xl);width:100%;max-width:560px;max-height:88vh;box-shadow:var(--shadow-lg);animation:.18s cubic-bezier(.22,1,.36,1) pop;overflow-y:auto}.modal-lg{max-width:640px}.modal-head{border-bottom:1px solid var(--border);background:var(--surface-1);z-index:1;align-items:center;gap:12px;padding:20px 22px;display:flex;position:sticky;top:0}.modal-head h2{letter-spacing:-.01em;font-size:17px;font-weight:700}.modal-body{flex-direction:column;gap:16px;padding:20px 22px;display:flex}.modal-foot{border-top:1px solid var(--border);background:var(--surface-1);align-items:center;gap:10px;padding:16px 22px;display:flex;position:sticky;bottom:0}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);gap:3px;padding:3px;display:inline-flex}.segmented button{border-radius:var(--r-sm);color:var(--text-dim);padding:6px 13px;font-size:12.5px;font-weight:600;transition:background .14s,color .14s}.segmented button.active{background:var(--surface-hover);color:var(--text);box-shadow:var(--shadow-sm)}.cal-grid{grid-template-columns:repeat(7,1fr);gap:8px;display:grid}.cal-weekday{text-align:center;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding-bottom:4px;font-size:11px;font-weight:700}.cal-cell{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;flex-direction:column;gap:4px;min-height:104px;padding:8px;transition:border .12s,background .12s;display:flex}.cal-cell:hover{border-color:var(--border-strong)}.cal-cell.dim{opacity:.4}.cal-cell.today{border-color:var(--accent)}.cal-daynum{color:var(--text-dim);align-self:flex-start;font-size:12.5px;font-weight:600}.cal-cell.today .cal-daynum{background:var(--accent-grad);color:#08101f;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.cal-event{white-space:nowrap;text-overflow:ellipsis;border-left:3px solid;border-radius:5px;padding:2px 6px;font-size:10.5px;font-weight:600;overflow:hidden}.timeline{flex-direction:column;display:flex}.tl-item{gap:14px;padding-bottom:18px;display:flex;position:relative}.tl-item:not(:last-child):before{content:"";background:var(--border);width:2px;position:absolute;top:26px;bottom:0;left:19px}.tl-dot{z-index:1;border-radius:12px;flex-shrink:0;place-items:center;width:40px;height:40px;font-size:15px;display:grid}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-6{gap:6px}.gap-8{gap:8px}.gap-10{gap:10px}.gap-12{gap:12px}.gap-16{gap:16px}.wrap{flex-wrap:wrap}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.text-dim{color:var(--text-dim)}.text-faint{color:var(--text-faint)}.text-sm{font-size:12.5px}.text-xs{font-size:11.5px}.fw-600{font-weight:600}.fw-700{font-weight:700}.tnum{font-variant-numeric:tabular-nums}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.spacer{flex:1}.divider{background:var(--border);height:1px;margin:4px 0}.hidden{display:none}.empty{text-align:center;color:var(--text-faint);padding:44px 20px}.empty-icon{opacity:.6;margin-bottom:10px;font-size:30px}.empty h4{color:var(--text-dim);margin-bottom:4px;font-size:14px}.page-head{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:22px;display:flex}.page-head .spacer{flex:1}.toast-wrap{z-index:200;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{background:var(--surface-3);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--shadow-lg);align-items:center;gap:10px;padding:11px 18px;font-size:13px;font-weight:600;animation:.2s pop;display:flex}.task-card.timed{box-shadow:0 0 0 1px var(--accent), 0 6px 18px #7c5cff29}.task-card.timer-urgent{box-shadow:0 0 0 1px var(--danger);animation:1.7s ease-in-out infinite pulseTimer}@keyframes pulseTimer{0%,to{box-shadow:0 0 0 1px var(--danger)}50%{box-shadow:0 0 0 4px #fb71853d}}.badge.countdown{letter-spacing:.02em}.badge.countdown.pulse{animation:1.3s ease-in-out infinite badgePulse}@keyframes badgePulse{0%,to{opacity:1}50%{opacity:.5}}:focus-visible{outline:none}.login-fondo{background:var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.login-caja{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-xl);width:100%;max-width:380px;box-shadow:var(--shadow-lg);text-align:center;padding:32px 28px}.login-titulo{color:var(--text);margin:0 0 4px;font-size:22px;font-weight:650}.login-sub{color:var(--text-dim);margin:0 0 24px;font-size:14px}.login-label{color:var(--text-dim);text-align:left;margin-bottom:6px;font-size:13px;font-weight:550;display:block}.login-error{color:var(--danger);text-align:left;margin:10px 0 0;font-size:13px}.login-btn{justify-content:center;width:100%;margin-top:18px}
