/* ===========================================================
   FotoStudio — foglio di stile unico (admin + galleria cliente)
   =========================================================== */
:root{
  --bg:#0e0f11; --bg-2:#16181c; --bg-3:#1e2126; --line:#2a2e35;
  --txt:#eceef1; --txt-2:#a6adb8; --txt-3:#6f7783;
  --accent:#c8a26a; --accent-2:#e0bd88; --accent-ink:#1a1408;
  --ok:#4ea87b; --warn:#d99b3d; --err:#d2635c;
  --radius:14px; --radius-sm:9px;
  --shadow:0 10px 30px rgba(0,0,0,.45);
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--txt); font-family:var(--sans);
  font-size:15px; line-height:1.55; -webkit-font-smoothing:antialiased;
}
a{color:var(--accent-2); text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .5rem; font-weight:600; letter-spacing:-.01em}
h1{font-size:1.6rem} h2{font-size:1.15rem} h3{font-size:1rem}
.serif{font-family:var(--serif)}
.muted{color:var(--txt-2)} .dim{color:var(--txt-3); font-size:.85rem}
.center{text-align:center}
hr{border:0;border-top:1px solid var(--line);margin:1.5rem 0}

/* ---------- layout ---------- */
.wrap{max-width:1240px;margin:0 auto;padding:0 20px}
.topbar{
  position:sticky;top:0;z-index:50;background:rgba(14,15,17,.92);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line);
}
.topbar .wrap{display:flex;align-items:center;gap:26px;height:60px}
.brand{font-family:var(--serif);font-size:1.2rem;color:var(--txt);letter-spacing:.02em}
.brand b{color:var(--accent)}
.nav{display:flex;gap:20px;margin-left:auto;align-items:center}
.nav a{color:var(--txt-2);font-size:.92rem}
.nav a.on,.nav a:hover{color:var(--txt);text-decoration:none}
main{padding:28px 0 80px}
.grid{display:grid;gap:16px}
.row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.spread{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}

/* ---------- superfici ---------- */
.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.card.tight{padding:14px}
.stat{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.stat .n{font-size:1.7rem;font-weight:600;font-family:var(--serif)}
.stat .l{color:var(--txt-3);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}

/* ---------- form ---------- */
label{display:block;font-size:.82rem;color:var(--txt-2);margin:0 0 5px;letter-spacing:.02em}
input[type=text],input[type=password],input[type=email],input[type=date],input[type=number],input[type=tel],select,textarea{
  width:100%;background:var(--bg-3);border:1px solid var(--line);color:var(--txt);
  border-radius:var(--radius-sm);padding:10px 12px;font:inherit;font-size:.93rem;transition:border-color .15s;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}
textarea{min-height:88px;resize:vertical}
.field{margin-bottom:14px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.check{display:flex;align-items:flex-start;gap:10px;margin:0 0 11px;cursor:pointer}
.check input{margin-top:3px;accent-color:var(--accent);width:16px;height:16px}
.check span{font-size:.9rem;color:var(--txt)}
.check small{display:block;color:var(--txt-3);font-size:.78rem}

.btn{
  display:inline-flex;align-items:center;gap:8px;justify-content:center;
  background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);
  padding:10px 18px;border-radius:var(--radius-sm);font:inherit;font-weight:600;font-size:.9rem;
  cursor:pointer;transition:.15s;text-decoration:none;
}
.btn:hover{background:var(--accent-2);text-decoration:none}
.btn.ghost{background:transparent;color:var(--txt);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--txt-3);background:var(--bg-3)}
.btn.danger{background:transparent;border-color:#5a3330;color:var(--err)}
.btn.danger:hover{background:#2a1a19}
.btn.sm{padding:6px 12px;font-size:.82rem}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* ---------- tabelle ---------- */
table{width:100%;border-collapse:collapse;font-size:.92rem}
th{text-align:left;color:var(--txt-3);font-weight:500;font-size:.76rem;
   text-transform:uppercase;letter-spacing:.07em;padding:0 12px 10px;border-bottom:1px solid var(--line)}
td{padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
.tag{display:inline-block;padding:3px 9px;border-radius:99px;font-size:.74rem;font-weight:600;
     background:var(--bg-3);color:var(--txt-2);border:1px solid var(--line)}
.tag.ok{color:var(--ok);border-color:#26493a;background:#12241c}
.tag.warn{color:var(--warn);border-color:#4b3a1c;background:#241d10}
.tag.err{color:var(--err);border-color:#4d2b28;background:#241615}
.tag.accent{color:var(--accent);border-color:#4a3c22;background:#241d10}

/* ---------- avvisi ---------- */
.alert{padding:12px 15px;border-radius:var(--radius-sm);border:1px solid;margin-bottom:16px;font-size:.9rem}
.alert.err{border-color:#4d2b28;background:#241615;color:#f0b3ae}
.alert.ok{border-color:#26493a;background:#12241c;color:#a9dcc2}
.alert.info{border-color:var(--line);background:var(--bg-3);color:var(--txt-2)}

/* ---------- tab ---------- */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:20px 0 22px;overflow-x:auto}
.tabs a{padding:10px 16px;color:var(--txt-2);border-bottom:2px solid transparent;white-space:nowrap;font-size:.92rem}
.tabs a.on{color:var(--txt);border-bottom-color:var(--accent)}
.tabs a:hover{text-decoration:none;color:var(--txt)}

/* ---------- griglia media ---------- */
.masonry{columns:4 240px;column-gap:12px}
.masonry .tile{break-inside:avoid;margin-bottom:12px}
.tile{position:relative;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-3);cursor:zoom-in}
.tile img{width:100%;display:block;transition:transform .5s cubic-bezier(.2,.7,.3,1);background:var(--bg-3)}
.tile:hover img{transform:scale(1.035)}
.tile .ov{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.55),transparent 45%);
          opacity:0;transition:opacity .2s;pointer-events:none}
.tile:hover .ov{opacity:1}
.tile .acts{position:absolute;left:8px;right:8px;bottom:8px;display:flex;gap:6px;align-items:center;
             opacity:0;transition:opacity .2s;justify-content:flex-end}
.tile:hover .acts,.tile.is-fav .acts{opacity:1}
.tile .name{position:absolute;left:10px;bottom:11px;font-size:.72rem;color:#fff;opacity:0;
            transition:opacity .2s;text-shadow:0 1px 3px rgba(0,0,0,.8);max-width:60%;
            overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile:hover .name{opacity:.9}
.iconbtn{width:34px;height:34px;border-radius:99px;border:1px solid rgba(255,255,255,.25);
         background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;
         cursor:pointer;backdrop-filter:blur(4px);transition:.15s;padding:0}
.iconbtn:hover{background:rgba(0,0,0,.8);transform:scale(1.08)}
.iconbtn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9}
.tile.is-fav .heart{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.tile.is-fav .heart svg{fill:currentColor}
.tile.has-note .note-dot{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.badge-video{position:absolute;top:9px;left:9px;background:rgba(0,0,0,.65);color:#fff;
             border-radius:99px;padding:3px 9px;font-size:.7rem;letter-spacing:.05em;backdrop-filter:blur(4px)}
.tile.sel{outline:2px solid var(--accent);outline-offset:-2px}

/* ---------- lightbox ---------- */
.lb{position:fixed;inset:0;background:rgba(8,9,10,.97);z-index:200;display:none;
    grid-template-columns:1fr 340px;backdrop-filter:blur(6px)}
.lb.open{display:grid}
@media(max-width:900px){.lb.open{display:flex;flex-direction:column}}
.lb-stage{position:relative;display:flex;align-items:center;justify-content:center;padding:24px;min-height:0}
.lb-stage img,.lb-stage video{max-width:100%;max-height:calc(100vh - 48px);object-fit:contain;border-radius:6px;
  box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lb-side{background:var(--bg-2);border-left:1px solid var(--line);padding:22px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}
@media(max-width:900px){.lb-side{border-left:0;border-top:1px solid var(--line);max-height:45vh}}
.lb-close{position:absolute;top:16px;right:16px;z-index:3}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:46px;height:46px}
.lb-nav.prev{left:14px} .lb-nav.next{right:14px}
.lb-counter{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);color:var(--txt-3);font-size:.8rem}

/* ---------- barra selezione cliente ---------- */
.selbar{position:fixed;left:0;right:0;bottom:0;z-index:100;background:rgba(22,24,28,.97);
        border-top:1px solid var(--line);backdrop-filter:blur(12px);box-shadow:0 -8px 30px rgba(0,0,0,.4)}
.selbar .wrap{display:flex;align-items:center;gap:16px;height:66px}
.selbar .count{font-family:var(--serif);font-size:1.15rem}
.selbar .count b{color:var(--accent)}

/* ---------- copertina galleria cliente ---------- */
.cover{position:relative;height:52vh;min-height:320px;display:flex;align-items:flex-end;
       background:var(--bg-3) center/cover no-repeat;border-bottom:1px solid var(--line)}
.cover::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,11,12,.92),rgba(10,11,12,.25) 60%)}
.cover .wrap{position:relative;z-index:2;padding-bottom:34px;width:100%}
.cover h1{font-family:var(--serif);font-size:clamp(1.9rem,4.5vw,3.1rem);margin-bottom:8px;font-weight:400}
.cover .sub{color:var(--txt-2);font-size:1rem;max-width:620px}
.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.72rem;color:var(--accent);margin-bottom:12px}

/* ---------- carrello stampe ---------- */
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(430px,100%);background:var(--bg-2);
        border-left:1px solid var(--line);z-index:300;transform:translateX(100%);
        transition:transform .28s cubic-bezier(.2,.7,.3,1);display:flex;flex-direction:column;box-shadow:var(--shadow)}
.drawer.open{transform:none}
.drawer header{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.drawer .body{flex:1;overflow-y:auto;padding:18px 22px}
.drawer footer{padding:18px 22px;border-top:1px solid var(--line);background:var(--bg-3)}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:290;opacity:0;pointer-events:none;transition:opacity .25s}
.scrim.on{opacity:1;pointer-events:auto}
.cart-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:center}
.cart-item img{width:56px;height:56px;object-fit:cover;border-radius:6px;flex:0 0 auto}
.cart-item .t{flex:1;min-width:0;font-size:.88rem}
.cart-item .t small{display:block;color:var(--txt-3)}
.qty{width:56px;text-align:center}
.total{display:flex;justify-content:space-between;font-family:var(--serif);font-size:1.25rem;margin-bottom:14px}

/* ---------- dropzone upload ---------- */
.dz{border:1.5px dashed var(--line);border-radius:var(--radius);padding:34px;text-align:center;
    color:var(--txt-2);transition:.2s;cursor:pointer;background:var(--bg-2)}
.dz.hot{border-color:var(--accent);background:#1c1a15;color:var(--txt)}
.progress{height:5px;background:var(--bg-3);border-radius:99px;overflow:hidden;margin-top:14px}
.progress i{display:block;height:100%;width:0;background:var(--accent);transition:width .25s}

/* ---------- pagine centrate (login/password) ---------- */
.centerpage{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.centerpage .card{width:100%;max-width:400px}

.empty{text-align:center;padding:54px 20px;color:var(--txt-3)}
.empty svg{width:42px;height:42px;stroke:currentColor;fill:none;stroke-width:1.2;margin-bottom:12px;opacity:.6}

/* ---------- logo dello studio ---------- */
.logo{max-height:46px;width:auto;max-width:270px;object-fit:contain;display:block}
.logo-big{max-height:none;width:100%;max-width:330px;margin:0 auto 18px}
@media(max-width:760px){.logo{max-height:34px;max-width:180px}}

/* [hidden] deve vincere sugli elementi con display esplicito */
[hidden]{display:none !important}
.qty{flex:0 0 56px}

/* Su schermi touch non esiste il passaggio del mouse: i comandi restano visibili */
@media (hover:none){
  .tile .acts{opacity:1}
  .tile .name{opacity:.85}
}

@media(max-width:760px){
  .field-row{grid-template-columns:1fr}
  .grid[style*="1fr 1fr"],.grid[style*="2fr 1fr"]{grid-template-columns:1fr !important}
  .masonry{columns:2 150px;column-gap:8px}
  .masonry .tile{margin-bottom:8px}
  .topbar .wrap{height:54px;gap:10px;overflow-x:auto;scrollbar-width:none}
  .topbar .wrap::-webkit-scrollbar{display:none}
  .brand{font-size:.98rem;white-space:nowrap}
  .nav{gap:14px} .nav a{font-size:.84rem;white-space:nowrap}
  .cover{height:44vh;min-height:260px}
  .selbar .wrap{height:auto;padding-top:10px;padding-bottom:10px;gap:10px}
  .selbar .count{font-size:.98rem;white-space:nowrap}
  .selbar .btn{padding:8px 12px;font-size:.82rem}
  .lb-side{padding:16px}
  table{font-size:.86rem} td,th{padding-left:8px;padding-right:8px}
}
@media(max-width:420px){
  .brand{display:none}
  .selbar .btn.ghost{display:none}
}
