/* NextStudio – interfaz del cliente (mobile first) */
:root{
  --brand:#1b2cff; --brand-d:#1220c9; --brand-l:#eceeff;
  --ink:#16181d; --muted:#667085; --line:#e4e7ec; --bg:#f5f6fa; --card:#fff;
  --ok:#12a150; --warn:#d97706; --bad:#d92d20; --r:14px;
  --shadow:0 1px 2px rgba(16,24,40,.06),0 4px 14px rgba(16,24,40,.06);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--brand);text-decoration:none}
img{max-width:100%;display:block}
.wrap{max-width:1180px;margin:0 auto;padding:0 14px}

/* top bar */
.topbar{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:12px;height:58px}
.topbar .logo img{height:36px;width:auto}
.topbar .sp{flex:1}
.topbar .who{font-size:14px;color:var(--muted);max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iconbtn{border:0;background:transparent;padding:8px 10px;border-radius:10px;font:inherit;color:var(--ink);cursor:pointer}
.iconbtn:hover{background:var(--bg)}

/* stepper */
.stepper{display:flex;gap:6px;margin:16px 0 6px;padding:0;list-style:none;counter-reset:s}
.stepper li{flex:1;counter-increment:s;font-size:12px;color:var(--muted);text-align:center}
.stepper li:before{content:counter(s);display:grid;place-items:center;width:28px;height:28px;margin:0 auto 4px;border-radius:50%;background:#e4e7ec;color:#475467;font-weight:700;font-size:13px}
.stepper li.done:before{background:var(--brand-l);color:var(--brand)}
.stepper li.on{color:var(--ink);font-weight:600}
.stepper li.on:before{background:var(--brand);color:#fff}
@media (max-width:560px){.stepper li span{display:none}.stepper li.on span{display:block}}

h1.title{font-size:22px;margin:14px 0 2px}
.sub{color:var(--muted);margin:0 0 14px;font-size:15px}

/* cards, buttons */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:16px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 20px;border:1px solid transparent;border-radius:12px;font:600 15px/1 inherit;font-family:inherit;cursor:pointer;background:var(--brand);color:#fff;text-decoration:none}
.btn:hover{background:var(--brand-d);color:#fff}
.btn.ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--bg)}
.btn.ok{background:var(--ok)}
.btn.sm{min-height:38px;padding:0 14px;font-size:14px}
.btn[disabled]{opacity:.45;pointer-events:none}
.badge{display:inline-block;padding:4px 10px;border-radius:99px;font-size:12px;font-weight:600;background:var(--brand-l);color:var(--brand)}
.badge.warn{background:#fff4e0;color:var(--warn)}.badge.ok{background:#e3f7ec;color:var(--ok)}

.alert{padding:12px 14px;border-radius:12px;margin:0 0 14px;font-size:15px;background:var(--brand-l);color:#1a237e}
.alert.err{background:#fde8e6;color:#8f1d14}
.alert ul{margin:6px 0 0 18px;padding:0}

/* orders list */
.orders{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:720px){.orders{grid-template-columns:1fr 1fr}}
.order .top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.order h3{margin:0;font-size:18px}
.order p{margin:0 0 12px;color:var(--muted);font-size:14px}
.order .acts{display:flex;gap:8px;flex-wrap:wrap}
.order .acts .btn{flex:1 1 140px}

/* photo grid */
.grid{display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}
@media (min-width:600px){.grid{grid-template-columns:repeat(3,1fr)}}
@media (min-width:900px){.grid{grid-template-columns:repeat(4,1fr);gap:14px}}
@media (min-width:1150px){.grid{grid-template-columns:repeat(5,1fr)}}
.ph{position:relative;background:#fff;border-radius:12px;overflow:hidden;box-shadow:var(--shadow);cursor:pointer;border:3px solid transparent;transition:border-color .12s, transform .12s;user-select:none;-webkit-user-select:none}
.ph .imgbox{aspect-ratio:4/3;background:#e9ebf0}
.ph img{width:100%;height:100%;object-fit:cover;-webkit-touch-callout:none;pointer-events:none}
.ph .name{padding:7px 9px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph .tick{position:absolute;top:8px;left:8px;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.9);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.3);display:grid;place-items:center;color:transparent;font-weight:800;font-size:16px}
.ph.sel{border-color:var(--brand)}
.ph.sel .tick{background:var(--brand);color:#fff}
.ph .zoom{position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:15px;cursor:zoom-in}
.ph .tags{position:absolute;left:6px;bottom:30px;display:flex;gap:4px;flex-wrap:wrap}
.ph .tags b{background:var(--brand);color:#fff;font-size:11px;padding:2px 7px;border-radius:99px}
.ph input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}

/* sticky action bar */
.spacer{height:96px}
.bar{position:fixed;left:0;right:0;bottom:0;z-index:25;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:10px 0 calc(10px + env(safe-area-inset-bottom))}
.bar .wrap{display:flex;align-items:center;gap:10px}
.bar .count{flex:1;font-size:14px;color:var(--muted)}
.bar .count b{display:block;font-size:18px;color:var(--ink)}
.bar .count.full b{color:var(--ok)}

/* size step */
.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scroll-snap-type:x proximity;scrollbar-width:thin}
.tab{flex:0 0 auto;scroll-snap-align:start;padding:10px 14px;border-radius:12px;background:#fff;border:2px solid var(--line);font:600 14px inherit;font-family:inherit;color:var(--ink);cursor:pointer;min-height:46px;text-align:left}
.tab small{display:block;font-weight:500;color:var(--muted);font-size:12px}
.tab.on{border-color:var(--brand);background:var(--brand-l)}
.sheet label{display:block;font-size:13px;font-weight:600;margin:0 0 4px;color:var(--muted)}
.sheet select,.sheet input[type=text],textarea{width:100%;min-height:46px;padding:10px 12px;border:1px solid #cfd4dc;border-radius:10px;font:inherit;background:#fff}
textarea{min-height:110px}
.fields{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:720px){.fields{grid-template-columns:1fr 2fr}}
.assigned{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;min-height:64px}
.assigned .empty{color:var(--muted);font-size:14px;padding:14px;border:2px dashed var(--line);border-radius:12px;width:100%;text-align:center}
.chip{position:relative;width:72px;height:72px;border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}
.chip img{width:100%;height:100%;object-fit:cover}
.chip button{position:absolute;top:2px;right:2px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:14px;line-height:1;cursor:pointer}
.hint{background:var(--brand-l);color:#1a237e;border-radius:12px;padding:10px 14px;margin:14px 0;font-size:14px}
.ref{cursor:zoom-in}

/* confirm */
.sum{margin-bottom:12px}
.sum h3{margin:0 0 4px;font-size:17px}
.sum .obs{margin:0 0 10px;color:var(--muted);font-size:14px}
.thumbs{display:flex;gap:8px;flex-wrap:wrap}
.thumbs img{width:76px;height:76px;object-fit:cover;border-radius:10px}

/* lightbox */
.lb{position:fixed;inset:0;z-index:100;background:rgba(10,12,18,.94);display:none;flex-direction:column;touch-action:pan-y}
.lb.open{display:flex}
.lb .stage{flex:1;display:grid;place-items:center;overflow:hidden;position:relative}
.lb img{max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.lb .hd{display:flex;align-items:center;gap:8px;color:#fff;padding:10px 12px;font-size:14px}
.lb .hd .sp{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb .nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:64px;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:26px;cursor:pointer;border-radius:10px}
.lb .nav.prev{left:8px}.lb .nav.next{right:8px}
.lb .ft{display:flex;justify-content:center;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom))}
@media (max-width:600px){.lb .nav{display:none}}

.toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);background:#101828;color:#fff;padding:10px 16px;border-radius:99px;font-size:14px;z-index:90;opacity:0;pointer-events:none;transition:opacity .2s}
.toast.show{opacity:1}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(160deg,#eef0ff,#f9fafc)}
.login .card{width:100%;max-width:400px;padding:28px 24px}
.login img.lg{height:54px;margin:0 auto 18px}
.login h1{font-size:21px;text-align:center;margin:0 0 18px}
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:5px}
.field input{width:100%;min-height:50px;padding:10px 14px;border:1px solid #cfd4dc;border-radius:12px;font:inherit;background:#fff}
.field input:focus,.sheet select:focus,textarea:focus,.sheet input:focus{outline:3px solid var(--brand-l);border-color:var(--brand)}
.err-t{color:var(--bad);font-size:13px;margin-top:4px}
.protect img{-webkit-user-drag:none}

/* ---------- Administración ---------- */
.adminnav{display:flex;gap:2px;overflow-x:auto;border-top:1px solid var(--line)}
.adminnav a{padding:12px 16px;font-weight:600;font-size:14px;color:var(--muted);border-bottom:3px solid transparent;white-space:nowrap}
.adminnav a.on{color:var(--brand);border-bottom-color:var(--brand)}
.pagehead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:16px 0 12px}
.pagehead h1{font-size:22px;margin:0}
.btn.danger{background:var(--bad)}.btn.danger:hover{background:#b42318}
.btn.warn{background:var(--warn)}
.tbl{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}
.tbl th{background:#f9fafb;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:12px 14px}
.tbl td{padding:12px 14px;border-top:1px solid var(--line);vertical-align:middle;font-size:15px}
.tbl .acts{display:flex;gap:6px;flex-wrap:wrap}
.tbl form{display:inline}
@media (max-width:760px){
  .tbl,.tbl tbody{display:block;background:transparent;box-shadow:none}
  .tbl thead{display:none}
  .tbl tr{display:block;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:12px;padding:6px 0}
  .tbl td{display:flex;justify-content:space-between;gap:12px;border-top:0;padding:8px 14px;text-align:right}
  .tbl td:before{content:attr(data-l);font-weight:600;color:var(--muted);text-align:left;flex:none}
  .tbl td.acts-td{display:block;text-align:left}.tbl td.acts-td:before{display:none}
}
.form{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:720px){.form.two{grid-template-columns:1fr 1fr}.form .full{grid-column:1/-1}}
.field select,.field textarea{width:100%;min-height:50px;padding:10px 14px;border:1px solid #cfd4dc;border-radius:12px;font:inherit;background:#fff}
.field select:focus{outline:3px solid var(--brand-l);border-color:var(--brand)}
.drop{border:2px dashed #b8bfd0;border-radius:var(--r);padding:26px 14px;text-align:center;background:#fff;cursor:pointer}
.drop.over{border-color:var(--brand);background:var(--brand-l)}
.drop input{display:none}
.uplist{display:grid;gap:8px;margin-top:12px}
.up{display:flex;align-items:center;gap:10px;background:#fff;border-radius:12px;padding:8px 10px;box-shadow:var(--shadow);font-size:14px}
.up img{width:44px;height:44px;object-fit:cover;border-radius:8px;background:#e9ebf0}
.up .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up .st{flex:none;font-weight:600;color:var(--muted)}.up .st.ok{color:var(--ok)}.up .st.bad{color:var(--bad)}
.pkgs{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:800px){.pkgs{grid-template-columns:1fr 1fr}}
.pkg h3{margin:0 0 4px}.pkg ol{margin:8px 0 0;padding-left:20px;font-size:14px;color:var(--muted)}
.ph .del{position:absolute;top:8px;right:8px}
.ph .del button{width:34px;height:34px;border-radius:50%;border:0;background:var(--bad);color:#fff;cursor:pointer;font-size:16px}
