:root{color-scheme:dark;--ground:#0d1711;--panel:#1a2920;--panel2:#22372a;--sand:#ddc795;--ink:#f2e6c8;--line:#766b4c;--muted:#b8c2ae;--good:#aadd91;--red:#e7a18e;--focus:#d9e8a1}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 76% 25%,#1e3022 0,#0c1510 45%,#090f0b 100%);color:var(--ink);font:15px/1.55 Arial,"Segoe UI",sans-serif;min-height:100vh}a{color:var(--sand)}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip{position:absolute;top:-100px;left:10px;padding:8px;background:#eee;color:#111;z-index:99}.skip:focus{top:8px}h1,h2,h3,p{margin:0}h1,h2,h3,.header strong,.nav-btn,.card-name,.section-heading{font-family:Impact,"Arial Narrow",Arial,sans-serif;font-weight:500;letter-spacing:.7px}.app-shell{display:grid;grid-template-columns:237px minmax(0,1fr);grid-template-rows:82px 1fr;min-height:100vh}.header{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 26px;background:linear-gradient(115deg,#171f19,#2d362b 42%,#111a14);border-bottom:2px solid #9a8254;position:sticky;top:0;z-index:15;box-shadow:0 8px 25px #080e09}.brand{display:flex;gap:15px;align-items:center;min-width:0}.brand img{object-fit:contain}.brand strong{font-size:clamp(18px,2.1vw,27px);line-height:1.1;display:block}.brand small{display:block;color:#ccb98b;font-size:10px;letter-spacing:1.3px;font-weight:700}.header-divider{height:46px;width:1px;background:#aa9563}.live-marker{font-size:11px;letter-spacing:1.5px;color:var(--good);border:1px solid #456345;padding:9px 10px;text-align:center;white-space:nowrap}.sidebar{background:linear-gradient(90deg,#101b14,#202b20 50%,#111b15);border-right:2px solid var(--line);padding:22px 13px 14px;display:flex;flex-direction:column;gap:15px;position:sticky;top:82px;align-self:start;height:calc(100vh - 82px);overflow:auto}.sidebar-label,.sidebar-foot{font-weight:800;letter-spacing:1.7px;color:#a7956d;font-size:10px;padding:0 10px}.sidebar nav{display:grid;gap:6px}.nav-btn{display:block;width:100%;text-align:left;padding:12px 14px;color:#dfd8c6;background:transparent;border:1px solid transparent;font-size:17px}.nav-btn:hover{background:#293e2c;border-color:#75664b}.nav-btn.active{color:#1c261b;border-color:#f2deb0;background:linear-gradient(110deg,#efddac,#bfa667)}.sidebar-image{min-height:155px;margin-top:15px;background:linear-gradient(0deg,#141e1290,#18211866),url('/assets/antena.webp') center/cover;border:1px solid #7b7054;transform:rotate(-1deg)}.sidebar-foot{margin-top:auto;text-align:center}.menu-button{display:none;border:1px solid #a18e65;color:var(--ink);background:#1d2b20;border-radius:5px;font-size:20px;width:42px;height:44px}.scrim{display:none}main{min-width:0;padding:30px clamp(17px,4vw,56px) 70px;width:100%;max-width:1380px;margin:0 auto}.eyebrow{color:#c0b084;font-size:11px;letter-spacing:2px;font-weight:800;margin-bottom:8px}.heading{font-size:clamp(27px,3vw,41px);margin-bottom:12px}.lead{color:var(--muted);max-width:750px;margin-bottom:24px}.panel{border:1px solid #a4946c;background:linear-gradient(130deg,#213426ed,#142419fc);padding:22px;border-radius:7px;box-shadow:inset 0 0 0 3px #d1ad6010,0 6px 25px #080f0938}.panel+.panel{margin-top:16px}.section-heading{font-size:22px;margin-bottom:14px;border-bottom:1px solid #96855b75;padding-bottom:9px}.home-intro{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(200px,.75fr);gap:17px;margin-bottom:18px}.home-person{min-height:185px;display:flex;align-items:center;gap:18px}.home-person .figure{width:95px;height:125px;flex:none;border:3px solid #ad9965;background:linear-gradient(#24362566,#101b1680),url('/assets/operador.webp') center/cover;filter:sepia(.25)}.primary{color:var(--sand);font-size:12px;letter-spacing:1.8px;font-weight:bold}.operator-id{font:700 20px/1.3 Consolas,monospace;overflow-wrap:anywhere;margin:6px 0}.details{display:grid;grid-template-columns:auto 1fr;column-gap:13px;row-gap:9px}.details dt{color:var(--muted)}.details dd{margin:0;font-weight:700}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.tile{min-height:180px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;color:var(--ink);position:relative;padding:20px;border:1px solid #aa996e;border-radius:7px;background:linear-gradient(100deg,#1c3023f2,#12221aa0);overflow:hidden}.tile:hover{border-color:#e8d6a0;transform:translateY(-1px)}.tile .card-name{font-size:clamp(22px,2.4vw,28px)}.tile small{font-size:13px;color:#c1cbbd;max-width:76%;margin-top:13px}.tile:after{content:'›';position:absolute;right:20px;bottom:5px;font:40px Georgia;color:#e2c996}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.list{display:grid;gap:10px}.item{padding:15px;border:1px solid #59684f;background:#13251a;border-radius:5px;text-align:left;color:var(--ink);width:100%;display:flex;align-items:center;justify-content:space-between;gap:15px}.item:hover{border-color:#d8c188}.item b{display:block;margin-bottom:3px}.item span{color:#bcc6b7;font-size:12px}.item .tag{color:var(--sand);font-size:12px;white-space:nowrap}.field{margin-bottom:15px;display:grid;gap:5px}.field label{color:#dbc28d;font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700}.field input,.field textarea{width:100%;min-width:0;max-width:100%;background:#0e1b13;border:1px solid #847751;border-radius:5px;min-height:44px;color:var(--ink);padding:11px 12px}.field textarea{min-height:110px;resize:vertical}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.btn{padding:10px 16px;border:1px solid #e3c786;border-radius:5px;color:#1a261d;background:linear-gradient(#e9d49f,#bba064);font-weight:bold;min-height:44px}.btn.secondary{background:#25382a;color:var(--ink);border-color:#a9986c}.btn.subtle{background:transparent;color:var(--sand);border-color:#5a6b55}.warning{padding:14px;border-left:3px solid #c3a05a;background:#79602c20;color:#e8d4a3;margin:18px 0}.error{padding:14px;border-left:3px solid #d77e74;background:#7e2e2c24;color:#f1b8ac;margin:18px 0}.success{padding:12px;color:var(--good);border-left:3px solid #94b77c;background:#2a472620;margin-top:14px}.loading{padding:28px;color:var(--muted)}.empty{padding:17px;color:var(--muted);border:1px dashed #706d55;border-radius:6px}.note{font-size:13px;color:var(--muted);margin-top:12px}.muted{color:var(--muted)}.tag{display:inline-flex;padding:3px 9px;border:1px solid #8e7a51;border-radius:4px;color:#dec48c;font-size:11px;letter-spacing:.5px}.tag.green{color:#b9dc9b;border-color:#73905e}.tag.red{color:#f2b7a3;border-color:#a86f63}.doc-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;margin-top:12px}.thread{display:grid;gap:10px;max-height:460px;overflow:auto;padding-right:4px}.message{padding:13px;background:#101f17;border-left:3px solid #83714f;overflow-wrap:anywhere}.message strong{color:#dcc894}.message time{display:block;font-size:11px;color:#9fac9e}.badge-preview{border:2px solid #d0b77b;background:linear-gradient(130deg,#30432d,#101e16);padding:25px;max-width:560px;position:relative;box-shadow:0 8px 30px #080e09}.badge-preview:before{content:'OPSE · 2027';position:absolute;right:18px;top:16px;color:#968766;font-weight:bold;font-size:10px;letter-spacing:2px}.toast{position:fixed;right:20px;bottom:20px;z-index:40;max-width:min(410px,calc(100vw - 30px));padding:13px 17px;background:#283c2d;border:1px solid #9e8e65;color:var(--ink);box-shadow:0 8px 25px #000a}.authbox{max-width:610px;margin:8vh auto}.authbox h1{margin-bottom:15px}.authbox .btn{display:inline-block;text-decoration:none;margin-top:13px}.fineprint{font-size:11px;color:#94a58f;margin-top:30px}.status-row{display:flex;align-items:center;gap:8px;color:#b8d99d;margin-top:10px}
@media(max-width:1020px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.home-intro{grid-template-columns:1fr}.grid-2{grid-template-columns:1fr}.live-marker{font-size:10px}}
@media(max-width:740px){.app-shell{display:block;padding-top:72px}.header{height:72px;position:fixed;inset:0 0 auto;padding:8px 12px}.brand img{width:66px;height:52px}.brand strong{font-size:17px}.brand small{font-size:9px;letter-spacing:.4px}.header-divider{height:37px}.live-marker{display:none}.menu-button{display:block;flex:none}.sidebar{position:fixed;top:72px;left:0;bottom:0;width:min(290px,82vw);height:auto;max-height:none;transform:translateX(-110%);transition:transform .2s;z-index:21;box-shadow:8px 0 30px #0009}.sidebar.open{transform:translateX(0)}.scrim.open{display:block;position:fixed;inset:72px 0 0;background:#000a;z-index:20}main{padding:24px 15px 75px}.cards{grid-template-columns:1fr}.tile{min-height:130px}.home-person{min-height:160px}.panel{padding:17px}.details{grid-template-columns:1fr}.details dd{margin-bottom:10px}.item{align-items:flex-start}.badge-preview{padding:20px 13px}.operator-id{font-size:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}

.tile-ficha{background-image:linear-gradient(100deg,#1c3023f2,#12221aa0),url('/assets/credencial.webp');background-position:center,right center;background-size:cover,45% 100%;background-repeat:no-repeat}
.tile-comunicaciones{background-image:linear-gradient(100deg,#1c3023f2,#12221aa0),url('/assets/comunicaciones.webp');background-position:center,right center;background-size:cover,45% 100%;background-repeat:no-repeat}
.tile-novedades{background-image:linear-gradient(100deg,#1c3023f2,#12221aa0),url('/assets/acontecimientos.webp');background-position:center,right center;background-size:cover,45% 100%;background-repeat:no-repeat}
/* ID-03. La UI oculta Dirección de campaña cuando no existe grant de OPSE;
 * todas las operaciones comprueban la autoridad nuevamente en el servidor. */
.field select{width:100%;background:#0e1b13;border:1px solid #847751;border-radius:5px;min-height:44px;color:var(--ink);padding:10px 12px}
.admin-row{padding:13px 15px;border:1px solid #6f765b;background:#12231a;border-radius:5px;display:grid;gap:9px;overflow-wrap:anywhere}
.admin-row strong{color:#e7d3a0}.admin-row .actions{margin-top:4px}
.admin-row .field{margin:6px 0}
.admin-row p{margin:0}

/* V0.25 — Organización: personajes / bitácora compacta */
.channel-message-box{border:1px solid #5b6c55;border-radius:5px;padding:12px;margin-top:12px}
.channel-message-box summary{cursor:pointer;color:var(--sand);font-weight:700;margin-bottom:10px}
.activity-row{display:flex;flex-wrap:wrap;gap:9px;border-bottom:1px solid #52634f;padding:10px 0;font-size:12px;overflow-wrap:anywhere}
.activity-row time{color:#d7c18c;min-width:145px}
.activity-row span{color:#cbd6c5}

@media print{body{background:white!important;color:#111!important}.header,.sidebar,.menu-button,.scrim,.toast,.btn{display:none!important}.app-shell{display:block!important}main{max-width:none;padding:0!important}.panel{background:white!important;color:#111!important;box-shadow:none!important;border:2px solid #777!important}.panel *{color:#111!important}.warning{border:2px solid #111!important;background:white!important}}
/* V0.27: confirmaciones, filtros y reportes */
.receipt-status{color:var(--good);font-size:11px;margin-top:7px}
.document-scroll{max-height:460px;overflow-y:auto;padding-right:8px;border:1px solid #53664b;border-radius:5px;padding:12px;margin:10px 0}
.role-targets{border:1px solid #617152;border-radius:5px;padding:12px;margin-bottom:14px}
.check-control{display:flex;gap:10px;align-items:center;margin:8px 0;cursor:pointer;color:var(--sand);font-size:13px}
.check-control input{width:18px;height:18px;accent-color:#bda16e;flex:none}
.admin-messages,.read-report{width:100%;margin-top:12px;overflow-wrap:anywhere}
