:root{
  --ink:#0c0a08;
  --desk:#17120e;
  --desk-2:#211a14;
  --lamp:#e9a23b;
  --lamp-dim:#8a5d1d;
  --seal:#a12b22;
  --seal-dark:#6f1b15;
  --paper:#e8dcc0;
  --paper-2:#d3c4a0;
  --type:#2b2118;
  --smoke:#9a8f7e;
  --ok:#6fae7c;
  --mx:50%;--my:20%;
  --serif:'Cormorant Garamond','Iowan Old Style',Georgia,serif;
  --typew:'Special Elite','Courier New',monospace;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:var(--ink);color:var(--paper);font-family:var(--serif);font-size:19px;line-height:1.5}
body{
  background:
    radial-gradient(120% 80% at 50% 0%,#2a1f15 0%,var(--ink) 65%);
  min-height:100vh;
}
/* torcia che segue il dito / mouse */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:50;
  background:radial-gradient(circle 300px at var(--mx) var(--my),transparent 0,rgba(0,0,0,.62) 100%);
}
/* grana della pellicola */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:51;opacity:.09;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
#app{position:relative;z-index:1;max-width:480px;margin:0 auto;min-height:100vh;padding:0 0 60px}
.screen{animation:enter .7s ease both}
@keyframes enter{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:none}}

h1,h2,h3{font-family:var(--serif);font-weight:700;margin:0;line-height:1.05;letter-spacing:.01em}
h1{font-size:2.6rem}
h2{font-size:1.7rem}
h3{font-size:1.25rem}
p{margin:0 0 .8em}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
:focus-visible{outline:2px solid var(--lamp);outline-offset:3px}
.typew{font-family:var(--typew);font-size:.95rem;line-height:1.65}
.muted{color:var(--smoke)}
.center{text-align:center}
.pad{padding:0 22px}

/* ---------- HUD ---------- */
.hud{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  padding:12px 18px;background:linear-gradient(#0c0a08 60%,transparent);}
.hud button{font-size:.95rem;color:var(--lamp);padding:6px 2px}
.clock{font-family:var(--typew);font-size:1.05rem;color:var(--paper);letter-spacing:.08em;
  padding:4px 12px;border:1px solid var(--lamp-dim);border-radius:2px;background:#0c0a08}
.clock.urgent{color:#ff6b57;border-color:var(--seal);animation:pulse 1s infinite}
.clock.over{color:#ff6b57;border-color:var(--seal)}
@keyframes pulse{50%{box-shadow:0 0 14px rgba(161,43,34,.8)}}

/* ---------- HOME ---------- */
.hero{position:relative;min-height:62vh;display:flex;align-items:flex-end;padding:28px 22px;
  background:linear-gradient(transparent 20%,var(--ink) 96%),var(--bg) center/cover,#1a1410}
.hero h1{font-size:3.1rem;text-shadow:0 2px 20px #000}
.hero .lead{font-size:1.15rem;color:var(--paper-2);margin-top:10px;max-width:22ch}
.folder{position:relative;margin:8px 20px 0;padding:18px;background:var(--paper);color:var(--type);
  border-radius:3px 14px 3px 3px;box-shadow:0 18px 40px rgba(0,0,0,.6);transform:rotate(-.6deg)}
.folder::before{content:"";position:absolute;top:-14px;left:0;width:46%;height:16px;background:var(--paper);border-radius:8px 8px 0 0}
.folder .cover{height:150px;margin:-4px -4px 14px;background:#2a2119 center/cover;filter:sepia(.5) contrast(1.05)}
.folder h2{font-size:1.9rem}
.folder .meta{font-family:var(--typew);font-size:.82rem;color:#5b4a37;margin:8px 0 14px}
.stamp{display:inline-block;font-family:var(--typew);font-size:.85rem;color:var(--seal);border:2px solid var(--seal);
  padding:2px 10px;transform:rotate(-4deg);border-radius:3px;opacity:.9}
.stamp.ok{color:#2f6d40;border-color:#2f6d40}

/* ---------- BOTTONI ---------- */
.btn{display:block;width:100%;padding:14px 18px;border-radius:3px;font-family:var(--typew);font-size:1rem;text-align:center;
  background:var(--lamp);color:#1b1208;transition:transform .15s,background .2s}
.btn:active{transform:scale(.98)}
.btn.ghost{background:transparent;border:1px solid var(--lamp-dim);color:var(--lamp)}
.btn.dark{background:#1c150f;color:var(--paper);border:1px solid #3a2d20}
.btn[disabled]{opacity:.35;cursor:not-allowed}
.folder .btn{background:var(--type);color:var(--paper)}
.seal{display:grid;place-items:center;width:112px;height:112px;margin:26px auto;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#c4453a,var(--seal) 55%,var(--seal-dark));
  box-shadow:0 8px 24px rgba(0,0,0,.7),inset 0 -6px 12px rgba(0,0,0,.4);
  font-family:var(--typew);font-size:.95rem;color:#f3d6ce;text-align:center;line-height:1.2;padding:12px;
  transition:transform .2s}
.seal:active{transform:scale(.94)}
.seal[disabled]{filter:grayscale(1);opacity:.35}
.seal.pulse{animation:sealpulse 2.2s infinite}
@keyframes sealpulse{50%{box-shadow:0 8px 24px rgba(0,0,0,.7),0 0 0 14px rgba(161,43,34,.18)}}

/* ---------- INTRO ---------- */
.intro{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:40px 28px}
.intro p{font-family:var(--typew);font-size:1.02rem;line-height:1.7;min-height:1.7em;margin-bottom:1.1em}
.typing::after{content:"▍";color:var(--lamp);animation:blink .8s steps(2) infinite}
@keyframes blink{50%{opacity:0}}

/* ---------- SCANNER ---------- */
.scanner{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px}
.rings{position:relative;width:170px;height:170px;display:grid;place-items:center}
.rings i{position:absolute;inset:0;border:2px solid var(--lamp);border-radius:50%;opacity:0;animation:ring 1.8s infinite}
.rings i:nth-child(2){animation-delay:.6s}
.rings i:nth-child(3){animation-delay:1.2s}
@keyframes ring{0%{transform:scale(.3);opacity:.9}100%{transform:scale(1.25);opacity:0}}
.rings .chip{font-size:2.6rem;color:var(--lamp);text-shadow:0 0 22px var(--lamp)}

/* ---------- POLAROID / REVEAL ---------- */
.polaroid{position:relative;margin:0 auto;background:var(--paper);padding:10px 10px 44px;width:min(86%,340px);
  box-shadow:0 20px 40px rgba(0,0,0,.65);transform:rotate(-1.6deg)}
.polaroid::before{content:"";position:absolute;top:-12px;left:50%;width:90px;height:24px;margin-left:-45px;
  background:rgba(233,162,59,.55);transform:rotate(2deg)}
.polaroid .ph{aspect-ratio:4/3;background:#2a2119 center/cover;overflow:hidden}
.polaroid img{width:100%;height:100%;object-fit:cover;display:block}
.polaroid figcaption{position:absolute;left:0;right:0;bottom:10px;text-align:center;font-family:var(--typew);font-size:.85rem;color:var(--type);padding:0 8px}
.develop img{animation:develop 2.6s ease-out both}
@keyframes develop{0%{filter:brightness(0) blur(8px) sepia(1)}60%{filter:brightness(.6) blur(3px) sepia(.8)}100%{filter:sepia(.3) contrast(1.05)}}
.reveal{padding:10px 24px 30px}
.reveal .badge{display:inline-block;font-family:var(--typew);font-size:.8rem;color:var(--lamp);border:1px solid var(--lamp-dim);padding:2px 10px;border-radius:2px;margin:26px 0 12px}
.reveal h1{font-size:2.3rem;margin-bottom:14px}
.reveal .body{font-family:var(--typew);font-size:.98rem;line-height:1.75;color:var(--paper)}
.note{margin:18px 0;padding:14px 16px;background:var(--paper);color:var(--type);font-family:var(--typew);font-size:.9rem;
  border-left:5px solid var(--lamp);transform:rotate(.4deg);animation:enter .8s ease both}
.stamp-new{position:absolute;right:-4px;top:38%;z-index:3;font-size:1rem;animation:slam .5s .8s cubic-bezier(.2,2,.4,1) both}
@keyframes slam{from{transform:rotate(-4deg) scale(2.6);opacity:0}to{transform:rotate(-8deg) scale(1);opacity:.95}}

/* ---------- SERRATURA ---------- */
.lockscreen{padding:10px 24px 30px;text-align:center}
.lockicon{font-size:4rem;margin:40px 0 10px}
.shake{animation:shake .5s}
@keyframes shake{20%{transform:translateX(-10px)}40%{transform:translateX(10px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}}
.cells{display:flex;gap:10px;justify-content:center;margin:22px 0}
.cell{width:52px;height:66px;display:grid;place-items:center;font-family:var(--typew);font-size:2rem;color:var(--lamp);
  background:#0c0a08;border:2px solid var(--lamp-dim);border-radius:4px;box-shadow:inset 0 0 14px #000}
.cell.on{border-color:var(--lamp)}
.cells.good .cell{border-color:var(--ok);color:var(--ok);box-shadow:0 0 18px rgba(111,174,124,.5)}
.cells.bad .cell{border-color:var(--seal);color:#ff6b57}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:270px;margin:0 auto}
.key{aspect-ratio:1.25;font-family:var(--typew);font-size:1.5rem;color:var(--lamp);background:linear-gradient(#2c2218,#1a130d);
  border:1px solid #4a3822;border-radius:6px;box-shadow:0 4px 0 #0a0705}
.key:active{transform:translateY(3px);box-shadow:0 1px 0 #0a0705;background:var(--lamp-dim)}
.key.go{background:linear-gradient(#3b7a4c,#28553a);color:#fff}
.key.del{background:linear-gradient(#8a2c24,#5e1c17);color:#fff}
.msg{min-height:1.6em;font-family:var(--typew);font-size:.9rem;margin-top:16px}

/* ---------- FASCICOLO ---------- */
.board h1{padding:6px 22px 0}
.board .sub{padding:0 22px;color:var(--smoke);font-style:italic}
.section{margin-top:30px}
.section>h3{padding:0 22px;margin-bottom:14px}
.progress{display:flex;gap:8px;padding:12px 22px 0}
.progress i{flex:1;height:5px;background:#2b2118;border-radius:3px}
.progress i.on{background:var(--lamp);box-shadow:0 0 10px var(--lamp)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 16px;padding:8px 22px}
.grid .polaroid{width:100%;padding:7px 7px 34px;cursor:pointer}
.grid .polaroid figcaption{font-size:.72rem;bottom:8px}
.grid .polaroid::before{width:60px;margin-left:-30px;height:18px;top:-9px}
.grid .polaroid:nth-child(2n){transform:rotate(1.8deg)}
.grid .polaroid:nth-child(3n){transform:rotate(-.6deg)}
.slot{aspect-ratio:1/1.08;border:2px dashed #3d2f21;border-radius:4px;display:grid;place-items:center;text-align:center;
  color:#5a4a38;font-family:var(--typew);font-size:.75rem;padding:8px}
.slot b{display:block;font-family:var(--serif);font-size:2.4rem;color:#3d2f21;line-height:1}
.notes{padding:0 22px;display:grid;gap:10px}
.notes .note{margin:0}
.suspects{display:flex;gap:14px;overflow-x:auto;padding:4px 22px 16px;scroll-snap-type:x mandatory}
.sus{flex:0 0 150px;scroll-snap-align:start;background:var(--desk-2);border:1px solid #3a2d20;border-radius:3px;overflow:hidden;text-align:left}
.sus .ph{height:150px;background:#2a2119 center/cover;filter:grayscale(1) contrast(1.1)}
.sus div.t{padding:9px 11px 12px}
.sus b{display:block;font-size:1.05rem;line-height:1.1}
.sus span{font-family:var(--typew);font-size:.72rem;color:var(--smoke)}
.actions{padding:26px 22px 0;display:grid;gap:12px}
.hints{padding:0 22px;margin-top:12px;display:grid;gap:8px}
.hints p{font-family:var(--typew);font-size:.85rem;color:var(--lamp);margin:0;padding-left:12px;border-left:2px solid var(--lamp-dim)}

/* ---------- ACCUSA ---------- */
.accuse-list{display:grid;gap:12px;padding:8px 22px}
.pick{display:flex;gap:14px;align-items:center;width:100%;text-align:left;padding:10px;background:var(--desk-2);border:2px solid #3a2d20;border-radius:4px;transition:border-color .2s,background .2s}
.pick .ph{flex:0 0 68px;height:68px;border-radius:50%;background:#2a2119 center/cover;filter:grayscale(1)}
.pick b{font-size:1.25rem;display:block;line-height:1.1}
.pick span{font-family:var(--typew);font-size:.75rem;color:var(--smoke)}
.pick.sel{border-color:var(--seal);background:#2a1512}
.pick.sel .ph{filter:none}
.verdict{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:40px 28px;text-align:center}
.heart{width:16px;height:16px;margin:0 auto 30px;border-radius:50%;background:var(--seal);animation:beat .9s infinite}
@keyframes beat{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(161,43,34,.6)}20%{transform:scale(2.2);box-shadow:0 0 0 24px rgba(161,43,34,0)}40%{transform:scale(1.4)}}
.stars{font-size:2.2rem;color:var(--lamp);letter-spacing:.2em;margin:10px 0}
.stats{display:flex;justify-content:center;gap:24px;font-family:var(--typew);font-size:.8rem;color:var(--smoke);margin:8px 0 26px}
.stats b{display:block;font-size:1.3rem;color:var(--paper)}

/* ---------- STANZA 3D ---------- */
.room3d{padding:8px 0 20px}
.pano{position:relative;margin:0 22px;border-radius:4px;overflow:hidden;border:1px solid #3a2d20;
  box-shadow:0 14px 30px rgba(0,0,0,.6);aspect-ratio:4/5;background:#1a1410}
.pano-img{width:100%;height:100%;background-position:center;background-size:cover;filter:saturate(.85) contrast(1.05)}
.pano .hot{position:absolute;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;
  background:rgba(233,162,59,.22);border:2px solid var(--lamp);font-size:1.2rem;display:grid;place-items:center;
  animation:hotpulse 2s infinite}
@keyframes hotpulse{50%{box-shadow:0 0 0 8px rgba(233,162,59,.18)}}
.pnav{position:absolute;top:50%;margin-top:-22px;width:44px;height:44px;border-radius:50%;
  background:rgba(12,10,8,.6);color:var(--lamp);font-size:1.4rem;display:grid;place-items:center;
  border:1px solid var(--lamp-dim);backdrop-filter:blur(2px)}
.pnav.left{left:10px}.pnav.right{right:10px}
.pnav[disabled]{opacity:.25}

/* ---------- LENTE ---------- */
.zoomscreen{padding:8px 0 20px;text-align:center}
.lensbox{position:relative;margin:14px 22px;border-radius:50%;overflow:hidden;aspect-ratio:1/1;
  border:4px solid var(--lamp-dim);box-shadow:0 0 0 6px #0c0a08,0 14px 30px rgba(0,0,0,.7)}
.lens-img{width:100%;height:100%;background-position:center;background-size:cover}
.fog{position:absolute;inset:0;background:rgba(233,220,192,.92);backdrop-filter:blur(7px);transition:opacity .35s ease}
.lensbox .hot.spot{position:absolute;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;
  border:2px solid var(--lamp);box-shadow:0 0 16px var(--lamp);transition:opacity .4s;pointer-events:none}

/* ---------- INTERROGATORIO ---------- */
.interr .sus-head{display:flex;gap:13px;align-items:center;padding:14px 22px 0}
.interr .sus-head .ph{width:58px;height:58px;border-radius:50%;background:#2a2119 center/cover;flex:0 0 58px;filter:grayscale(.4)}
.interr .sus-head span{display:block;font-size:.78rem;margin-top:2px}
.bubble{margin:20px 22px;padding:14px 16px;background:var(--desk-2);border:1px solid #3a2d20;
  border-radius:4px 12px 12px 12px;min-height:1.75em}
.qopts{display:grid;gap:10px;padding:4px 22px 0;transition:opacity .6s}

/* ---------- MODAL ---------- */
.modal{position:fixed;inset:0;z-index:60;background:rgba(6,4,3,.88);display:grid;place-items:center;padding:24px;animation:enter .3s both}
.modal .card{background:var(--paper);color:var(--type);max-width:380px;width:100%;padding:24px;border-radius:3px;box-shadow:0 20px 60px #000}
.modal .card h3{font-size:1.6rem;margin-bottom:6px}
.modal .card .typew{margin-bottom:18px}
.modal .btn{background:var(--type);color:var(--paper)}

/* ---------- DEBUG ---------- */
.debug{margin:30px 20px;padding:14px;border:1px dashed var(--lamp-dim);border-radius:4px;font-family:var(--typew);font-size:.75rem}
.debug h3{font-family:var(--typew);font-size:.9rem;color:var(--lamp);margin-bottom:10px}
.debug .row{display:flex;gap:8px;align-items:center;margin:6px 0}
.debug code{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--smoke)}
.debug button{padding:4px 8px;border:1px solid var(--lamp-dim);color:var(--lamp);border-radius:3px}
.tiny{display:block;margin:26px auto 0;font-family:var(--typew);font-size:.75rem;color:#5a4a38;text-decoration:underline}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}
}
