:root{
  --ink:#1a1712; --ink-soft:#6a6459; --ink-mute:#9a9488; --ink-fade:#b7b1a4;
  --paper:#fbf9f4; --paper-2:#f7f3eb; --card:#dcd6ca; --card-2:#eae5da; --card-3:#e2ddd2;
  --hairline:rgba(26,23,18,.12); --rule:rgba(26,23,18,.08);
  --card-aspect:1 / 1;
  --card-ratio:1;
  --sans:'Hanken Grotesk',system-ui,sans-serif;
  --display:'Bricolage Grotesque',var(--sans);
  --serif:'Instrument Serif',Georgia,serif;
}
*{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;background:var(--paper-2);color:var(--ink);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;overflow:hidden;
}
.ambient-background{position:fixed;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;}

.paper-frame{
  position:relative;width:100vw;height:100vh;height:100svh;
  border-radius:0;overflow:hidden;
}
.paper-ground{position:absolute;inset:0;background:url('./paper.avif') center/cover no-repeat;background-color:var(--paper-2);}
.paper-wash{position:absolute;inset:0;background:linear-gradient(180deg,rgba(247,243,235,.72),rgba(247,243,235,.82));}

.stage{
  position:relative;height:100%;padding:clamp(24px,3vw,44px);display:grid;
  grid-template-columns:minmax(300px,340px) 1fr;gap:clamp(24px,3vw,40px);min-height:0;
}
.interface-panel{display:flex;flex-direction:column;min-height:0;overflow-y:auto;scrollbar-width:none;}
.interface-panel::-webkit-scrollbar{display:none;}

.site-title{
  margin:0;font-family:var(--display);font-weight:700;
  font-size:clamp(30px,2.9vw,44px);letter-spacing:-.02em;line-height:1.05;
  white-space:nowrap;
}
.site-subtitle{margin:12px 0 20px;font-size:15px;line-height:1.5;color:var(--ink-soft);}

.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:10px;}
.eyebrow.strong{font-size:13px;letter-spacing:.14em;font-weight:600;color:var(--ink);margin:0;}

.piece-selector{display:flex;gap:8px;margin-bottom:20px;}
.piece-chip{
  flex:1;padding:12px 6px;border-radius:12px;border:1px solid var(--hairline);
  background:rgba(255,255,255,.85);font-family:var(--sans);font-weight:500;font-size:14px;
  color:var(--ink);cursor:pointer;transition:background .18s,color .18s,transform .12s;
}
.piece-chip:hover{transform:translateY(-1px);}
.piece-chip[aria-selected="true"]{background:var(--ink);color:#fff;font-weight:600;border-color:var(--ink);}

.camera-panel{
  position:relative;flex:1 1 auto;min-height:190px;border-radius:16px;overflow:hidden;
  background:var(--card);box-shadow:0 8px 24px rgba(0,0,0,.1);display:flex;
}
.camera-stage{position:absolute;inset:0;}
.webcam,.overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1);}
.camera-chrome{position:absolute;top:12px;left:12px;right:12px;z-index:3;display:flex;gap:6px;align-items:flex-start;}
.control-tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.control-tab{
  padding:5px 11px;border-radius:999px;font-family:var(--sans);font-size:12px;
  font-weight:500;line-height:1.2;cursor:pointer;width:auto;flex:0 0 auto;white-space:nowrap;
}
.control-tab .tab-icon{display:none;}
.control-tab{background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.7);color:var(--ink-soft);}
.control-tab[aria-selected="true"],.control-tab.is-active{
  background:#fff;color:var(--ink);font-weight:600;border-color:#fff;
  box-shadow:0 2px 8px rgba(0,0,0,.14);
}
.gesture-meter{position:absolute;left:12px;right:12px;bottom:-999px;}
.gesture-fill{display:block;height:2px;background:var(--ink);}
.status-text{
  position:absolute;left:12px;bottom:12px;z-index:3;font-family:ui-monospace,monospace;
  font-size:11px;color:var(--ink-soft);background:rgba(255,255,255,.9);
  padding:5px 10px;border-radius:12px;display:none;
}
.status-text.is-visible{display:block;}
.mode-instruction{display:none;}
.retry-button{
  position:absolute;right:12px;bottom:12px;z-index:3;padding:6px 12px;border-radius:12px;
  border:1px solid var(--hairline);background:#fff;font-family:var(--sans);font-size:12px;cursor:pointer;
}
.mode-instruction{margin:12px 0 0;font-size:13px;line-height:1.5;color:var(--ink-soft);}

.capture-button{
  margin-top:16px;width:100%;padding:15px;border:none;border-radius:14px;background:var(--ink);
  color:#fff;font-family:var(--sans);font-weight:600;font-size:15px;
  display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;
  transition:opacity .18s,transform .12s;
}
.capture-button:hover{transform:translateY(-1px);}
.capture-button:disabled{opacity:.4;cursor:not-allowed;transform:none;}

.community{margin-top:22px;padding-bottom:4px;}
.community-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px;}
.community-head .eyebrow{margin:0;}
.see-all{border:none;background:none;font-family:var(--sans);font-size:12px;color:var(--ink-soft);cursor:pointer;padding:0;}
.see-all:hover{color:var(--ink);}
.community-strip{display:flex;gap:10px;}
.thumb{
  width:62px;height:62px;border-radius:10px;border:1px solid var(--rule);cursor:pointer;
  background:repeating-linear-gradient(45deg,var(--card-3) 0 8px,var(--card-2) 8px 16px);
  background-size:cover;background-position:center;transition:border-color .18s,transform .12s;
  flex:none;
}
.thumb:hover{border-color:var(--ink);transform:translateY(-2px);}

.visual-panel{display:grid;grid-template-columns:1fr 84px;gap:14px;min-height:0;outline:none;overflow:visible;}
.card-region{position:relative;min-height:0;display:flex;align-items:center;justify-content:center;
  padding:16px 30px 8px 0;overflow:visible;}
.ghost-card{position:absolute;inset:0;border-radius:18px;background:rgba(255,255,255,.55);}
.ghost-one{transform:translate(10px,-6px);background:rgba(255,255,255,.78);border-radius:18px;}
.ghost-two{transform:translate(20px,-12px);border-radius:18px;}
.card-frame{
  /* sized from its height so the white card is exactly the video's shape -
     no letterboxing, nothing floating inside a wider box */
  position:relative;
  aspect-ratio:var(--card-ratio);
  height:100%;
  width:auto;
  max-width:100%;
  margin:auto;
}
/* height-capped so the card never overflows vertically */


.artwork-stack{
  position:absolute;inset:0;border-radius:18px;background:#fff;overflow:hidden;
  box-shadow:0 16px 40px rgba(0,0,0,.12);
}
.artwork-card{position:absolute;inset:0;border:none;padding:0;background:none;}
.artwork-card canvas{width:100%;height:100%;display:block;object-fit:contain;}

.artwork-switcher{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;}
.stack-arrow{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--hairline);
  background:rgba(255,255,255,.7);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
}
.stack-arrow svg{width:18px;height:18px;fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.stack-arrow:hover{background:#fff;}
.step-ladder{display:flex;flex-direction:column;align-items:center;gap:11px;}
.step-dot{
  width:42px;height:42px;border-radius:50%;border:1.5px solid var(--hairline);
  background:rgba(255,255,255,.6);color:var(--ink-fade);font-family:var(--sans);
  font-weight:600;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  padding:0;transition:all .2s;
}
.step-dot:hover{border-color:var(--ink);}
.step-dot.is-done{color:var(--ink);}
.step-dot.is-active{
  width:50px;height:50px;background:var(--ink);color:#fff;font-weight:700;font-size:17px;
  border-color:var(--ink);box-shadow:0 6px 16px rgba(26,23,18,.3);
}
.artwork-rail{
  width:4px;height:0;opacity:0;pointer-events:none;position:absolute;
}
.artwork-thumb{display:block;}

.gallery-overlay{position:absolute;inset:0;z-index:20;}
.gallery-scrim{position:absolute;inset:0;background:rgba(60,55,48,.42);backdrop-filter:blur(2px);}
.gallery-modal{
  position:absolute;top:36px;left:64px;right:132px;bottom:44px;background:var(--paper);
  border-radius:20px;box-shadow:0 40px 80px rgba(0,0,0,.32);display:flex;flex-direction:column;overflow:hidden;
}
.gallery-head{display:flex;align-items:center;justify-content:space-between;padding:24px 30px 18px;}
.gallery-close{
  width:34px;height:34px;border-radius:50%;border:none;background:none;cursor:pointer;
  font-size:18px;color:var(--ink);display:flex;align-items:center;justify-content:center;
}
.gallery-close:hover{background:rgba(26,23,18,.07);}
.gallery-grid{
  flex:1;overflow-y:auto;padding:6px 30px 30px;display:grid;
  grid-template-columns:repeat(5,1fr);gap:18px;align-content:start;
}
.gallery-empty{grid-column:1/-1;color:var(--ink-mute);font-size:14px;padding:40px 0;text-align:center;}
.gallery-tile{
  aspect-ratio:1;border-radius:13px;overflow:hidden;border:1px solid var(--rule);
  box-shadow:0 6px 16px rgba(0,0,0,.06);cursor:pointer;transition:transform .18s;
  background-size:cover;background-position:center;padding:0;
}
.gallery-tile:hover{transform:translateY(-3px);}

.toast{
  position:absolute;bottom:26px;left:50%;transform:translateX(-50%);z-index:40;
  background:var(--ink);color:#fff;font-size:13px;padding:10px 18px;border-radius:20px;
  box-shadow:0 10px 24px rgba(0,0,0,.25);
}
.gesture-cursor{position:fixed;width:14px;height:14px;border-radius:50%;background:var(--ink);opacity:0;pointer-events:none;z-index:50;}

@media (max-width:1080px){
  .paper-frame{width:100vw;height:100svh;border-radius:0;}
  .stage{grid-template-columns:1fr;grid-template-rows:auto 1fr;padding:22px;gap:20px;overflow-y:auto;}
  .visual-panel{grid-template-columns:1fr 62px;}
  .card-frame{height:auto;width:100%;}
  .camera-panel{position:fixed;right:14px;bottom:14px;width:150px;height:200px;z-index:30;flex:none;}
  .gallery-modal{top:16px;left:16px;right:78px;bottom:16px;}
  .gallery-grid{grid-template-columns:repeat(3,1fr);gap:12px;}
  .step-dot{width:34px;height:34px;font-size:13px;}
  .step-dot.is-active{width:40px;height:40px;font-size:15px;}
}

/* ---------- speed control ---------- */
.speed-row{display:flex;align-items:center;gap:10px;margin-top:12px;}
.speed-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);white-space:nowrap;}
.speed-range{
  flex:1;-webkit-appearance:none;appearance:none;height:3px;border-radius:2px;
  background:var(--hairline);outline:none;cursor:pointer;
}
.speed-range::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:15px;height:15px;border-radius:50%;
  background:var(--ink);cursor:pointer;border:2px solid var(--paper);
}
.speed-range::-moz-range-thumb{
  width:15px;height:15px;border-radius:50%;background:var(--ink);
  cursor:pointer;border:2px solid var(--paper);
}
.speed-out{
  font-family:ui-monospace,monospace;font-size:11px;color:var(--ink-soft);
  min-width:52px;text-align:right;
}

/* ---------- gallery cell + delete ---------- */
.gallery-cell{position:relative;}
.gallery-cell .gallery-tile{width:100%;display:block;}
.tile-delete{
  position:absolute;top:7px;right:7px;width:26px;height:26px;border-radius:50%;
  border:none;background:rgba(26,23,18,.82);color:#fff;font-size:13px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
  opacity:0;transform:scale(.85);transition:opacity .16s,transform .16s,background .16s;
}
.gallery-cell.is-mine:hover .tile-delete,
.tile-delete:focus-visible{opacity:1;transform:scale(1);}
.tile-delete:hover{background:#1a1712;}
.tile-delete:disabled{opacity:.5;cursor:wait;}
@media (hover:none){ .gallery-cell.is-mine .tile-delete{opacity:1;transform:scale(1);} }


/* ---------- capture countdown ---------- */
.countdown[hidden]{display:none !important;}
.countdown{
  position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-weight:700;font-size:88px;color:#fff;
  background:rgba(26,23,18,.34);text-shadow:0 4px 22px rgba(0,0,0,.4);
}
.countdown.pulse{animation:cdpop .5s ease-out;}
@keyframes cdpop{
  0%{transform:scale(.65);opacity:.2;}
  45%{transform:scale(1.06);opacity:1;}
  100%{transform:scale(1);opacity:1;}
}

.artwork-counter{display:none !important;}


/* ---------- step change fade ---------- */
.artwork-stack{transition:none;}
.card-frame.step-in .artwork-stack{animation:stepIn .46s ease-out;}
@keyframes stepIn{
  0%{opacity:0;transform:translateY(6px);}
  100%{opacity:1;transform:translateY(0);}
}

/* ---------- palm hold ring ---------- */
.hold-ring{
  position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:4;
  width:46px;height:46px;border-radius:50%;
  background:conic-gradient(#fff calc(var(--p,0) * 360deg), rgba(255,255,255,.22) 0);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(0,0,0,.28);
}
.hold-ring[hidden]{display:none !important;}
.hold-ring span{
  width:34px;height:34px;border-radius:50%;background:rgba(26,23,18,.72);
}

