/* DearGuest 2.0 — journey screens (J01–J14) shared editorial language.
   Built on --dg-* tokens; matches the master-landing treatment. */

/* ---- page shell ---- */
.jn-page{min-height:100vh;background:var(--dg-canvas);color:var(--dg-text);font-family:var(--dg-sans)}
.jn-shell{max-width:1180px;margin:0 auto;padding:calc(var(--dg-space-6) + 12px) var(--dg-space-4) var(--dg-space-6)}
.jn-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--dg-space-4);flex-wrap:wrap;margin-bottom:var(--dg-space-5)}
.jn-kicker{font-size:11.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--dg-action);font-weight:700;margin:0 0 10px}
.jn-head h1{font-family:var(--dg-serif);font-weight:400;font-size:clamp(34px,4.6vw,56px);line-height:1.05;margin:0}
.jn-sub{color:var(--dg-muted);max-width:52ch;margin:10px 0 0}
.jn-back{color:var(--dg-muted);text-decoration:none;font-size:14px;border-bottom:1px solid transparent}
.jn-back:hover{color:var(--dg-text);border-color:var(--dg-line)}

/* ---- buttons ---- */
.jn-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:12px 24px;border-radius:999px;border:1px solid transparent;font:600 14.5px/1 var(--dg-sans);text-decoration:none;cursor:pointer;transition:filter .15s ease,background .15s ease,border-color .15s ease,color .15s ease;min-height:44px}
.jn-btn:hover{filter:brightness(1.08)}
.jn-btn:disabled{opacity:.45;cursor:not-allowed}
.jn-btn-primary{background:linear-gradient(180deg,#d8bd93,#b98b68);color:#2a1c12}
.jn-btn-ghost{background:transparent;border-color:var(--dg-line);color:var(--dg-text)}
.jn-btn-ghost:hover{border-color:var(--dg-text)}
.jn-btn-danger{background:transparent;border-color:var(--dg-danger);color:#e0938c}
.jn-btn-danger:hover{background:rgba(165,77,71,.14)}
.jn-btn-small{padding:9px 16px;min-height:38px;font-size:13px}

/* ---- cards / surfaces ---- */
.jn-card{background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-2);padding:var(--dg-space-4)}
.jn-grid{display:grid;gap:var(--dg-space-4)}
.jn-divider{border:0;border-top:1px solid var(--dg-line);margin:var(--dg-space-4) 0}

/* ---- collection tiles (J02/J03) ---- */
.jn-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--dg-space-4)}
.jn-tile{position:relative;display:flex;flex-direction:column;background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-2);overflow:hidden;text-decoration:none;color:var(--dg-text)}
.jn-tile-media{position:relative;aspect-ratio:4/5;overflow:hidden;background:#241a12}
.jn-tile-media img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease-soft, ease)}
.jn-tile:hover .jn-tile-media img,.jn-tile:focus-within .jn-tile-media img{transform:scale(1.05)}
.jn-tile-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(23,16,12,0) 46%,rgba(23,16,12,.78) 100%)}
.jn-tile-price{position:absolute;left:14px;top:14px;background:rgba(23,16,12,.72);border:1px solid var(--dg-line);color:var(--dg-text);border-radius:999px;padding:6px 12px;font-size:12.5px;letter-spacing:.06em}
.jn-tile-body{display:grid;gap:6px;padding:16px 18px 18px}
.jn-tile-body h2{font-family:var(--dg-serif);font-weight:400;font-size:26px;line-height:1.1;margin:0}
.jn-tile-body p{margin:0;color:var(--dg-muted);font-size:13.5px}
.jn-tile-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}

/* ---- filters (J02) ---- */
.jn-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:var(--dg-space-4)}
.jn-chip{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--dg-line);background:transparent;color:var(--dg-muted);border-radius:999px;padding:8px 16px;font:600 13px/1 var(--dg-sans);cursor:pointer;min-height:44px}
.jn-chip[aria-pressed="true"]{border-color:var(--dg-action);color:var(--dg-text);background:rgba(185,139,104,.14)}

/* ---- breadcrumb / gallery (J03) ---- */
.jn-crumbs{display:flex;gap:8px;font-size:13px;color:var(--dg-muted);margin-bottom:var(--dg-space-4)}
.jn-crumbs a{color:var(--dg-muted);text-decoration:none}
.jn-crumbs a:hover{color:var(--dg-text)}
.jn-crumbs span[aria-current]{color:var(--dg-text)}
.jn-gallery{display:grid;grid-template-columns:1fr 1fr;gap:var(--dg-space-3)}
.jn-gallery figure{margin:0;border-radius:var(--dg-radius-1);overflow:hidden;border:1px solid var(--dg-line);aspect-ratio:4/5;background:#241a12}
.jn-gallery img{width:100%;height:100%;object-fit:cover}
.jn-device-toggle{display:flex;gap:8px;margin:var(--dg-space-3) 0}
.jn-preview-frame{border:10px solid #171310;border-radius:30px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.5),inset 0 0 0 2px rgba(230,196,140,.35);max-width:280px;margin:0 auto;background:#171310}
.jn-preview-frame[data-device="desktop"]{max-width:100%;border-radius:14px;border-width:8px}

/* ---- skeleton / states ---- */
.jn-skeleton{position:relative;overflow:hidden;background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-2);min-height:220px}
.jn-skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(247,238,229,.07) 50%,transparent 70%);animation:jn-shimmer 1.4s infinite}
@keyframes jn-shimmer{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.jn-empty{display:grid;gap:12px;justify-items:center;text-align:center;padding:var(--dg-space-6) var(--dg-space-4);color:var(--dg-muted)}
.jn-empty[hidden]{display:none}
.jn-empty h2{font-family:var(--dg-serif);font-weight:400;font-size:26px;color:var(--dg-text);margin:0}
.jn-banner{display:flex;gap:12px;align-items:flex-start;border-radius:var(--dg-radius-1);padding:14px 16px;font-size:14px;margin-bottom:var(--dg-space-4)}
.jn-banner-error{background:rgba(165,77,71,.12);border:1px solid rgba(165,77,71,.4);color:#e8b3ad}
.jn-banner-success{background:rgba(113,131,106,.12);border:1px solid rgba(113,131,106,.45);color:#c2d0ba}
.jn-banner-info{background:rgba(185,139,104,.1);border:1px solid var(--dg-line);color:var(--dg-text)}

/* ---- badges ---- */
.jn-badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 11px;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--dg-line);color:var(--dg-muted)}
.jn-badge-published{border-color:rgba(113,131,106,.55);color:#b9c8b0}
.jn-badge-draft{border-color:rgba(185,139,104,.5);color:#d8bd93}
.jn-badge-completed{border-color:rgba(120,138,155,.55);color:#aebccb}
.jn-badge-revoked{border-color:rgba(165,77,71,.55);color:#e0938c}

/* ---- event cards (J06) ---- */
.jn-events{display:grid;gap:var(--dg-space-3)}
.jn-event{display:grid;grid-template-columns:96px 1fr auto;gap:var(--dg-space-3);align-items:center;background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-2);padding:14px;text-decoration:none;color:var(--dg-text);transition:border-color .15s ease}
.jn-event:hover{border-color:var(--dg-action)}
.jn-event-cover{width:96px;height:116px;border-radius:var(--dg-radius-1);object-fit:cover;border:1px solid var(--dg-line);background:#241a12}
.jn-event-title{font-family:var(--dg-serif);font-weight:400;font-size:22px;margin:0}
.jn-event-meta{color:var(--dg-muted);font-size:13px;margin:4px 0 0}
.jn-event-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* ---- stepper (J07/J04) ---- */
.jn-steps{display:flex;flex-wrap:wrap;gap:clamp(10px,3vw,28px);list-style:none;margin:0 0 var(--dg-space-5);padding:0;counter-reset:step}
.jn-steps li{display:flex;min-width:0;align-items:center;gap:10px;color:var(--dg-muted);font-size:13.5px}
.jn-steps li::before{counter-increment:step;content:counter(step);width:28px;height:28px;border-radius:50%;border:1px solid var(--dg-line);display:grid;place-items:center;font-size:12.5px;flex:none}
.jn-steps li[aria-current="step"]{color:var(--dg-text)}
.jn-steps li[aria-current="step"]::before{border-color:var(--dg-action);color:var(--dg-action);font-weight:700}
.jn-steps li.is-done{color:var(--dg-text)}
.jn-steps li.is-done::before{background:rgba(185,139,104,.2);border-color:var(--dg-action)}

/* ---- forms ---- */
.jn-field{display:grid;gap:6px;margin-bottom:var(--dg-space-3)}
.jn-field>span{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--dg-muted)}
.jn-field input,.jn-field select,.jn-field textarea{font:15px/1.4 var(--dg-sans);color:var(--dg-text);background:#241a12;border:1px solid var(--dg-line);border-radius:10px;padding:11px 14px;min-height:44px}
.jn-field input:focus,.jn-field select:focus,.jn-field textarea:focus{outline:none;border-color:var(--dg-action);box-shadow:0 0 0 3px rgba(185,139,104,.22)}
.jn-field .jn-error{color:#e0938c;font-size:12.5px}
.jn-check{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--dg-muted)}
.jn-check input{width:18px;height:18px;margin-top:2px;accent-color:var(--dg-action)}

/* ---- tables / rows (J10) ---- */
.jn-rows{display:grid;gap:10px}
.jn-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-1);padding:14px 16px}
.jn-row-title{font-family:var(--dg-serif);font-size:19px;margin:0}
.jn-row-meta{color:var(--dg-muted);font-size:13px;margin:3px 0 0}
.jn-row-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* ---- guests stats (J10) ---- */
.jn-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:var(--dg-space-4)}
.jn-stat{background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-1);padding:14px}
.jn-stat strong{display:block;font-family:var(--dg-serif);font-size:30px;font-weight:400;line-height:1}
.jn-stat span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--dg-muted)}

/* ---- progress (J13) ---- */
.jn-progress{height:6px;border-radius:999px;background:#241a12;border:1px solid var(--dg-line);overflow:hidden}
.jn-progress i{display:block;height:100%;background:linear-gradient(90deg,#b98b68,#d8bd93);width:0;transition:width .3s ease}
.jn-file-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px;font-size:13px;color:var(--dg-muted)}
.jn-file-list li{display:flex;justify-content:space-between;gap:10px}

/* ---- retention / closure (J14) ---- */
.jn-retention{display:flex;gap:10px;align-items:center;background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:var(--dg-radius-1);padding:12px 16px;font-size:14px}
.jn-retention strong{font-family:var(--dg-serif);font-weight:400;font-size:18px}

/* ---- upload toast (J13) ---- */
.jn-uploading{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:120;display:grid;gap:4px;background:var(--dg-surface);border:1px solid var(--dg-line);border-radius:14px;padding:12px 18px;font-size:13px;color:var(--dg-text);box-shadow:0 20px 50px rgba(0,0,0,.5);max-width:min(420px,92vw)}
.jn-uploading strong{font-weight:700}
.jn-uploading span{color:var(--dg-muted)}

/* ---- guest states (J11) ---- */
.jn-guest-state{min-height:100vh;display:grid;place-content:center;text-align:center;padding:var(--dg-space-5);background:radial-gradient(900px 600px at 50% 20%,#241a12,var(--dg-canvas) 74%);color:var(--dg-text)}
.jn-guest-state h1{font-family:var(--dg-serif);font-weight:400;font-size:clamp(30px,5vw,44px);margin:12px 0 10px}
.jn-guest-state p{color:var(--dg-muted);max-width:46ch;margin:0 auto 18px}

/* ---- responsive ---- */
@media (max-width:760px){
  .jn-shell{padding:calc(var(--dg-space-5) + 8px) var(--dg-space-3) var(--dg-space-5)}
  .jn-tiles{grid-template-columns:1fr}
  .jn-gallery{grid-template-columns:1fr}
  .jn-event{grid-template-columns:72px 1fr}
  .jn-event-actions{grid-column:1/-1;justify-content:flex-start}
  .jn-row{grid-template-columns:1fr}
  .jn-row-actions{justify-content:flex-start}
}
@media (prefers-reduced-motion:reduce){
  .jn-tile-media img,.jn-event,.jn-btn{transition:none}
  .jn-skeleton::after{animation:none}
}

/* ---- catalog editorial polish (J02/J03) ---- */
.jn-head h1{max-width:24ch}
.jn-filters{position:sticky;top:0;z-index:5;background:linear-gradient(180deg,var(--dg-canvas) 82%,transparent);padding:10px 0;margin-bottom:var(--dg-space-4)}
.jn-tile-media::after{transition:opacity var(--dur-medium,420ms) var(--ease-soft,ease)}
.jn-tile-media .jn-tile-price{backdrop-filter:blur(6px)}
.jn-tile-body h2{font-size:28px;position:relative;padding-bottom:8px}
.jn-tile-body h2::after{content:"";position:absolute;left:0;bottom:0;width:34px;height:1px;background:var(--dg-action);opacity:0;transition:opacity var(--dur-fast,150ms) ease,width var(--dur-medium,420ms) var(--ease-soft,ease)}
.jn-tile:hover .jn-tile-body h2::after,.jn-tile:focus-within .jn-tile-body h2::after{opacity:1;width:56px}
.jn-detail-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--dg-space-5);align-items:start}
.jn-detail-grid .jn-gallery{grid-template-columns:1fr 1fr;gap:12px}
.jn-detail-grid .jn-gallery figure:first-child{grid-column:1/-1;aspect-ratio:16/10}
.jn-aside{position:sticky;top:24px;display:grid;gap:var(--dg-space-3)}
.jn-price{font-family:var(--dg-serif);font-size:34px;line-height:1}
.jn-price-note{font-size:12.5px;color:var(--dg-muted)}
@media (max-width:900px){.jn-detail-grid{grid-template-columns:1fr}.jn-aside{position:static}}
