:root{color-scheme:dark;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#08111f;color:#ecf0f7;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 80% 0%,#172b44 0%,transparent 40%),#08111f}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}.hidden{display:none!important}
.topbar{height:72px;border-bottom:1px solid #ffffff17;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1080px)/2));background:#0b1625d9;position:sticky;top:0;z-index:5;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:11px;letter-spacing:.15em;font-size:13px;font-weight:750}.brand strong{color:#d9ac5a;font-weight:700}.brand-mark{display:grid;place-items:center;background:#d6a657;color:#101a2b;width:37px;height:37px;border-radius:11px;font-family:Georgia,serif;font-size:23px;letter-spacing:0}
.container{max-width:1080px;margin:0 auto;padding:32px 24px 64px}.panel{background:#101d30;border:1px solid #ffffff18;border-radius:18px;box-shadow:0 14px 60px #00000026;padding:26px}.panel h1,.panel h2,.panel h3{margin:0 0 10px}.panel h1{font-size:25px;letter-spacing:-.04em}.panel h2{font-size:18px}.muted{color:#9baabd}.small{font-size:13px}.tiny{font-size:12px}.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:750;color:#d6a657;margin:0 0 8px}.lead{font-size:15px;line-height:1.55;color:#c1cedc}.auth{max-width:440px;margin:55px auto}.field{display:flex;flex-direction:column;gap:7px;margin:15px 0}.field label{font-size:13px;font-weight:650;color:#cdd9e6}.field input,.field select,.search,select{background:#07111f;border:1px solid #334359;color:#f2f6fa;border-radius:10px;padding:12px 13px;outline:none;min-width:0;width:100%}.field input:focus,.field select:focus{border-color:#caa15e;box-shadow:0 0 0 3px #d6a65721}.btn{background:#ddb266;color:#0d1729;font-weight:750;border:0;padding:12px 18px;border-radius:11px;min-height:45px}.btn:hover:not(:disabled){background:#efd092}.btn.full{width:100%}.btn.secondary{background:#24344b;color:#ebf0f7}.btn.secondary:hover{background:#34506b}.btn.outline{background:transparent;color:#e2eaf3;border:1px solid #536780}.ghost{background:transparent;color:#e3ecf5;border:0;padding:8px 13px}.linkbutton{border:0;background:none;color:#e5bd75;padding:0;text-decoration:underline}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:14px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.space{margin-top:22px}.space-sm{margin-top:13px}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:6px 11px;font-size:12px;border:1px solid #446184;color:#ccd8e6;background:#1b2f48}.badge.good{background:#133e31;color:#9debc2;border-color:#285e48}.badge.warn{background:#4c3517;color:#f8d089;border-color:#725426}.stat{padding:18px;border-radius:14px;background:#14253b;border:1px solid #ffffff10}.stat strong{display:block;font-size:25px;line-height:1.3}.stat span{font-size:12px;color:#9fb0c4}.menu{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.menu button{border:1px solid #39506d;border-radius:10px;padding:9px 15px;color:#d5e0e9;background:#16263c}.menu button.active{border-color:#d6a657;color:#f4cf8a;background:#2a2a2b}.callout{background:#192d45;border:1px solid #37516c;border-radius:12px;padding:14px 16px;font-size:13px;line-height:1.5}.success{border-color:#27664c;background:#123b2c}.error{border-color:#804348;background:#3a242c}.employee-welcome{display:flex;align-items:center;justify-content:space-between;gap:14px}.clock{text-align:center;margin:26px 0}.clock .hour{font-size:clamp(48px,11vw,76px);font-weight:750;letter-spacing:-.065em;font-variant-numeric:tabular-nums}.clock .date{color:#a9bbce}.punchbutton{width:100%;border:0;border-radius:15px;background:#dfb36a;color:#101a29;padding:19px;font-size:17px;font-weight:800;min-height:64px}.punchbutton.out{background:#c2dbef}.camera-wrap{overflow:hidden;border-radius:15px;border:1px solid #4b6380;background:#040a12;position:relative;aspect-ratio:4/5;max-height:430px;max-width:355px;margin:18px auto}.camera-wrap video,.camera-wrap img{height:100%;width:100%;object-fit:cover;transform:scaleX(-1)}.camera-wrap img{transform:scaleX(-1)}.camera-wrap .camera-note{position:absolute;bottom:10px;left:10px;right:10px;background:#07121ab8;padding:10px;text-align:center;border-radius:9px;font-size:12px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#a7b7cc;font-weight:650;border-bottom:1px solid #ffffff26;padding:12px}td{border-bottom:1px solid #ffffff16;padding:12px;color:#e7edf5}td button{white-space:nowrap}.empty{border:1px dashed #47617e;border-radius:15px;text-align:center;padding:30px;color:#9db0c6}.checkline{display:flex;align-items:center;gap:11px;padding:14px;background:#19283d;border-radius:12px}.checkline input{width:20px;height:20px;accent-color:#cda55c}.flex1{flex:1}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.footnote{font-size:12px;color:#93a4b6;line-height:1.5;margin-top:12px}.loading{text-align:center}.sep{border:0;border-top:1px solid #ffffff1b;margin:20px 0}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:min(90vw,570px);z-index:99;pointer-events:none}#toast.show{background:#31425a;border:1px solid #8595a9;border-radius:12px;padding:14px 20px;color:#fff;box-shadow:0 15px 35px #0008;pointer-events:auto}#toast.show.bad{background:#622b33}
@media(max-width:700px){.topbar{height:64px;padding:0 17px}.container{padding:18px 14px 48px}.panel{padding:18px;border-radius:16px}.grid,.grid.three,.grid.four{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.auth{margin:25px auto}.employee-welcome{align-items:flex-start;flex-direction:column}.section-title{align-items:flex-start;flex-direction:column}.row.mobile-stack{flex-direction:column;align-items:stretch}.brand{font-size:11px}.brand-mark{width:32px;height:32px}}
@media(max-width:380px){.grid,.grid.three,.grid.four{grid-template-columns:1fr}}

/* Marca blanca por empresa: valores limitados a colores hexadecimales validados. */
:root{--brand-primary:#D6A657;--brand-secondary:#24344B;--brand-on-primary:#14202e;--brand-on-secondary:#ffffff;--page:#08111f;--surface:#101d30;--elevated:#14253b;--ink:#ecf0f7;--muted-text:#9baabd;--line:#ffffff24;--field:#07111f;--field-border:#334359;--topbar-bg:#0b1625ee;--topbar-ink:#edf1f7;--callout-bg:#192d45;--link:#e5bd75}
body[data-theme="claro"]{--page:#f5f7fb;--surface:#ffffff;--elevated:#edf3f9;--ink:#192536;--muted-text:#526478;--line:#dbe4ee;--field:#ffffff;--field-border:#a9bbcd;--topbar-bg:#ffffffed;--topbar-ink:#192536;--callout-bg:#edf3f9;--link:#2559a8;color-scheme:light}
body[data-theme="oscuro"]{color-scheme:dark}
body{background:radial-gradient(circle at 82% 0%,color-mix(in srgb,var(--brand-secondary) 36%,transparent),transparent 42%),var(--page);color:var(--ink)}
.topbar{background:var(--topbar-bg);border-bottom-color:var(--line)}
.brand{letter-spacing:.01em;color:var(--topbar-ink)}
.brand-name{display:flex;flex-direction:column;gap:2px;font-size:15px;line-height:1.15}
.brand-name small{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-primary)}
.brand-mark{background:var(--brand-primary);color:var(--brand-on-primary);overflow:hidden;flex:none}
.brand-mark:has(.header-logo){background:transparent;border-radius:7px}
.header-logo{width:100%;height:100%;object-fit:contain}
.panel{background:var(--surface);border-color:var(--line);color:var(--ink)}
.muted,.tiny.muted,.small.muted,.company-tagline{color:var(--muted-text)}
.lead{color:var(--muted-text)}
.eyebrow{color:var(--brand-primary)}
.field label{color:var(--ink)}
.field input,.field select,.search,select{background:var(--field);border-color:var(--field-border);color:var(--ink)}
.field input:focus,.field select:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-primary) 22%,transparent)}
.btn,.punchbutton{background:var(--brand-primary);color:var(--brand-on-primary)}
.btn:hover:not(:disabled),.punchbutton:hover:not(:disabled){background:color-mix(in srgb,var(--brand-primary) 82%,white)}
.btn.secondary{background:var(--brand-secondary);color:var(--brand-on-secondary)}
.btn.secondary:hover{background:color-mix(in srgb,var(--brand-secondary) 88%,white)}
.btn.outline{color:var(--ink);border-color:var(--field-border)}
.punchbutton.out{background:var(--brand-secondary);color:var(--brand-on-secondary)}
.ghost{color:var(--topbar-ink)}
.linkbutton{color:var(--link)}
.stat{background:var(--elevated);border-color:var(--line)}.stat span,.clock .date{color:var(--muted-text)}
.menu button{background:var(--elevated);color:var(--ink);border-color:var(--field-border)}
.menu button.active{background:color-mix(in srgb,var(--brand-primary) 12%,var(--surface));color:var(--ink);border-color:var(--brand-primary)}
.callout,.checkline{background:var(--callout-bg);border-color:var(--line)}
.checkline input{accent-color:var(--brand-primary)}
.stat strong{color:var(--ink)}
table th{color:var(--muted-text);border-bottom-color:var(--line)}table td{color:var(--ink);border-bottom-color:var(--line)}
.empty{color:var(--muted-text);border-color:var(--line)}.footnote{color:var(--muted-text)}.sep{border-top-color:var(--line)}
.company-identity{display:flex;align-items:center;gap:12px;margin:0 0 20px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--elevated)}
.company-identity img,.company-initial{height:53px;width:53px;border-radius:10px;object-fit:contain;flex:none}
.company-initial{display:grid;place-items:center;background:var(--brand-primary);color:var(--brand-on-primary);font-size:24px;font-weight:800}
.company-identity div{display:flex;flex-direction:column;gap:3px;min-width:0}.company-identity strong{font-size:16px;overflow-wrap:anywhere}.company-identity small{font-size:12px;color:var(--muted-text)}
.company-tagline{margin:0 0 9px;font-size:14px}
input[type="color"]{padding:3px;min-height:49px;cursor:pointer}
.branding-grid{grid-template-columns:1.25fr .85fr;align-items:start}
.brand-preview{--preview-primary:#D6A657;--preview-secondary:#24344B;--preview-on-primary:#14202e;background:linear-gradient(170deg,color-mix(in srgb,var(--preview-secondary) 36%,#08111f),#08111f);border:1px solid #ffffff24;min-height:370px;border-radius:17px;padding:30px 19px;text-align:center;display:flex;flex-direction:column;align-items:center;color:#f7f9fc;gap:8px}
.brand-preview.light{background:linear-gradient(170deg,color-mix(in srgb,var(--preview-secondary) 13%,#f5f7fb),#f5f7fb);border-color:#d9e2ec;color:#18273b}
.brand-preview-logo{height:82px;width:82px;border-radius:16px;background:color-mix(in srgb,var(--preview-primary) 15%,transparent);display:grid;place-items:center;margin-bottom:8px;overflow:hidden}
.brand-preview-logo img{height:100%;width:100%;object-fit:contain}.brand-preview-logo span{font-size:40px;font-weight:800;color:var(--preview-primary)}
.brand-preview-title{font-size:22px;font-weight:800;line-height:1.25;overflow-wrap:anywhere}
.brand-preview-subtitle{font-size:13px;opacity:.74}
.brand-preview-clock{font-size:52px;font-weight:780;letter-spacing:-.07em;margin:24px 0 10px;font-variant-numeric:tabular-nums}
.brand-preview-button{background:var(--preview-primary);color:var(--preview-on-primary);font-weight:750;border-radius:12px;width:100%;padding:16px 12px;font-size:14px}
.brand-preview-footer{font-size:11px;opacity:.55;margin-top:auto;padding-top:18px}
@media(max-width:700px){.branding-grid{grid-template-columns:1fr}.brand-name{font-size:12px}.brand-name small{font-size:9px}.brand-preview{min-height:325px}}
/* ROMEM Personal 1.3: administración general y cierres separados. */
.block{display:block}.archive-file{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:5px 0 10px}.holiday-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding:10px 0}
.archive-file .btn,.holiday-item .btn{min-height:36px;padding:8px 10px;font-size:12px}
@media(max-width:700px){.archive-file{align-items:flex-start;flex-direction:column}.stat strong{font-size:21px}}

/* ROMEM Personal 1.4: acceso directo por empresa. */
.company-portal{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.company-portal .portal-address{font-family:ui-monospace,monospace;font-size:13px;overflow-wrap:anywhere;margin:7px 0 0;color:var(--brand-primary)}.company-portal h2{font-size:18px}.company-portal .btn{flex:none}.menu-link{border:1px solid var(--field-border);border-radius:10px;padding:9px 15px;color:var(--ink);background:var(--elevated);text-decoration:none;font-size:14px}

@media(max-width:700px){.admin-detail-grid{grid-template-columns:1fr!important}}

/* ROMEM Personal 1.4.1: durante la carga de un portal, no mostrar marca central. */
html.company-portal-boot .topbar .brand {visibility:hidden;}
html.company-portal-boot .topbar {background:var(--topbar-bg);}
.brand-mark .header-logo {animation:logo-enter .23s ease-out both}
@keyframes logo-enter {from{opacity:.35}to{opacity:1}}

/* v1.4.2 · Selección independiente de lunes a domingo */
.workdays-section{margin-top:22px;padding-top:16px;border-top:1px solid var(--line,#ffffff24)}
.workdays-section h3{font-size:15px;margin:0 0 8px;color:var(--ink,#f1f4fa)}
.weekday-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:14px 0}
.weekday-option{display:flex;align-items:center;gap:9px;padding:11px 12px;border:1px solid var(--line,#40556c);background:var(--elevated,#17283d);border-radius:11px;color:var(--ink,#f4f7fb);font-weight:600;font-size:13px;cursor:pointer;min-width:0}
.weekday-option:has(input:checked){border-color:var(--brand-primary,#d6a657);background:color-mix(in srgb,var(--brand-primary,#d6a657) 12%,var(--elevated,#17283d))}
.weekday-option input{margin:0;width:18px;height:18px;flex:0 0 auto;accent-color:var(--brand-primary,#d6a657)}
.workdays-summary{font-size:13px;color:var(--muted-text,#aac0d8);margin:15px 0 5px}
.workdays-summary strong{color:var(--ink,#fff)}
.workday-extra{margin-top:12px}
@media(max-width:700px){.weekday-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:900px){.weekday-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* v1.5 · Invitaciones de personal y administradores */
.invite-note{max-width:240px;white-space:normal;overflow-wrap:anywhere}.invite-admin-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.invite-admin-item .btn{min-height:34px;font-size:12px;padding:6px 10px}

/* v1.6: estado offline y formularios móviles */
.offline-panel .punchbutton{display:block;width:100%;min-height:67px;margin:16px 0}
.offline-panel .callout p{margin:8px 0}
.offline-panel .row{margin-top:9px}
.offline-panel .badge.warn{display:inline-block}
@media(max-width:420px){.offline-panel .row>.btn{width:100%}}
