:root{--bg: #0f1419;--panel: #1a2332;--panel-2: #243044;--border: #2f3f56;--text: #e8eef7;--muted: #9aadc4;--accent: #0d9488;--accent-2: #14b8a6;--ok: #2a9d8f;--warn: #e9c46a;--danger: #e76f51;--sidebar: 240px;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}.app{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100%}.sidebar{background:var(--panel);border-right:1px solid var(--border);padding:1rem .75rem;display:flex;flex-direction:column;gap:.5rem}.brand{padding:.5rem .75rem 1rem;border-bottom:1px solid var(--border);margin-bottom:.5rem}.brand h1{margin:0;font-size:1.1rem;letter-spacing:.02em}.brand p{margin:.25rem 0 0;color:var(--muted);font-size:.8rem}.nav a{display:block;padding:.55rem .75rem;color:var(--muted);text-decoration:none;border-radius:8px;font-size:.92rem}.nav a:hover{background:var(--panel-2);color:var(--text)}.nav a.active{background:linear-gradient(90deg,rgba(232,93,4,.25),transparent);color:var(--text);border-left:3px solid var(--accent)}.main{padding:1.25rem 1.5rem 2rem;overflow:auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.topbar h2{margin:0;font-size:1.35rem}.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}button,.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.45rem .8rem;cursor:pointer;font-size:.88rem}button.primary{background:var(--accent);border-color:var(--accent-2);color:#fff;font-weight:600}button.danger{border-color:var(--danger);color:#ffd7cc}button:hover{filter:brightness(1.08)}button:disabled{opacity:.5;cursor:not-allowed}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:1.25rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:.9rem 1rem}.card .label{color:var(--muted);font-size:.8rem}.card .value{font-size:1.2rem;font-weight:700;margin-top:.35rem}.card.ok .value{color:var(--ok)}.card.warn .value{color:var(--warn)}.card.danger .value{color:var(--danger)}.table-wrap{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:.86rem}th,td{padding:.55rem .65rem;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}th{position:sticky;top:0;background:var(--panel-2);color:var(--muted);font-weight:600}tr:hover td{background:#ffffff05}.muted{color:var(--muted)}.badge{display:inline-block;padding:.1rem .45rem;border-radius:999px;background:var(--panel-2);font-size:.75rem}.mode-pill{font-size:.75rem;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:.2rem .55rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;width:min(640px,100%);max-height:90vh;overflow:auto;padding:1rem 1.1rem 1.1rem}.modal h3{margin:0 0 .75rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.form-grid label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--muted)}.form-grid input,.form-grid select,.form-grid textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.45rem .55rem;font:inherit}.form-grid .full{grid-column:1 / -1}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.hint{color:var(--muted);font-size:.85rem;margin:.25rem 0 1rem}.toast{position:fixed;bottom:1rem;right:1rem;background:var(--panel-2);border:1px solid var(--border);padding:.7rem 1rem;border-radius:10px;z-index:60;max-width:420px}.login-page{min-height:100%;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(ellipse at top left,rgba(232,93,4,.15),transparent 50%),var(--bg)}.login-card{width:min(400px,100%);background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:1.75rem 1.5rem}.login-card h1{margin:0 0 .25rem;font-size:1.35rem}.login-card .sub{color:var(--muted);font-size:.88rem;margin:0 0 1.25rem}.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem;color:var(--muted);margin-bottom:.85rem}.login-card input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.55rem .7rem;font:inherit}.login-card button.primary{width:100%;padding:.65rem;margin-top:.35rem}.login-error{background:#e76f5126;border:1px solid var(--danger);color:#ffd7cc;border-radius:8px;padding:.55rem .7rem;font-size:.85rem;margin-bottom:.85rem}.sidebar-footer{margin-top:auto;padding:.75rem;border-top:1px solid var(--border);font-size:.78rem;color:var(--muted)}.sidebar-footer button{width:100%;margin-top:.5rem}.mobile-bar,.drawer-backdrop{display:none}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}@media (max-width: 767px){.app{grid-template-columns:1fr}.mobile-bar{display:flex;align-items:center;gap:.75rem;position:sticky;top:0;z-index:40;background:var(--panel);border-bottom:1px solid var(--border);padding:.6rem .9rem}.hamburger{font-size:1.4rem;line-height:1;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.3rem .6rem;cursor:pointer}.mobile-title{font-weight:700}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(280px,82vw);z-index:50;overflow-y:auto;transform:translate(-100%);transition:transform .2s ease;box-shadow:0 0 24px #00000080}.sidebar.open{transform:translate(0)}.drawer-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:45}.main{padding:1rem .85rem 2rem;min-width:0;overflow:visible}.topbar{flex-wrap:wrap;gap:.5rem}.cards{grid-template-columns:1fr!important}.form-grid{grid-template-columns:1fr}.modal{width:100%;max-height:95vh}.card,form,.login-card{width:100%;max-width:100%}input,select,textarea{max-width:100%}}a.card{text-decoration:none;color:inherit}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1rem;margin-top:16px;min-width:0}.panel h3{margin:0 0 .6rem;font-size:1rem}.chart-box{width:100%;height:300px}.chart-box.small{height:220px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-2>.panel{margin-top:16px}.small-link{font-size:.8rem;font-weight:400;margin-left:8px;color:var(--accent-2)}.month-input{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.4rem .6rem;color-scheme:dark}.alert-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.alert{display:flex;gap:10px;align-items:baseline;padding:.5rem .6rem;border-radius:8px;background:var(--panel-2);border-left:4px solid var(--muted);flex-wrap:wrap}.alert.vencido{border-left-color:var(--danger)}.alert.urgente{border-left-color:var(--warn)}.alert.proximo{border-left-color:var(--ok)}.alert-days{font-weight:700;min-width:86px;font-size:.85rem}.alert.vencido .alert-days{color:var(--danger)}.alert-body{flex:1;min-width:160px;font-size:.9rem}.alert-amt{font-weight:600}.att-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px}.att-list li{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.linklike{background:none;border:none;color:var(--accent-2);padding:0;text-align:left;cursor:pointer}.row-actions{display:inline-flex;gap:4px;white-space:nowrap}td.neg{color:var(--danger)}td.pos{color:var(--ok)}.error{color:var(--danger)}.modal select{width:100%;background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.45rem}@media (max-width: 768px){.grid-2{grid-template-columns:1fr}.chart-box{height:240px}.topbar .actions{flex-wrap:wrap}}@media (max-width: 768px){.cards{grid-template-columns:1fr 1fr}.card .value{font-size:1rem}}.topbar .actions{flex-wrap:wrap}} @media (max-width: 768px){.cards{grid-template-columns:1fr 1fr}.card .value{font-size:1rem}}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.holding-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;margin-top:12px}.holding-card.off{opacity:.6}.holding-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.holding-head h3{margin:0}table.kv td:first-child{color:var(--muted)}table.kv td:last-child{text-align:right}.modal.wide{width:min(920px,100%)}.search{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.45rem .7rem;min-width:220px;margin-bottom:8px}.items{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.item-row{display:grid;grid-template-columns:1fr 70px 130px 110px 36px;gap:6px;align-items:center}.item-row input{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.4rem;min-width:0}.item-row .sub{text-align:right;font-variant-numeric:tabular-nums}.totals{display:flex;gap:18px;justify-content:flex-end;flex-wrap:wrap;margin:8px 0}label.check{display:flex;gap:8px;align-items:center;margin:4px 0}.checklist{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;margin:8px 0}.pill{padding:2px 8px;border-radius:999px;font-size:.8rem;background:var(--panel-2)}.pill.est-aceptada,.pill.est-convertida{color:var(--ok)}.pill.est-rechazada{color:var(--danger)}.bitacora{list-style:none;padding:0;margin:8px 0;max-height:40vh;overflow:auto}.bitacora li{border-left:3px solid var(--border);padding:4px 8px;margin-bottom:6px}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.day{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:6px;min-height:120px;display:flex;flex-direction:column;gap:4px}.day.today{border-color:var(--accent, #4f8cff)}.day-head{font-weight:700;font-size:.85rem}.shift{display:flex;flex-direction:column;text-align:left;font-size:.8rem;padding:4px 6px;border-radius:6px;background:var(--panel-2)}.shift.t-noche{border-left:3px solid #8a6bff}.shift.t-día{border-left:3px solid #f5b400}.shift.t-24h{border-left:3px solid #e5484d}.add-shift{opacity:.6}.floating-del{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:60}@media (max-width: 768px){.week{grid-template-columns:1fr}.day{min-height:auto}.item-row{grid-template-columns:1fr 60px 100px 32px}.item-row .sub{display:none}.checklist,.holding-grid{grid-template-columns:1fr}}
