:root{--navy: #0a3d6e;--navy-d: #072a4d;--navy-tint: #eaf0f7;--red: #ff0000;--red-d: #950000;--black: #0e0e0e;--white: #ffffff;--n-700: #434343;--n-400: #6c6b70;--n-200: #cdcdcd;--n-100: #ebebeb;--n-050: #f0f0f0;--error: #fb505b;--error-tint: #fde8ea;--success: #5dd694;--success-d: #1f9d63;--success-tint:#e4f7ed;--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 3px rgba(14, 14, 14, .06), 0 1px 2px rgba(14, 14, 14, .04);--shadow-lg: 0 12px 32px rgba(7, 42, 77, .14);--ring: 0 0 0 3px rgba(10, 61, 110, .15)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--n-050);color:var(--n-700);font-size:16px;line-height:1.125;-webkit-font-smoothing:antialiased}h1,h2,h3{color:var(--black);margin:0;font-weight:600}h1{font-size:1.875rem;line-height:2.125rem;font-weight:700}h2{font-size:1.5rem;line-height:1.75rem}h3{font-size:1.25rem;line-height:1.5rem}.caption{font-size:.8125rem;line-height:.875rem;color:var(--n-400)}.muted{color:var(--n-400)}a{color:var(--navy);text-decoration:none}a:hover{text-decoration:underline}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:var(--n-100);padding:1px 5px;border-radius:4px}.app-shell{min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;background:var(--white);border-top:4px solid var(--black);border-bottom:1px solid var(--n-100);padding:0 28px;height:64px;position:sticky;top:0;z-index:20}.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.125rem;color:var(--navy)}.logo-mark{width:30px;height:30px;border-radius:8px;background:var(--navy);color:#fff;display:grid;place-items:center}.logo-mark:after{content:"";width:12px;height:4px;background:var(--red);border-radius:2px}.logo-img{height:26px;width:auto;flex:none;object-fit:contain;display:block}.logo .sub{color:var(--n-400);font-weight:500;font-size:.95rem;padding-left:10px;border-left:1px solid var(--n-200)}.topnav{display:flex;align-items:center;gap:22px}.topnav .nav-link{color:var(--n-400);font-weight:600;font-size:.95rem;padding:4px 2px;border-bottom:2px solid transparent;text-decoration:none}.topnav .nav-link:hover{color:var(--navy);text-decoration:none}.topnav .nav-link.active{color:var(--navy);border-bottom-color:var(--red)}.role-chip{display:inline-flex;align-items:center;gap:6px;background:var(--navy-tint);color:var(--navy);font-size:.78rem;font-weight:600;padding:5px 12px;border-radius:999px}.role-chip .who{color:var(--n-400);font-weight:500}.container{max-width:1120px;margin:32px auto;padding:0 28px}.card{background:var(--white);border:1px solid var(--n-100);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:16px}.form-page{max-width:780px;margin:8px auto 40px}.form-page .sub{color:var(--n-400);font-size:.95rem;margin:4px 0 22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 20px}.form-grid .field{margin-bottom:18px}.form-grid .span-2{grid-column:1 / -1}@media (max-width: 620px){.form-grid{grid-template-columns:1fr}}label{display:block;font-weight:500;font-size:.875rem;color:var(--n-700);margin-bottom:6px}.field{margin-bottom:16px}small.muted{display:block;margin-top:6px;font-size:.8125rem}input,select{width:100%;height:42px;font:inherit;font-size:.95rem;padding:0 12px;border:1px solid var(--n-200);border-radius:var(--radius-sm);background:var(--white);color:var(--n-700);transition:border-color .15s,box-shadow .15s}input::placeholder{color:var(--n-200)}input:focus,select:focus{outline:none;border-color:var(--navy);box-shadow:var(--ring)}input:disabled,select:disabled{background:var(--n-050);color:var(--n-400);cursor:not-allowed}.combobox,.combobox-control{position:relative}.combobox input{padding-right:56px;cursor:text}.combobox.is-disabled input{cursor:not-allowed}.cb-chevron{position:absolute;right:12px;top:50%;transform:translateY(-50%) rotate(90deg);color:var(--navy);pointer-events:none;display:flex;transition:transform .15s}.combobox.open .cb-chevron{transform:translateY(-50%) rotate(-90deg)}.combobox.is-disabled .cb-chevron{color:var(--n-200)}.cb-clear{position:absolute;right:34px;top:50%;transform:translateY(-50%);width:20px;height:20px;min-width:0;padding:0;display:grid;place-items:center;background:var(--n-100);color:var(--n-400);border:none;border-radius:50%;font-size:14px;line-height:1}.cb-clear:hover{background:var(--n-200);color:var(--n-700)}.combobox-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--white);border:1px solid var(--n-200);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-height:248px;overflow-y:auto;z-index:40;padding:5px;list-style:none;margin:0}.combobox-option{padding:9px 11px;border-radius:6px;cursor:pointer;font-size:.95rem;color:var(--n-700)}.combobox-option.active{background:var(--navy-tint);color:var(--navy)}.combobox-option.selected{font-weight:600;color:var(--navy)}.combobox-option.selected:after{content:"✓";float:right;color:var(--navy)}.combobox-empty{padding:11px;color:var(--n-400);font-size:.9rem}.combobox-option.combobox-create{margin-top:4px;border-top:1px solid var(--n-200);color:var(--navy);font-weight:600}.combobox-option.combobox-create:hover{background:var(--navy-tint)}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 22px;font:inherit;font-weight:600;font-size:1rem;line-height:1.125;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--red);color:#fff;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s,box-shadow .15s,transform .05s}button:hover,.btn:hover{background:var(--navy)}button:active,.btn:active{background:var(--red-d);transform:translateY(1px)}button:focus-visible,.btn:focus-visible{outline:none;box-shadow:var(--ring)}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}button svg,.btn svg{flex:none}button.ghost{background:var(--white);color:var(--navy);border-color:var(--n-200)}button.ghost:hover{background:var(--navy-tint);border-color:var(--navy);color:var(--navy)}button.ghost:active{background:var(--navy-tint);transform:translateY(1px)}button.danger{background:var(--white);color:var(--red-d);border-color:var(--red-d)}button.danger:hover{background:var(--red-d);color:#fff}button.sm,.btn.sm{height:32px;padding:0 12px;font-size:.85rem;border-radius:6px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--n-100);vertical-align:middle}th{font-size:.72rem;text-transform:uppercase;color:var(--n-400);letter-spacing:.04em;font-weight:600;background:var(--n-050)}th:first-child{border-top-left-radius:8px}th:last-child{border-top-right-radius:8px}tbody tr{transition:background .12s}tbody tr:hover td{background:#fafbfc}td .type-strong{font-weight:600;color:var(--black)}.group-row td{background:var(--navy-tint);color:var(--navy);font-weight:600;font-size:.95rem;border-bottom:1px solid var(--n-100)}.group-row:hover td{background:var(--navy-tint)}.group-count{display:inline-block;margin-left:8px;background:var(--navy);color:#fff;font-size:.72rem;font-weight:600;min-width:20px;text-align:center;padding:1px 7px;border-radius:999px}.manual-row td:first-child{padding-left:22px}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:600}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.badge.on{background:var(--success-tint);color:var(--success-d)}.badge.off{background:var(--error-tint);color:var(--error)}.badge.pending{background:var(--navy-tint);color:var(--navy)}.filters{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:20px}.filters>div{flex:1;min-width:160px}.row-actions{display:flex;gap:6px;align-items:center}.icon-btn{width:34px;height:34px;min-width:0;padding:0;display:inline-grid;place-items:center;background:var(--white);color:var(--navy);border:1px solid var(--n-200);border-radius:8px;position:relative;transition:background .15s,color .15s,border-color .15s}.icon-btn:hover{background:var(--navy-tint);border-color:var(--navy);color:var(--navy)}.icon-btn:active{transform:translateY(1px)}.icon-btn.danger{color:var(--red-d)}.icon-btn.danger:hover{background:var(--red-d);border-color:var(--red-d);color:#fff}.icon-btn.success{color:var(--success-d)}.icon-btn.success:hover{background:var(--success-d);border-color:var(--success-d);color:#fff}.icon-btn.copied{background:var(--success-tint);border-color:var(--success);color:var(--success-d)}.icon-btn[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px);background:var(--black);color:#fff;font-size:.72rem;font-weight:500;padding:5px 9px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s,transform .12s;z-index:60}.icon-btn[data-tip]:before{content:"";position:absolute;bottom:calc(100% + 3px);left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--black);opacity:0;pointer-events:none;transition:opacity .12s;z-index:60}.icon-btn[data-tip]:hover:after{opacity:1;transform:translate(-50%) translateY(0)}.icon-btn[data-tip]:hover:before{opacity:1}.error{color:var(--error);background:var(--error-tint);border:1px solid #f7c9cd;padding:9px 12px;border-radius:var(--radius-sm);margin:10px 0;font-size:.9rem}.right{text-align:right}.dropzone{border:2px dashed var(--n-200);border-radius:var(--radius);padding:32px;text-align:center;color:var(--n-400);cursor:pointer;transition:.15s;background:var(--n-050)}.dropzone:hover{border-color:var(--navy)}.dropzone.drag{border-color:var(--navy);background:var(--navy-tint);color:var(--navy)}.dropzone strong{color:var(--navy)}.progress{height:8px;background:var(--n-100);border-radius:999px;overflow:hidden;margin-top:12px}.progress>div{height:100%;background:var(--navy);transition:width .2s}.linkbox{display:flex;gap:10px;align-items:center;background:var(--success-tint);border:1px solid #bfe9d2;padding:12px 14px;border-radius:var(--radius);margin-top:16px;word-break:break-all;font-size:.9rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#072a4d73;display:grid;place-items:center;z-index:50;padding:16px}.modal{width:440px;max-width:100%;box-shadow:var(--shadow-lg);animation:pop .12s ease-out}@keyframes pop{0%{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-brand{background:linear-gradient(150deg,var(--navy) 0%,var(--navy-d) 100%);color:#fff;padding:56px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-brand:after{content:"";position:absolute;right:-80px;bottom:-80px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(255,0,0,.25),transparent 70%)}.login-brand .logo{color:#fff}.login-brand .logo-mark{background:#ffffff24}.brand-logo-img{width:auto;max-width:240px;flex:none;object-fit:contain;display:block}.brand-content{margin:auto 0;display:flex;flex-direction:column;gap:40px}.login-brand .tagline{max-width:420px}.login-brand .tagline h1{color:#fff;font-size:2.25rem;line-height:2.6rem}.login-brand .tagline p{color:#ffffffbf;font-size:1.05rem;line-height:1.5rem;margin-top:14px}.login-brand .accent-bar{width:56px;height:5px;background:var(--red);border-radius:3px;margin-bottom:26px}.login-form-side{display:grid;place-items:center;padding:40px}.login-card{width:360px;max-width:100%}.login-card h2{margin-bottom:4px}.login-card .sub{color:var(--n-400);font-size:.95rem;margin-bottom:24px}@media (max-width: 820px){.login-wrap{grid-template-columns:1fr}.login-brand{padding:36px;min-height:220px}.login-brand .tagline h1{font-size:1.75rem;line-height:2.1rem}}.search-row{position:relative}.search-row .search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--n-400);display:flex;pointer-events:none}.search-input{padding-left:40px;height:46px;font-size:1rem}.search-input::-webkit-search-cancel-button{cursor:pointer}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--navy);background:var(--navy-tint)}.sort-arrow{display:inline-block;width:12px;margin-left:4px;color:var(--red);font-size:.7rem}td .strong{font-weight:600;color:var(--black)}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:20px;padding-top:16px;border-top:1px solid var(--n-100)}.pager-info{color:var(--n-400);font-size:.9rem}.pager-btns{display:flex;gap:6px;align-items:center}.pager-btns .ghost.sm{min-width:34px}.pager-btns .ghost.sm.active{background:var(--navy);color:#fff;border-color:var(--navy)}.pager-dots{color:var(--n-400);padding:0 2px}.dash{display:block}.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}@media (max-width: 900px){.kpis{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.kpis{grid-template-columns:1fr}}.kpi{background:var(--white);border:1px solid var(--n-100);border-left:4px solid var(--n-200);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 18px 16px;display:flex;flex-direction:column;gap:6px}.kpi-num{font-size:2rem;line-height:1;font-weight:700;color:var(--black)}.kpi-label{font-size:.82rem;color:var(--n-400);font-weight:500}.kpi.navy{border-left-color:var(--navy)}.kpi.navy .kpi-num{color:var(--navy)}.kpi.ok{border-left-color:var(--success-d)}.kpi.ok .kpi-num{color:var(--success-d)}.kpi.warn{border-left-color:#e8a13a}.kpi.warn .kpi-num{color:#c9821f}.kpi.alert{border-left-color:var(--red-d)}.kpi.alert .kpi-num{color:var(--red-d)}.kpi.muted{border-left-color:var(--n-200)}.kpi.muted .kpi-num{color:var(--n-400)}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media (max-width: 760px){.dash-grid{grid-template-columns:1fr}}.panel h3{margin-bottom:14px}.bar-row{margin-bottom:12px}.bar-head{display:flex;justify-content:space-between;font-size:.88rem;margin-bottom:5px}.bar-label{color:var(--n-700)}.bar-val{font-weight:700;color:var(--black)}.bar-track{display:block;height:9px;background:var(--n-100);border-radius:999px;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:999px;transition:width .3s;min-width:2px}.bar-fill.navy{background:var(--navy)}.bar-fill.ok{background:var(--success-d)}.bar-fill.warn{background:#e8a13a}.bar-fill.alert{background:var(--red-d)}.brand-bars{display:flex;flex-direction:column;gap:10px}.brand-bar{display:grid;grid-template-columns:130px 1fr 36px;align-items:center;gap:12px}.brand-name{font-size:.85rem;color:var(--n-700);font-weight:500;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-track{height:14px;background:var(--n-100);border-radius:999px;overflow:hidden}.brand-fill{display:block;height:100%;background:linear-gradient(90deg,var(--navy),var(--navy-d));border-radius:999px;transition:width .3s}.brand-n{font-size:.85rem;font-weight:700;color:var(--navy);text-align:left}@media (max-width: 520px){.brand-bar{grid-template-columns:92px 1fr 30px}}.manual-row td{padding-top:14px;padding-bottom:14px}.manual-row td:first-child{padding-left:14px}tbody tr:nth-child(2n) td{background:#fbfcfe}tbody tr.manual-row:hover td{background:var(--navy-tint)}.veh{display:flex;flex-direction:column;gap:1px}.veh-model{font-weight:600;color:var(--black);font-size:.95rem;line-height:1.2}.veh-brand{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--n-400);font-weight:600}.veh-cell{vertical-align:top}.vig-indent{width:30px;padding-left:22px!important}.pill{display:inline-block;padding:3px 10px;border-radius:6px;font-size:.76rem;font-weight:600;white-space:nowrap}.pill.propietario{background:var(--navy-tint);color:var(--navy)}.pill.partes{background:#fdf0dc;color:#c9821f}.vig-cell{display:flex;flex-direction:column;gap:3px;align-items:flex-start}.vig-range{font-size:.76rem}.badge.vencida{background:var(--error-tint);color:var(--red-d)}.badge.porvencer{background:#fdf0dc;color:#c9821f}.badge.vigente{background:var(--success-tint);color:var(--success-d)}.badge.abierta{background:var(--navy-tint);color:var(--navy)}
