@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@300;400;500;600;700&display=swap";:root{--bg:#02071a;--bg2:#060d20;--bg3:#0a1428;--surface:#0d1829;--surface-2:#111f34;--surface-3:#162440;--border:#1a2840;--border-2:#203050;--border-accent:#5b9eff40;--text:#e8f0ff;--text-2:#8aa8cc;--text-3:#4a6280;--text-muted:#2d4060;--accent:#5b9eff;--accent-dim:#5b9eff1f;--accent-glow:#5b9eff0f;--green:#22c55e;--green-dim:#22c55e1f;--amber:#f59e0b;--amber-dim:#f59e0b1f;--red:#ef4444;--red-dim:#ef44441f;--purple:#8b5cf6;--purple-dim:#8b5cf61f;--color-programador:#22c55e;--color-analista:#5b9eff;--color-ads:#f59e0b;--font-body:"Inter", sans-serif;--font-mono:"IBM Plex Mono", monospace;--sidebar-w:228px;--topbar-h:56px;--radius:10px;--radius-sm:6px;--radius-xs:4px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:14px}body{font-family:var(--font-body);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:var(--font-body)}input,textarea,select{font-family:var(--font-body);font-size:.875rem}::selection{background:var(--accent-dim);color:var(--accent)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-3)}.app-layout{height:100vh;display:flex;overflow:hidden}.main-area{margin-left:var(--sidebar-w);flex-direction:column;flex:1;display:flex;overflow:hidden}.page-content{flex:1;padding:28px 32px;overflow-y:auto}.sidebar{width:var(--sidebar-w);background:var(--bg2);border-right:1px solid var(--border);z-index:100;flex-direction:column;height:100vh;display:flex;position:fixed;top:0;left:0}.sidebar-logo{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;padding:22px 20px 18px;display:flex}.sidebar-logo h1{font-family:var(--font-mono);color:var(--text);letter-spacing:.16em;text-transform:uppercase;font-size:.9rem;font-weight:600}.sidebar-logo span{color:var(--text-3);font-size:.65rem;font-family:var(--font-mono);letter-spacing:.08em}.sidebar-nav{flex-direction:column;flex:1;gap:1px;padding:14px 10px;display:flex;overflow-y:auto}.nav-section-label{font-size:.6rem;font-family:var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.14em;padding:10px 10px 5px}.nav-item{border-radius:var(--radius-sm);color:var(--text-3);border:1px solid #0000;align-items:center;gap:10px;padding:9px 12px;font-size:.8rem;font-weight:500;transition:all .15s;display:flex;position:relative}.nav-item:hover{background:var(--surface);color:var(--text-2)}.nav-item.active{background:var(--accent-dim);color:var(--accent);border-color:var(--border-accent)}.nav-item.active:before{content:"";background:var(--accent);width:3px;height:16px;box-shadow:0 0 8px var(--accent);border-radius:0 3px 3px 0;position:absolute;top:50%;left:-1px;transform:translateY(-50%)}.nav-item svg{opacity:.6;flex-shrink:0;width:15px;height:15px}.nav-item:hover svg{opacity:.9}.nav-item.active svg{opacity:1}.sidebar-footer{border-top:1px solid var(--border);padding:16px}.topbar{height:var(--topbar-h);background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 28px;display:flex}.topbar-title{color:var(--text);letter-spacing:.01em;font-size:.85rem;font-weight:600}.topbar-right{align-items:center;gap:16px;display:flex}.topbar-date{display:block}.avatar{width:30px;height:30px;font-family:var(--font-mono);color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.65rem;font-weight:600;display:flex}.avatar-sm{width:22px;height:22px;font-size:.58rem}.avatar-lg{width:38px;height:38px;font-size:.78rem}.badge{font-size:.65rem;font-family:var(--font-mono);letter-spacing:.04em;border:1px solid #0000;border-radius:100px;align-items:center;gap:5px;padding:3px 9px;font-weight:500;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:5px;height:5px}.badge-presupuestado{background:var(--purple-dim);color:var(--purple);border-color:#8b5cf633}.badge-en_curso{background:var(--accent-dim);color:var(--accent);border-color:var(--border-accent)}.badge-entregado{background:var(--green-dim);color:var(--green);border-color:#22c55e33}.badge-pausado{background:var(--amber-dim);color:var(--amber);border-color:#f59e0b33}.badge-pendiente{color:var(--text-3);border-color:var(--border);background:#4a62801a}.badge-en_progreso{background:var(--amber-dim);color:var(--amber);border-color:#f59e0b33}.badge-hecha{background:var(--green-dim);color:var(--green);border-color:#22c55e33}.badge-baja{color:var(--text-3);border-color:var(--border);background:#4a62801a}.badge-media{background:var(--amber-dim);color:var(--amber);border-color:#f59e0b33}.badge-alta{background:var(--red-dim);color:var(--red);border-color:#ef444433}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-sm{padding:14px 16px}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:18px 20px;transition:border-color .2s,background .2s;display:block}.project-card:hover{border-color:var(--border-accent);background:var(--surface-2)}.project-card-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.project-card-name{color:var(--text);font-size:.875rem;font-weight:600}.project-card-client{color:var(--text-3);font-size:.72rem;font-family:var(--font-mono);margin-top:2px}.progress-bar{background:var(--border-2);border-radius:100px;height:3px;margin:10px 0 8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), #80b8ff);border-radius:100px;height:100%;transition:width .4s;box-shadow:0 0 8px #5b9eff59}.project-card-meta{color:var(--text-3);font-size:.68rem;font-family:var(--font-mono);justify-content:space-between;align-items:center;display:flex}.task-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:11px 0;display:flex}.task-row:last-child{border-bottom:none}.task-row-title{color:var(--text);flex:1;font-size:.8rem;font-weight:500}.task-row-project{color:var(--text-3);font-size:.68rem;font-family:var(--font-mono);margin-top:2px}.page-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.page-title{color:var(--text);letter-spacing:-.01em;font-size:1.1rem;font-weight:700}.page-subtitle{color:var(--text-3);font-size:.72rem;font-family:var(--font-mono);margin-top:3px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-3{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;position:relative;overflow:hidden}.stat-card:after{content:"";background:linear-gradient(90deg,#0000,#5b9eff4d,#0000);height:1px;position:absolute;top:0;left:0;right:0}.stat-label{color:var(--text-3);font-size:.62rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px}.stat-value{font-size:1.6rem;font-weight:700;font-family:var(--font-mono);color:var(--text);letter-spacing:-.02em;line-height:1}.stat-sub{color:var(--text-3);font-size:.68rem;font-family:var(--font-mono);margin-top:6px}.btn{border-radius:var(--radius-sm);white-space:nowrap;border:1px solid #0000;align-items:center;gap:6px;padding:8px 14px;font-size:.78rem;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:600}.btn-primary:hover{background:#80b8ff;border-color:#80b8ff}.btn-secondary{background:var(--surface-2);color:var(--text-2);border-color:var(--border-2)}.btn-secondary:hover{background:var(--surface-3);color:var(--text)}.btn-danger{background:var(--red-dim);color:var(--red);border-color:#ef444433}.btn-danger:hover{background:#ef444433}.btn-ghost{color:var(--text-3);border-color:var(--border);background:0 0}.btn-ghost:hover{background:var(--surface-2);color:var(--text-2);border-color:var(--border-2)}.btn-sm{padding:5px 10px;font-size:.72rem}.form-group{margin-bottom:14px}.form-label{color:var(--text-3);font-size:.68rem;font-weight:500;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;display:block}.form-input,.form-select,.form-textarea{background:var(--bg3);border:1px solid var(--border-2);border-radius:var(--radius-sm);width:100%;color:var(--text);outline:none;padding:9px 12px;font-size:.82rem;transition:border-color .15s,box-shadow .15s}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-muted)}.form-select{cursor:pointer}.form-select option{background:var(--bg3);color:var(--text)}.form-textarea{resize:vertical;min-height:80px}.table-wrapper{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}table{border-collapse:collapse;width:100%}thead tr{border-bottom:1px solid var(--border-2)}th{text-align:left;font-size:.62rem;font-family:var(--font-mono);color:var(--text-3);text-transform:uppercase;letter-spacing:.1em;background:var(--bg3);padding:11px 16px;font-weight:500}td{border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text-2);padding:12px 16px;font-size:.8rem}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-2)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#02071ad9;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--radius);width:100%;max-width:500px;max-height:90vh;box-shadow:0 32px 80px #000000b3, 0 0 0 1px var(--border-accent);padding:28px;overflow-y:auto}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:22px;padding-bottom:16px;display:flex}.modal-title{color:var(--text);font-size:.9rem;font-weight:600}.modal-close{color:var(--text-3);border-radius:var(--radius-xs);background:0 0;border:none;padding:4px 8px;font-size:1.2rem;line-height:1;transition:all .15s}.modal-close:hover{background:var(--surface-2);color:var(--text)}.modal-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:22px;padding-top:16px;display:flex}.login-page{background:var(--bg);background-image:radial-gradient(at 20%,#5b9eff0f 0%,#0000 60%),radial-gradient(at 80% 20%,#5b9eff0a 0%,#0000 50%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--radius);width:380px;box-shadow:0 32px 80px #0009, 0 0 0 1px var(--border-accent);padding:40px}.login-logo{text-align:center;margin-bottom:32px}.login-logo h1{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--text);font-size:1rem;font-weight:600}.login-logo p{color:var(--text-3);font-size:.72rem;font-family:var(--font-mono);margin-top:4px}.login-error{background:var(--red-dim);color:var(--red);border-radius:var(--radius-sm);border:1px solid #ef444433;margin-bottom:14px;padding:10px 14px;font-size:.75rem}.section-title{color:var(--text-3);text-transform:uppercase;letter-spacing:.12em;font-size:.62rem;font-weight:600;font-family:var(--font-mono);margin-bottom:12px}.empty-state{text-align:center;color:var(--text-3);font-size:.8rem;font-family:var(--font-mono);padding:48px 24px}.mono{font-family:var(--font-mono)}.text-muted{color:var(--text-3)}.text-secondary{color:var(--text-2)}.flex{display:flex}.flex-center{align-items:center;display:flex}.gap-8{gap:8px}.gap-12{gap:12px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.menu-btn{color:var(--text-2);cursor:pointer;border-radius:var(--radius-xs);background:0 0;border:none;flex-shrink:0;padding:6px;transition:all .15s;display:none}.menu-btn:hover{background:var(--surface-2);color:var(--text)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.5)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-content>*{animation:.2s fadeIn}.filter-strip{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px;margin-bottom:18px;padding-bottom:2px;display:flex;overflow-x:auto}.filter-strip::-webkit-scrollbar{display:none}.filter-strip .btn{flex-shrink:0}.mobile-list{display:none}@media (width<=768px){.main-area{margin-left:0}.sidebar{z-index:300;transition:transform .25s cubic-bezier(.16,1,.3,1);transform:translate(-100%)}.sidebar--open{transform:translate(0)}.sidebar-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:299;background:#02071ab3;display:block;position:fixed;inset:0}.menu-btn{display:flex}.topbar{padding:0 14px}.topbar-date{display:none}.page-content{padding:16px 14px 32px}.grid-3,.grid-4{grid-template-columns:1fr 1fr;gap:10px}.grid-2{grid-template-columns:1fr}.stat-card{padding:14px 16px}.stat-value{font-size:1.3rem}.stat-label{font-size:.6rem}.page-header{flex-wrap:nowrap;align-items:center;margin-bottom:16px}.page-header .btn{flex-shrink:0;padding:8px 12px;font-size:.75rem}.section-title{margin-top:4px}.table-wrapper{display:none}.mobile-list{flex-direction:column;gap:8px;display:flex}.m-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;padding:14px 16px;display:flex}.m-card-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.m-card-title{color:var(--text);font-size:.875rem;font-weight:600}.m-card-sub{color:var(--text-3);font-size:.72rem;font-family:var(--font-mono);margin-top:2px}.m-card-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.m-card-actions{border-top:1px solid var(--border);gap:6px;padding-top:8px;display:flex}.m-card-actions .btn{flex:1;justify-content:center}.task-row{flex-wrap:wrap;gap:8px;padding:12px 0}.task-row-title{min-width:0;font-size:.85rem}.filter-strip{margin-bottom:14px}.btn{min-height:38px}.btn-sm{min-height:32px}.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:16px 16px 0 0;max-width:100%;max-height:92vh;padding:24px 20px 32px}.modal .grid-2,.modal .grid-3{grid-template-columns:1fr}}@media (width<=400px){.grid-3,.grid-4{grid-template-columns:1fr}}
