/* LOGOS Multimedia · estilos (responsive, tema oscuro/claro) */
:root{--bg:#0d0f1c;--bg2:#141729;--card:#181b30;--card2:#1f2340;--line:#2a2f55;--txt:#eef0ff;--mut:#9aa2cf;--pri:#7c5cff;--pri2:#22d3ee;--ok:#34d399;--warn:#fbbf24;--bad:#f87171;--sh:0 10px 30px rgba(0,0,0,.35);--r:14px;--side:240px;--grad:linear-gradient(135deg,#7c5cff,#22d3ee)}
[data-theme=light]{--bg:#f3f4fb;--bg2:#fff;--card:#fff;--card2:#eef0fb;--line:#dcdff2;--txt:#161936;--mut:#5d6491;--sh:0 8px 24px rgba(40,50,120,.12)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--txt);font-size:15px;line-height:1.45}
a{color:var(--pri2)}
button{font:inherit;color:inherit}
.hidden{display:none!important}
.ico{width:1.15em;height:1.15em;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
/* layout */
#app{display:flex;min-height:100vh}
.side{width:var(--side);background:var(--bg2);border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:16px 12px;z-index:30;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.1rem;padding:6px 10px 18px}
.brand i{width:36px;height:36px;border-radius:11px;background:var(--grad);display:grid;place-items:center;color:#fff}
.nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:11px;color:var(--mut);text-decoration:none;font-weight:600;margin-bottom:2px}
.nav a:hover{background:var(--card2);color:var(--txt)}
.nav a.active{background:var(--grad);color:#fff}
.nav h6{margin:16px 12px 6px;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.nav .badge{margin-left:auto;background:var(--card2);color:var(--mut);border-radius:20px;padding:0 8px;font-size:.72rem}
.main{margin-left:var(--side);flex:1;min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:12px 22px}
.top h2{margin:0;font-size:1.2rem;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.content{padding:22px;flex:1}
.userbtn{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:30px;padding:5px 12px 5px 5px;cursor:pointer}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--grad);display:grid;place-items:center;color:#fff;font-weight:700;font-size:.85rem}
.menu{position:absolute;right:16px;top:58px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh);padding:6px;min-width:210px;z-index:50}
.menu button{display:flex;gap:10px;align-items:center;width:100%;background:none;border:0;padding:10px 12px;border-radius:8px;cursor:pointer;text-align:left}
.menu button:hover{background:var(--card2)}
.burger{display:none}
/* controls */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--card);color:var(--txt);border-radius:11px;padding:9px 14px;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;transition:.15s}
.btn:hover{background:var(--card2)}
.btn.primary{background:var(--grad);border:0;color:#fff}
.btn.primary:hover{filter:brightness(1.1)}
.btn.danger{background:var(--bad);border:0;color:#fff}
.btn.ghost{background:none;border-color:transparent}
.btn.sm{padding:6px 10px;font-size:.85rem;border-radius:9px}
.btn.icon{padding:9px;aspect-ratio:1}
.btn[disabled]{opacity:.5;pointer-events:none}
.input,select.input,textarea.input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;font:inherit}
.input:focus{outline:2px solid var(--pri);border-color:transparent}
label.f{display:block;margin:0 0 12px;font-size:.82rem;color:var(--mut);font-weight:600}
label.f>.input,label.f>select{margin-top:5px}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:140px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.stat{display:flex;gap:14px;align-items:center}
.stat b{font-size:1.7rem;display:block;line-height:1}
.stat .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:var(--grad);color:#fff;font-size:1.2rem}
.chip{display:inline-flex;gap:6px;align-items:center;border-radius:20px;padding:3px 10px;background:var(--card2);color:var(--mut);font-size:.78rem;font-weight:600}
.pill-set{display:flex;gap:6px;flex-wrap:wrap}
.tabs{display:flex;gap:4px;background:var(--card);padding:4px;border-radius:12px;border:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabs button{border:0;background:none;padding:7px 12px;border-radius:9px;cursor:pointer;color:var(--mut);font-weight:600;white-space:nowrap;display:flex;gap:6px;align-items:center}
.tabs button.on{background:var(--grad);color:#fff}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.toolbar .grow{flex:1;min-width:180px}
.searchbox{position:relative}.searchbox .ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mut)}.searchbox .input{padding-left:36px}
.empty{text-align:center;padding:60px 20px;color:var(--mut)}.empty .big{font-size:3rem}
table.tbl{width:100%;border-collapse:collapse}.tbl th,.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.tbl th{font-size:.75rem;text-transform:uppercase;color:var(--mut);letter-spacing:.05em}
.tbl-wrap{overflow-x:auto}
/* media tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.tile{position:relative;aspect-ratio:1;background:var(--card2);border-radius:10px;overflow:hidden;cursor:pointer;content-visibility:auto}
.tile img,.tile .ph{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}
.tile:hover img{transform:scale(1.05)}
.tile .ph{display:grid;place-items:center;font-size:2rem;color:var(--mut);background:linear-gradient(135deg,var(--card2),var(--card))}
.tile .tag{position:absolute;left:6px;bottom:6px;background:rgba(0,0,0,.6);color:#fff;border-radius:6px;padding:1px 7px;font-size:.72rem;display:flex;gap:4px;align-items:center}
.tile .fav{position:absolute;right:6px;top:6px;color:#fbbf24}
.tile .chk{position:absolute;left:6px;top:6px;width:24px;height:24px;border-radius:50%;border:2px solid #fff;background:rgba(0,0,0,.35);display:none;place-items:center;color:#fff}
.selmode .tile .chk{display:grid}
.tile.sel{outline:3px solid var(--pri2);outline-offset:-3px}.tile.sel .chk{background:var(--pri);border-color:var(--pri)}
.tile.proc::after{content:"Procesando…";position:absolute;inset:auto 0 0 0;background:rgba(124,92,255,.85);color:#fff;font-size:.7rem;text-align:center;padding:2px}
.masonry{column-width:200px;column-gap:8px}.masonry .tile{aspect-ratio:auto;margin-bottom:8px;break-inside:avoid}.masonry .tile img{height:auto}
.contact{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:3px}.contact .tile{border-radius:3px}
.tl-group{margin-bottom:28px}
.tl-head{position:sticky;top:60px;z-index:5;display:flex;align-items:center;gap:10px;padding:8px 0;background:var(--bg);font-weight:800;font-size:1.05rem}
.tl-head::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--grad);flex:none}
.tl-head small{color:var(--mut);font-weight:600}
.tl-body{margin-left:5px;padding-left:20px;border-left:2px solid var(--line)}
.tl-rail{position:fixed;right:8px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px;z-index:10;max-height:70vh;overflow:auto}
.tl-rail button{border:0;background:var(--card);color:var(--mut);border-radius:8px;font-size:.7rem;padding:3px 7px;cursor:pointer}
.feed{max-width:680px;margin:0 auto}
.feed .post{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin-bottom:18px;overflow:hidden}
.feed .post img,.feed .post video{width:100%;display:block;max-height:80vh;object-fit:contain;background:#000}
.feed .post .cap{padding:12px 16px}
.carousel{position:relative;max-width:1100px;margin:0 auto}
.car-stage{aspect-ratio:16/9;background:#000;border-radius:var(--r);overflow:hidden;display:grid;place-items:center;position:relative}
.car-stage img,.car-stage video{max-width:100%;max-height:100%;object-fit:contain}
.car-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;display:grid;place-items:center;z-index:2}
.car-nav.l{left:10px}.car-nav.r{right:10px}
.car-strip{display:flex;gap:6px;overflow-x:auto;padding:10px 0;scroll-snap-type:x proximity}
.car-strip img{height:64px;aspect-ratio:1;object-fit:cover;border-radius:8px;opacity:.55;cursor:pointer;scroll-snap-align:center;border:2px solid transparent}
.car-strip img.on{opacity:1;border-color:var(--pri2)}
.pano-list .pano{margin-bottom:18px;background:var(--card);border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}
.pano-scroll{overflow-x:auto;overflow-y:hidden;cursor:grab;height:min(60vh,420px);background:#000}
.pano-scroll img{height:100%;width:auto;max-width:none;display:block}
.pano .cap{padding:10px 14px;display:flex;gap:10px;align-items:center}
.narr{max-width:760px;margin:0 auto}
.narr section{margin-bottom:40px}.narr h3{margin:0;font-size:1.4rem}.narr .date{color:var(--pri2);font-weight:700;font-size:.85rem;text-transform:uppercase}
.narr .imgs{display:grid;gap:8px;margin:12px 0}.narr .imgs img{width:100%;border-radius:12px;cursor:pointer}
.map{position:relative;height:calc(100vh - 220px);min-height:340px;background:#aad3df;border-radius:var(--r);overflow:hidden;touch-action:none;cursor:grab}
.map .tiles-layer{position:absolute;left:0;top:0;transform-origin:0 0}
.map img.t{position:absolute;width:256px;height:256px;user-select:none;-webkit-user-drag:none}
.map .mk{position:absolute;width:34px;height:34px;margin:-34px 0 0 -17px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--pri);border:2px solid #fff;overflow:hidden;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.4)}
.map .mk img{width:140%;height:140%;object-fit:cover;transform:rotate(45deg) translate(-12%,-12%)}
.map .zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px;z-index:3}
.map .attr{position:absolute;right:4px;bottom:2px;font-size:10px;background:rgba(255,255,255,.8);color:#333;padding:0 4px}
/* selection bar */
.selbar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);background:var(--card);border:1px solid var(--line);box-shadow:var(--sh);border-radius:16px;padding:8px 12px;display:flex;gap:8px;align-items:center;z-index:40;max-width:96vw;overflow-x:auto}
.selbar b{padding:0 8px;white-space:nowrap}
/* viewer */
.vw{position:fixed;inset:0;background:rgba(5,6,14,.97);z-index:100;display:flex;flex-direction:column;color:#fff}
.vw-top{display:flex;align-items:center;gap:8px;padding:10px 14px;background:linear-gradient(#000a,transparent);z-index:3}
.vw-top .t{flex:1;min-width:0}.vw-top .t b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vw-top .t small{color:#aab}
.vw-top .btn{background:rgba(255,255,255,.1);border:0;color:#fff}
.vw-stage{flex:1;position:relative;display:grid;place-items:center;overflow:hidden;touch-action:pan-y}
.vw-stage img,.vw-stage video{max-width:100%;max-height:100%;object-fit:contain;user-select:none}
.vw-stage .nav{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:70px;border:0;background:rgba(255,255,255,.08);color:#fff;cursor:pointer;border-radius:10px;z-index:2}
.vw-stage .nav.l{left:8px}.vw-stage .nav.r{right:8px}
.vw-info{position:absolute;right:0;top:0;bottom:0;width:min(340px,92vw);background:var(--card);color:var(--txt);padding:16px;overflow-y:auto;z-index:4;border-left:1px solid var(--line)}
.vw-info dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0}.vw-info dt{color:var(--mut)}.vw-info dd{margin:0;word-break:break-word}
.vw-cv{width:100%;height:100%;touch-action:none;cursor:grab}
.cmp{position:relative;width:min(92vw,1100px);aspect-ratio:16/10;overflow:hidden;background:#000;user-select:none;touch-action:none}
.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.cmp .top{clip-path:inset(0 50% 0 0)}
.cmp .bar{position:absolute;top:0;bottom:0;left:50%;width:4px;background:#fff;cursor:ew-resize;box-shadow:0 0 8px #000}
.cmp .bar::after{content:"↔";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:36px;height:36px;border-radius:50%;background:#fff;color:#000;display:grid;place-items:center}
/* modal / toast */
.ov{position:fixed;inset:0;background:rgba(5,6,14,.7);backdrop-filter:blur(4px);z-index:110;display:grid;place-items:center;padding:14px;overflow-y:auto}
.modal{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh);width:min(560px,100%);max-height:94vh;display:flex;flex-direction:column}
.modal.lg{width:min(860px,100%)}
.modal>header{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line)}
.modal>header h3{margin:0;flex:1;font-size:1.1rem}
.modal>.body{padding:20px;overflow-y:auto}
.modal>footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line);flex-wrap:wrap}
#toasts{position:fixed;right:16px;bottom:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:calc(100vw - 32px)}
.toast{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--pri);border-radius:12px;padding:12px 16px;box-shadow:var(--sh);animation:up .25s}
.toast.ok{border-left-color:var(--ok)}.toast.err{border-left-color:var(--bad)}
@keyframes up{from{transform:translateY(12px);opacity:0}}
/* upload */
.drop{border:2px dashed var(--line);border-radius:var(--r);padding:38px 18px;text-align:center;background:var(--card);cursor:pointer;transition:.2s}
.drop.over{border-color:var(--pri2);background:var(--card2)}
.drop .big{font-size:2.6rem}
.uq{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.ui{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.ui img,.ui .ph{width:54px;height:54px;border-radius:8px;object-fit:cover;background:var(--card2);display:grid;place-items:center;flex:none}
.ui .meta{flex:1;min-width:0}.ui .meta b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui small{color:var(--mut)}
.bar{height:6px;border-radius:5px;background:var(--card2);overflow:hidden;margin-top:5px}.bar i{display:block;height:100%;width:0;background:var(--grad);transition:width .2s}
.st-ok{color:var(--ok)}.st-err{color:var(--bad)}.st-dup{color:var(--warn)}
.cam{background:#000;border-radius:var(--r);overflow:hidden;position:relative;aspect-ratio:4/3;display:grid;place-items:center}
.cam video,.cam img{width:100%;height:100%;object-fit:contain;background:#000}
.cam .ctl{position:absolute;left:0;right:0;bottom:12px;display:flex;justify-content:center;gap:14px;align-items:center}
.shutter{width:68px;height:68px;border-radius:50%;border:5px solid #fff;background:rgba(255,255,255,.25);cursor:pointer}
.shutter.rec{background:#ef4444}
.rectime{position:absolute;top:10px;left:10px;background:#ef4444;color:#fff;border-radius:20px;padding:2px 10px;font-weight:700}
/* wizard */
.wz{width:min(780px,100%)}
.wz .pic{aspect-ratio:16/9;background:#0f1222 center/cover no-repeat;border-radius:14px;margin-bottom:16px;position:relative}
.wz .dots{display:flex;gap:6px;justify-content:center;margin:14px 0}.wz .dots i{width:8px;height:8px;border-radius:50%;background:var(--line)}.wz .dots i.on{background:var(--pri);width:24px;border-radius:6px}
.wz ul{padding-left:20px;color:var(--mut)}
.hl{outline:3px solid var(--pri2)!important;outline-offset:3px;animation:pulse 1.2s infinite}
@keyframes pulse{50%{outline-color:transparent}}
/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(900px 500px at 10% 0%,#3b2a8f55,transparent),radial-gradient(800px 500px at 100% 100%,#0e7490aa,transparent),var(--bg)}
.login .card{width:min(400px,100%);padding:30px}.login h1{margin:0 0 4px;font-size:1.6rem}
.err{color:var(--bad);font-size:.88rem}
/* share page */
.share-body{background:var(--bg)}.share-wrap{max-width:1100px;margin:0 auto;padding:22px}
.share-card{max-width:380px;margin:12vh auto;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px;text-align:center;display:flex;flex-direction:column;gap:14px}
.share-head h1{margin:0 0 6px}.share-head p{color:var(--mut)}
.share-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin-top:18px}
.share-item{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--card2);display:block}
.share-item img{width:100%;height:100%;object-fit:cover}.share-item .noimg{display:grid;place-items:center;height:100%;font-size:2rem}
.share-item .play{position:absolute;inset:auto 6px 6px auto;background:rgba(0,0,0,.6);color:#fff;border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font-size:.8rem}
.share-foot{text-align:center;color:var(--mut);margin-top:30px;font-size:.8rem}
.dash-recent{margin-top:18px}
.prog{height:8px;background:var(--card2);border-radius:5px;overflow:hidden}.prog i{display:block;height:100%;background:var(--grad)}
.cat-card{position:relative;overflow:hidden;cursor:pointer;padding:0}
.cat-card .cv{height:120px;background:var(--card2) center/cover}
.cat-card .bd{padding:14px 16px}
.cat-card .dot{position:absolute;left:14px;top:96px;width:44px;height:44px;border-radius:13px;display:grid;place-items:center;color:#fff;box-shadow:var(--sh)}
.cat-card h4{margin:20px 0 2px}
.spinner{width:26px;height:26px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--pri);animation:sp .8s linear infinite;margin:30px auto}
@keyframes sp{to{transform:rotate(360deg)}}
/* responsive */
@media(max-width:860px){
 .side{transform:translateX(-100%);transition:.25s;width:270px}.side.open{transform:none;box-shadow:var(--sh)}
 .main{margin-left:0}.burger{display:inline-flex}.content{padding:14px 12px 90px}.top{padding:10px 12px}
 .tiles{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.tl-rail{display:none}
 .vw-stage .nav{width:38px;height:56px}.hide-m{display:none}
 .modal{border-radius:18px 18px 0 0;align-self:end}.ov{align-items:end;padding:0}
 .map{height:60vh}
}
@media print{.side,.top,.selbar{display:none}.main{margin:0}}
