/* Mobile-first, estilo iOS. Espacios 4/8/12/16/20/24/32. Desktop solo vía min-width. */
:root{--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Inter",system-ui,"Segoe UI",Roboto,sans-serif;--r:18px;--ease:cubic-bezier(.2,.8,.2,1);--spring:cubic-bezier(.2,1.25,.35,1);
 --vvh:100dvh;--sat:env(safe-area-inset-top);--sab:env(safe-area-inset-bottom);--sal:env(safe-area-inset-left);--sar:env(safe-area-inset-right);--tab:58px;--px:16px}
[data-theme=light]{--bg:#f5f5f7;--panel:#fff;--panel2:#f2f2f5;--ink:#111114;--ink2:#3a3a42;--mut:#6e6e78;--line:rgba(17,17,20,.08);--acc:#3b3fc4;--acc2:#5358e6;--accsoft:#eceefe;--danger:#d92d20;
 --sh1:0 1px 2px rgba(17,17,20,.04),0 2px 8px rgba(17,17,20,.04);--sh2:0 1px 2px rgba(17,17,20,.05),0 8px 24px rgba(17,17,20,.07);--glass:rgba(255,255,255,.82)}
[data-theme=dark]{--bg:#000;--panel:#141417;--panel2:#1d1d21;--ink:#f5f5f7;--ink2:#d4d4da;--mut:#8e8e98;--line:rgba(255,255,255,.09);--acc:#7c80ff;--acc2:#9599ff;--accsoft:#1f2050;--danger:#ff6b5e;
 --sh1:none;--sh2:0 8px 30px rgba(0,0,0,.5);--glass:rgba(20,20,23,.82)}
*{box-sizing:border-box;min-width:0;-webkit-tap-highlight-color:transparent}
html,body{position:fixed;inset:0;margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);-webkit-text-size-adjust:100%}
body{font-family:var(--font);color:var(--ink);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;letter-spacing:-.01em}
h1,h2,h3,h4{margin:0;letter-spacing:-.02em}
.muted{color:var(--mut)}.small{font-size:13px}.err{color:var(--danger);min-height:1.4em;font-size:14px;margin:8px 0 0}
.ico{flex:none;display:block}
input,select,textarea{width:100%;min-height:48px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;font:inherit;font-size:16px;background:var(--panel);color:var(--ink);outline:none;transition:border .15s,box-shadow .15s;-webkit-appearance:none;appearance:none}
select{background-image:linear-gradient(45deg,transparent 50%,var(--mut) 50%),linear-gradient(135deg,var(--mut) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:36px}
input:focus,select:focus,textarea:focus{border-color:var(--acc);box-shadow:0 0 0 4px var(--accsoft)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border:0;background:var(--panel2);color:var(--ink);border-radius:14px;cursor:pointer;font:inherit;font-weight:600;font-size:16px;transition:transform .2s var(--spring),background .15s,opacity .15s;-webkit-user-select:none;user-select:none}
.btn.primary{background:var(--acc);color:#fff;box-shadow:0 6px 16px -6px color-mix(in srgb,var(--acc) 70%,transparent)}
.btn.ghost{background:transparent}.btn.block{width:100%;min-height:52px}.btn.danger{color:var(--danger)}
.btn.icon{width:44px;min-height:44px;padding:0;border-radius:50%}
.pressed{transform:scale(.98)!important;opacity:.85}
.nav,.btn,.chip,.badge,.logo,.label,.segc,.stat,.row{-webkit-user-select:none;user-select:none}
/* Login */
.gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;height:var(--vvh);padding:calc(24px + var(--sat)) calc(24px + var(--sar)) calc(24px + var(--sab)) calc(24px + var(--sal));background:linear-gradient(165deg,#eceefe 0%,#f5f5f7 50%,#fdf0f6 100%);overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;animation:float 16s ease-in-out infinite;pointer-events:none}
.b1{width:320px;height:320px;background:#c7cbff;top:-100px;left:-80px}.b2{width:280px;height:280px;background:#fbd0e6;bottom:-90px;right:-70px;animation-delay:-6s}.b3{display:none}
@keyframes float{50%{transform:translate(20px,-20px) scale(1.06)}}
.gate-card{position:relative;width:100%;max-width:380px;padding:36px 24px;border-radius:28px;background:rgba(255,255,255,.78);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid rgba(255,255,255,.7);box-shadow:0 30px 60px -20px rgba(17,17,20,.18);text-align:center;animation:pop .5s var(--spring)}
.gate-card h1{font-size:24px;font-weight:700;margin-top:16px;color:#111114}.gate-card p.muted{margin:8px 0 24px}.gate-card input{text-align:center;margin-bottom:12px}
.logo{display:inline-grid;place-items:center;width:68px;height:68px;border-radius:20px;background:linear-gradient(135deg,#3b3fc4,#7c5cff);color:#fff;font-weight:700;font-size:21px;letter-spacing:-.03em;box-shadow:0 12px 28px -8px rgba(59,63,196,.55)}
.logo.sm{width:32px;height:32px;border-radius:10px;font-size:12px;box-shadow:none}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.98)}}
.shake{animation:shake .4s}@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
/* Estructura móvil: sin barra superior; el contenido empieza bajo el safe-area */
#root{height:var(--vvh);overflow:hidden}
.shell{display:flex;flex-direction:column;height:var(--vvh);background:var(--bg);animation:fade .3s var(--ease)}@keyframes fade{from{opacity:0}}
.content{order:1;flex:1;display:flex;flex-direction:column;min-height:0}
main{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:calc(var(--sat) + 16px) calc(var(--px) + var(--sar)) 28px calc(var(--px) + var(--sal))}
main>*{animation:pop .35s var(--ease) both}
.side{order:2;flex:none;display:flex;justify-content:space-around;background:var(--glass);backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);border-top:.5px solid var(--line);padding:0 var(--sar) var(--sab) var(--sal);position:relative;z-index:5}
.brand{display:none}
.nav{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:var(--tab);min-width:44px;border:0;background:none;color:var(--mut);font:inherit;font-size:10.5px;font-weight:600;letter-spacing:0;cursor:pointer;transition:color .2s,transform .2s var(--spring)}
.nav.active{color:var(--acc)}.nav.active .ico{transform:scale(1.06)}
.label-sm{font-size:13px;font-weight:600;color:var(--mut);margin:24px 4px 10px;letter-spacing:0}
/* Inicio */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:104px;padding:16px;border:0;border-radius:var(--r);background:var(--panel);box-shadow:var(--sh1);color:var(--mut);font:inherit;text-align:left;cursor:pointer;transition:transform .2s var(--spring)}
.stat .ico{color:var(--acc);margin-bottom:auto}.stat b{font-size:28px;font-weight:700;color:var(--ink);letter-spacing:-.03em;line-height:1.1;margin-top:10px}.stat span{font-size:13px;font-weight:500}
.stat.acc{background:linear-gradient(150deg,var(--acc),#6b5cff);color:rgba(255,255,255,.8)}.stat.acc .ico,.stat.acc b{color:#fff}
.cta{display:flex;align-items:center;gap:12px;width:100%;margin-top:12px;font:inherit;color:var(--ink);text-align:left;cursor:pointer;border:0}
.cta .tx{flex:1}.cta b{display:block;font-size:16px}.cta small{color:var(--mut);font-size:13px}.cta>.ico{color:var(--mut)}
.group{background:var(--panel);border-radius:var(--r);box-shadow:var(--sh1);overflow:hidden}
.row{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 16px;border:0;background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer;position:relative}
.row+.row::before{content:"";position:absolute;top:0;left:46px;right:0;border-top:.5px solid var(--line)}
.row>.ico:first-child{color:var(--acc)}.row .tx{flex:1;font-size:16px}.row .tx small{display:block;color:var(--mut);font-size:12.5px}.row>.ico:last-child:not(:first-child){color:var(--mut)}
.row.static{cursor:default}.row:disabled{opacity:1;cursor:default}.row:disabled .tx{color:var(--mut)}
.sw{appearance:none;-webkit-appearance:none;width:51px;min-width:51px;height:31px;min-height:31px;padding:0;border:0;border-radius:99px;background:#d9d9de;position:relative;transition:background .25s;box-shadow:none!important}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.2);transition:transform .3s var(--spring)}
.sw:checked{background:#34c759}.sw:checked::after{transform:translateX(20px)}
/* Buscar + segmentado */
.search{position:relative;margin-bottom:12px}.search .ico{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--mut)}
.search input{padding-left:42px;background:var(--panel2);border-color:transparent;border-radius:12px;min-height:44px}
.segc{display:flex;padding:3px;border-radius:12px;background:var(--panel2);margin-bottom:12px;gap:2px}
.segc button{flex:1;min-height:38px;border:0;border-radius:9px;background:none;font:inherit;font-size:14px;font-weight:600;color:var(--ink2);cursor:pointer;transition:background .25s var(--ease),box-shadow .25s,transform .2s var(--spring);padding:0 4px;white-space:nowrap}
.segc button.on{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1),0 3px 8px rgba(0,0,0,.06)}
.filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.filters select{min-height:44px;font-size:15px;border-radius:12px;background-color:var(--panel)}
.chips{display:flex;gap:8px;overflow-x:auto;margin:0 calc(-1 * var(--px)) 16px;padding:2px var(--px);scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{flex:none;min-height:44px;padding:0 16px;border:0;background:var(--panel);box-shadow:var(--sh1);color:var(--ink2);border-radius:999px;font:inherit;font-size:14px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:transform .2s var(--spring),background .2s}
.chip.on{background:var(--ink);color:var(--bg)}.chip .n{font-size:12px;opacity:.6;font-variant-numeric:tabular-nums}
/* Tarjetas */
.grid{display:grid;grid-template-columns:1fr;gap:12px}
.card{background:var(--panel);border-radius:var(--r);padding:18px;box-shadow:var(--sh2)}
.job{cursor:pointer;transition:transform .25s var(--spring);animation:pop .4s var(--ease) both}
.job-top{display:flex;gap:12px;align-items:flex-start}.jt{flex:1}
.job h3{font-size:16.5px;font-weight:650;line-height:1.3;letter-spacing:-.015em}
.emp{color:var(--mut);font-size:14px;margin-top:2px}
.av{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;font-weight:700;font-size:18px;color:hsl(var(--h) 55% 38%);background:hsl(var(--h) 70% 94%)}
[data-theme=dark] .av{color:hsl(var(--h) 80% 78%);background:hsl(var(--h) 35% 18%)}
.facts{list-style:none;margin:14px 0 0;padding:14px 0 0;border-top:.5px solid var(--line);display:grid;gap:10px}
.facts li{display:grid;grid-template-columns:16px 82px 1fr;align-items:center;gap:8px;font-size:14px}
.facts .ico{color:var(--mut)}.facts .label{color:var(--mut)}.facts .v{color:var(--ink);font-weight:550;overflow-wrap:anywhere}.facts .na{color:var(--mut);font-weight:400}
.job-foot{display:flex;justify-content:space-between;align-items:center;margin-top:14px}
.pill{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:999px;font-size:12.5px;font-weight:650;background:var(--panel2);color:var(--ink2);white-space:nowrap}
.pill.hi{background:#e7f8ee;color:#0a7a3b}.pill.mid{background:#fff5e0;color:#a15c00}.pill.lo{color:var(--mut)}
[data-theme=dark] .pill.hi{background:#0f2e1c;color:#5fd68e}[data-theme=dark] .pill.mid{background:#33240a;color:#f5b74e}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:550;color:var(--ink2);white-space:nowrap}
.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--mut)}
.d-nueva{background:#5358e6}.d-preparada{background:#f59e0b}.d-enviada{background:#0ea5e9}.d-entrevista{background:#22c55e}.d-descartada{background:#a1a1aa}
/* Esqueletos */
.sk{background:linear-gradient(90deg,var(--panel2) 0%,color-mix(in srgb,var(--panel2) 40%,var(--panel)) 50%,var(--panel2) 100%);background-size:200% 100%;animation:shim 1.2s linear infinite;border-radius:8px}
@keyframes shim{to{background-position:-200% 0}}
.stat.sk{box-shadow:none}.skc{display:grid;gap:10px}.row-sk{display:flex;gap:12px;margin-bottom:6px}.sk.av{width:44px;height:44px;border-radius:12px}
.sk.ln{height:12px}.w40{width:40%}.w60{width:60%}.w70{width:70%;margin-bottom:8px}.w80{width:80%}
.sk.bub{height:44px;width:60%;border-radius:20px}.sk.bub.r{align-self:flex-end;width:45%}
/* Vacíos */
.empty{text-align:center;color:var(--mut);margin:auto;padding:40px 16px;max-width:32ch;display:grid;justify-items:center;gap:6px}
.empty b{color:var(--ink);font-size:17px}.empty p{margin:0;font-size:14px}
.ill{display:grid;place-items:center;width:76px;height:76px;border-radius:24px;margin-bottom:8px;color:var(--acc);background:radial-gradient(circle at 30% 25%,#fff 0,var(--accsoft) 70%);box-shadow:inset 0 0 0 1px var(--line),0 10px 24px -10px color-mix(in srgb,var(--acc) 50%,transparent)}
[data-theme=dark] .ill{background:var(--accsoft)}
.ill.sm{width:44px;height:44px;border-radius:14px;margin:0}
/* Bottom sheet */
.sheet-wrap{position:fixed;inset:0;z-index:50}.sheet-wrap[hidden]{display:none}
.backdrop{position:absolute;inset:0;background:rgba(0,0,0,.38);transition:opacity .3s var(--ease)}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:calc(var(--vvh) - var(--sat) - 12px);display:flex;flex-direction:column;background:var(--panel);border-radius:22px 22px 0 0;box-shadow:0 -12px 40px rgba(0,0,0,.18);transition:transform .38s var(--spring);will-change:transform;touch-action:pan-y}
.grab-zone{flex:none;height:24px;display:grid;place-items:center;cursor:grab;touch-action:none}
.grab{width:38px;height:5px;border-radius:9px;background:color-mix(in srgb,var(--mut) 40%,transparent)}
.sheet-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.dlg{padding:4px 20px calc(24px + var(--sab))}
.dlg-top{display:flex;align-items:center;gap:12px}.dlg-top .tx{flex:1}.dlg-top b{display:block;font-size:15px}.dlg-top small{color:var(--mut);font-size:13px}
.sh-t{font-size:22px;font-weight:700;line-height:1.25;letter-spacing:-.025em;margin:16px 0 10px}
.sh-h{font-size:17px;font-weight:650;text-align:center}
.dlg .sub{color:var(--mut);font-size:14px;text-align:center;margin:4px 0 16px}
.badges{display:flex;gap:12px;align-items:center;margin-bottom:16px}
.facts-g{background:var(--panel2);box-shadow:none;padding:0 16px 14px;margin-bottom:16px}.facts-g .facts{border:0}
.box{background:var(--panel2);border-radius:14px;padding:14px 16px;font-size:15px;color:var(--ink2)}
.body{margin:0;color:var(--ink2);font-size:15px}
.lnk{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--acc);font-weight:600;text-decoration:none}
.det{margin-top:12px}.det summary{list-style:none;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:6px;color:var(--acc);font-weight:600}.det summary::-webkit-details-marker{display:none}.det[open] summary .ico{transform:rotate(90deg)}
.pre{white-space:pre-wrap;background:var(--panel2);border-radius:14px;padding:16px;font:12.5px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;max-height:320px;overflow:auto;margin:0}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.actions .full{grid-column:1/-1}
.timeline{list-style:none;padding:0;margin:0 0 0 4px;border-left:2px solid var(--line)}.timeline li{padding:0 0 12px 16px;position:relative;font-size:14px}.timeline li::before{content:"";position:absolute;left:-6px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--acc);box-shadow:0 0 0 3px var(--panel)}
/* Seguimiento */
.track{display:grid;gap:10px}
.trow{display:flex;align-items:center;gap:12px;min-height:72px;padding:12px 12px 12px 14px;background:var(--panel);border-radius:var(--r);box-shadow:var(--sh1);cursor:pointer;transition:transform .25s var(--spring);animation:pop .35s var(--ease) both}
.trow .tx{flex:1}.trow b{display:block;font-size:15px;font-weight:600;line-height:1.3}.trow small{color:var(--mut);font-size:13px}
.trow .mv{color:var(--acc);background:var(--accsoft)}
.kanban{display:none}
/* Chat */
main.chatmode{padding:0;display:flex;flex-direction:column}main.chatmode>*{animation:none}
.chat{flex:1;display:flex;flex-direction:column;min-height:0}
.chat-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:calc(var(--sat) + 16px) calc(16px + var(--sar)) 12px calc(16px + var(--sal));display:flex;flex-direction:column;gap:6px}
.bubble{max-width:82%;padding:10px 14px;border-radius:20px;font-size:16px;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere;animation:bub .3s var(--spring)}
@keyframes bub{from{opacity:0;transform:translateY(8px) scale(.96)}}
.bubble.usuario{align-self:flex-end;background:var(--acc);color:#fff;border-bottom-right-radius:6px}
.bubble.noe{align-self:flex-start;background:var(--panel);box-shadow:var(--sh1);border-bottom-left-radius:6px}
.bubble time{display:block;font-size:11px;opacity:.6;margin-top:4px;text-align:right}
.tag{display:flex;width:max-content;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--acc);background:var(--accsoft);padding:2px 8px;border-radius:99px;margin-bottom:6px;white-space:nowrap}
.typing{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:4px}.typing small{color:var(--mut);font-size:12px;padding-left:4px}
.dots{display:flex;gap:4px;padding:14px 16px}.dots i{width:8px;height:8px;border-radius:50%;background:var(--mut);animation:dot 1.2s infinite ease-in-out}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,60%,100%{transform:translateY(0);opacity:.35}30%{transform:translateY(-4px);opacity:1}}
.sugs{display:flex;gap:8px;overflow-x:auto;padding:4px 16px 8px;scrollbar-width:none;flex:none}.sugs::-webkit-scrollbar{display:none}.sugs .chip{min-height:40px;font-size:13.5px}
.chat-input{display:flex;gap:8px;align-items:flex-end;padding:8px 12px;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:.5px solid var(--line)}
.chat-input textarea{resize:none;min-height:44px;max-height:140px;line-height:20px;padding:11px 16px;border-radius:22px;background:var(--panel)}
.chat-input .send{flex:none}
/* Documentos */
.two{display:grid;gap:12px}.card-h{display:flex;align-items:center;gap:10px;font-size:17px;margin-bottom:4px}.card-h .ico{color:var(--acc)}
.card .small{margin:0 0 14px}
.drop{display:grid;justify-items:center;gap:6px;border:1.5px dashed color-mix(in srgb,var(--acc) 35%,var(--line));border-radius:16px;padding:20px;text-align:center;cursor:pointer;margin:12px 0}
.drop+input+textarea,#docNota{margin-bottom:10px}
/* ===== Desktop ===== */
@media (min-width:900px){
 .shell{display:grid;grid-template-columns:240px 1fr}
 .side{order:0;flex-direction:column;justify-content:flex-start;gap:2px;height:var(--vvh);padding:24px 12px;border-top:0;border-right:.5px solid var(--line);background:var(--panel)}
 .brand{display:flex;align-items:center;gap:12px;padding:0 12px 24px;font-weight:650}
 .nav{flex:none;flex-direction:row;justify-content:flex-start;gap:12px;min-height:44px;padding:0 12px;border-radius:10px;font-size:14px;color:var(--ink2)}
 .nav .ico{width:20px;height:20px}.nav:hover{background:var(--panel2)}.nav.active{background:var(--accsoft);color:var(--acc)}
 main{padding:40px}main>*{max-width:1180px}
 .stats{grid-template-columns:repeat(4,1fr);max-width:900px}.group,.cta{max-width:900px}
 #main>.job{max-width:900px}
 .grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
 .segc,.search{max-width:520px}.filters{max-width:520px}
 .chips{margin:0 0 16px;padding:0;overflow:visible;flex-wrap:wrap}
 .seg,.track{display:none}
 .kanban{display:grid;grid-template-columns:repeat(5,minmax(200px,1fr));gap:12px}
 .col{background:var(--panel2);border-radius:var(--r);padding:12px;min-height:320px}.col h4{display:flex;align-items:center;gap:8px;font-size:14px;margin:4px 4px 12px}
 .mini{display:flex;gap:10px;background:var(--panel);border-radius:14px;padding:12px;margin-bottom:8px;cursor:pointer;font-size:14px;box-shadow:var(--sh1)}.mini .av{width:32px;height:32px;font-size:14px;border-radius:9px}.mini b{display:block;font-weight:600;margin-bottom:2px}
 .sheet-wrap{display:grid;place-items:center}
 .sheet{position:relative;width:min(720px,94vw);max-height:88vh;border-radius:22px}
 .grab-zone{display:none}.dlg{padding:28px 32px}
 .actions{display:flex;flex-wrap:wrap}
 main.chatmode{padding:24px 40px}.chat{background:var(--panel);border-radius:22px;overflow:hidden;max-width:900px;box-shadow:var(--sh2)}.chat-body{padding:20px}
 .two{grid-template-columns:1fr 1fr}
}
