﻿/* =============================================================================
   모멘트원 세계일주 — 게임 UI
   아트 디렉션 '현지 답사 저널(Field Journal)'
   · 사진이 주인공이고 UI는 그 위에 얹힌 얇은 층이다. 캐주얼 게임 톤을 피한다.
   · 현장 화면 = 풀블리드 사진 + 필름 그레이딩 + 어두운 그라디언트(몰입)
     저널 화면 = 종이 질감의 밝은 면(기록)
   · 모멘트원 앱 브랜드 컬러(오렌지 #FF6B35 · 네이비)는 게임 UI에 쓰지 않는다.
   ========================================================================== */

:root{
  /* 종이 — 기록 화면 */
  --paper:#EFE7DA;
  --paper-2:#E3D8C6;
  --paper-3:#D6C9B4;
  --ink:#1E1A15;
  --ink-2:#5C5347;
  --ink-3:#8C8173;

  /* 필름 — 현장 화면 */
  --film:#100E0C;
  --film-2:#1B1713;
  --film-3:#2A241E;

  /* 액센트 */
  --stamp:#B23A2E;      /* 여권 스탬프 잉크 — 확정·완료 */
  --stamp-2:#8E2C22;
  --sage:#5B6B57;       /* 자연·산책 */
  --brass:#A98A4B;      /* 도장·보상 */
  --sky-ink:#3E5C7A;    /* 정보 */

  --r-s:6px; --r-m:10px; --r-l:16px;
  --hud-h:58px; --tab-h:64px;

  --font:'Pretendard','Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',system-ui,-apple-system,sans-serif;
  --serif:'Nanum Myeongjo','Batang','Georgia',serif;
  --shadow:0 18px 44px rgba(16,12,8,.42);

  /* 필름 그레인 — 한 번만 만들어 재사용 */
  --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/><feColorMatrix type='saturate' values='0'/></filter><rect width='120' height='120' filter='url(%23n)' opacity='0.5'/></svg>");
}

*,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{
  margin:0;font-family:var(--font);color:var(--ink);background:#0A0908;
  display:flex;align-items:center;justify-content:center;overflow:hidden;
  line-height:1.55;font-size:15px;letter-spacing:-.012em;
}
button{font-family:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0;}
img{display:block;max-width:100%;}
h1,h2,h3,h4,p{margin:0;}
input{font-family:inherit;}
:focus-visible{outline:2px solid var(--stamp);outline-offset:2px;}

/* 데스크톱 여백 장식 */
.backdrop{position:fixed;inset:0;pointer-events:none;
  background:radial-gradient(900px 600px at 50% 0%,#20191300,#00000000),#0A0908;}

/* ── 앱 셸 ─────────────────────────────────────────────── */
.app{
  position:relative;width:min(430px,100vw);height:min(920px,100dvh);
  background:var(--paper);display:flex;flex-direction:column;overflow:hidden;
  box-shadow:var(--shadow);
}
@media (min-width:520px) and (min-height:700px){ .app{border-radius:6px;} }

/* ── 상단 HUD ──────────────────────────────────────────── */
.hud{
  flex:0 0 auto;height:var(--hud-h);display:flex;align-items:center;gap:10px;
  padding:0 14px;padding-top:env(safe-area-inset-top);z-index:30;
  background:var(--paper);border-bottom:1px solid var(--paper-3);
}
.hud__me{display:flex;align-items:center;gap:9px;min-width:0;}
.hud__ava{width:34px;height:34px;flex:0 0 34px;border-radius:50%;overflow:hidden;
  background:#FFF7EE;border:1px solid var(--paper-3);}
.hud__name{display:block;font-size:13px;font-weight:800;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hud__lv{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.04em;}
.hud__cur{display:flex;gap:12px;margin-left:auto;}
.cur{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;}
.cur--coin{color:var(--brass);} .cur--stamp{color:var(--sky-ink);}
.cur.bump{animation:bump .4s cubic-bezier(.34,1.56,.64,1);}
@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.18)}100%{transform:scale(1)}}
.ic{width:15px;height:15px;flex:0 0 15px;display:inline-block;vertical-align:-2px;}
.ic-lg{width:20px;height:20px;flex:0 0 20px;}

/* ── 화면 ──────────────────────────────────────────────── */
.screens{flex:1;position:relative;overflow:hidden;}
.screen{
  position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;background:var(--paper);
  opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s;
}
.screen.on{opacity:1;visibility:visible;}
.screen::-webkit-scrollbar{width:0;}
.pad{padding:18px 18px calc(var(--tab-h) + 24px);}

/* ── 현장·미션 = '황금빛 오후' 세트 ────────────────────────
   같은 토큰 이름을 이 범위에서만 덮어써서, 하위 컴포넌트가 통째로 따뜻한 톤이 된다.
   기록 화면(홈·월드맵·앨범·상점)은 '현지 답사 저널' 종이 톤 그대로 둔다. */
.screen--field,.run{
  --paper:#FFF6EC;
  --paper-2:#FBE7D2;
  --paper-3:#F0D9BE;
  --ink:#3B2A1C;
  --ink-2:#7A6249;
  --ink-3:#A98D6E;
  --stamp:#E2763C;
  --stamp-2:#C25E28;
  --sage:#4C8C7A;
  --brass:#B98530;
  --r-m:18px; --r-l:24px; --r-s:12px;
  background:var(--paper);color:var(--ink);
}

/* 타이포 */
.kicker{font-size:10.5px;font-weight:800;letter-spacing:.2em;color:var(--ink-3);text-transform:uppercase;}
.title{font-family:var(--serif);font-size:25px;font-weight:700;letter-spacing:-.02em;line-height:1.3;}
.sub{font-size:12.5px;color:var(--ink-2);margin-top:5px;}
.rule{display:flex;align-items:center;gap:10px;margin:24px 0 12px;
  font-size:10.5px;font-weight:800;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase;}
.rule::after{content:"";flex:1;height:1px;background:var(--paper-3);}
/* 황금빛 오후는 제목을 굵은 산세리프로 — 저널의 명조와 성격을 갈라준다 */
.screen--field .title,.run__t{font-family:var(--font);font-weight:900;letter-spacing:-.035em;}

/* ── 사진 플레이트 ─────────────────────────────────────────
   실사 사진을 assets/spots/<id>.jpg 로 넣으면 그대로 덮어쓴다.
   파일이 없으면 onerror 로 제거되어 아래 필름 톤 플레이스홀더가 남는다. */
.plate{position:relative;overflow:hidden;background:var(--film-2);isolation:isolate;}
.plate--wide{aspect-ratio:16/9;}
.plate--tall{aspect-ratio:4/5;}
.plate--hero{height:46vh;min-height:280px;max-height:420px;}
.plate__art,.plate__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.plate__photo{z-index:2;}
.plate__grain{position:absolute;inset:0;z-index:3;pointer-events:none;
  background-image:var(--grain);background-size:120px 120px;opacity:.16;mix-blend-mode:overlay;}
.plate__vig{position:absolute;inset:0;z-index:4;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 40%,transparent 40%,rgba(0,0,0,.42) 100%);}
.plate__grad{position:absolute;inset:0;z-index:5;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,6,4,.55) 0%,transparent 34%,transparent 46%,rgba(8,6,4,.88) 100%);}
.plate__cap{position:absolute;left:0;right:0;bottom:0;z-index:6;padding:16px 18px;}
.plate__where{display:block;font-size:10.5px;font-weight:800;letter-spacing:.16em;color:rgba(255,255,255,.66);text-transform:uppercase;}
.plate__name{display:block;font-family:var(--serif);font-size:26px;font-weight:700;color:#fff;letter-spacing:-.02em;margin-top:3px;}
.plate__time{position:absolute;top:14px;right:14px;z-index:6;display:flex;align-items:center;gap:5px;
  padding:5px 10px;border-radius:99px;background:rgba(10,8,6,.55);backdrop-filter:blur(6px);
  font-size:10.5px;font-weight:800;color:rgba(255,255,255,.86);letter-spacing:.04em;}
.plate__back{position:absolute;top:12px;left:12px;z-index:7;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;background:rgba(10,8,6,.5);backdrop-filter:blur(6px);color:#fff;}

/* ── 온보딩 ────────────────────────────────────────────── */
.ob{padding:26px 20px 30px;}
.ob__title{font-family:var(--serif);font-size:27px;font-weight:700;line-height:1.32;margin:10px 0 8px;}
.ob__desc{font-size:13.5px;color:var(--ink-2);margin-bottom:20px;}
.picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.pick{position:relative;border-radius:var(--r-m);padding:7px 4px 8px;background:var(--paper-2);
  border:1px solid transparent;transition:border-color .16s,background .16s,transform .16s;}
.pick img{width:100%;aspect-ratio:1;border-radius:50%;background:#FFF7EE;}
.pick b{display:block;font-size:11.5px;font-weight:800;margin-top:5px;text-align:center;}
.pick i{display:block;font-size:9px;font-style:normal;color:var(--ink-3);font-weight:700;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pick.on{border-color:var(--stamp);background:#fff;transform:translateY(-3px);}
.ob__concept{font-family:var(--serif);font-size:15px;margin-top:16px;line-height:1.5;}
.ob__tags{font-size:11.5px;font-weight:800;color:var(--stamp);margin-top:6px;letter-spacing:.02em;}
.namebox{display:flex;align-items:center;gap:10px;margin-top:16px;padding:2px 4px 2px 14px;
  background:#fff;border:1px solid var(--paper-3);border-radius:var(--r-m);}
.namebox input{flex:1;min-width:0;background:none;border:0;color:var(--ink);font-size:15px;font-weight:800;padding:12px 0;}
.namebox input::placeholder{color:var(--ink-3);font-weight:700;}
.disc{font-size:10.5px;color:var(--ink-3);line-height:1.6;margin-top:14px;}

/* ── 버튼 ──────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:14px 20px;border-radius:var(--r-m);font-size:14px;font-weight:800;
  background:var(--paper-2);border:1px solid var(--paper-3);transition:transform .14s,filter .14s;}
.btn:active{transform:scale(.97);}
.btn--go{background:var(--stamp);color:#FFF3EE;border-color:var(--stamp-2);}
.btn--dark{background:var(--ink);color:var(--paper);border-color:var(--ink);}
.btn--light{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.30);backdrop-filter:blur(8px);}
.btn--wide{width:100%;}
.btn--sm{padding:9px 14px;font-size:12.5px;}
.btn[disabled]{opacity:.4;pointer-events:none;}

/* ── 태그 ──────────────────────────────────────────────── */
.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--r-s);
  font-size:10.5px;font-weight:800;background:var(--paper-2);color:var(--ink-2);border:1px solid var(--paper-3);}
.tag--done{background:var(--stamp);color:#FFF3EE;border-color:var(--stamp-2);}
.tag--on-film{background:#fff;color:var(--ink-2);border-color:var(--paper-3);}
.tagrow{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}

/* ── 홈(저널) ──────────────────────────────────────────── */
.journal{position:relative;background:#fff;border:1px solid var(--paper-3);border-radius:var(--r-l);overflow:hidden;}
.journal__top{display:flex;gap:14px;padding:16px;align-items:center;}
.journal__ava{width:88px;height:88px;flex:0 0 88px;border-radius:50%;overflow:hidden;background:#FFF7EE;
  border:1px solid var(--paper-3);}
.journal__ava.pet img{animation:wag .5s ease-in-out;}
@keyframes wag{0%,100%{transform:rotate(0) scale(1)}25%{transform:rotate(-4deg) scale(1.05)}75%{transform:rotate(4deg) scale(1.05)}}
.journal__name{font-family:var(--serif);font-size:22px;font-weight:700;}
.journal__breed{font-size:11.5px;color:var(--ink-3);font-weight:700;margin-top:2px;}
.hearts{display:flex;gap:4px;margin-top:8px;}
.hearts span{color:var(--paper-3);display:grid;place-items:center;transition:color .2s;}
.hearts span .ic{width:15px;height:15px;}
.hearts span.on{color:var(--stamp);}
.journal__acts{display:flex;gap:8px;padding:0 16px 16px;}

.ticket{margin-top:14px;background:#fff;border:1px solid var(--paper-3);border-radius:var(--r-l);overflow:hidden;}
.ticket__row{display:flex;align-items:center;gap:12px;padding:14px 16px;}
.ring{width:48px;height:48px;flex:0 0 48px;border-radius:50%;display:grid;place-items:center;position:relative;
  background:conic-gradient(var(--stamp) var(--p,0%),var(--paper-2) 0);}
.ring::after{content:"";position:absolute;inset:4px;border-radius:50%;background:#fff;}
.ring b{position:relative;z-index:1;font-size:12px;font-weight:900;font-variant-numeric:tabular-nums;}
.ticket__t{font-size:14px;font-weight:800;}
.ticket__s{font-size:11.5px;color:var(--ink-3);font-weight:700;margin-top:2px;}
.ticket__foot{padding:0 16px 16px;}
.perf{height:1px;background:repeating-linear-gradient(90deg,var(--paper-3) 0 5px,transparent 5px 10px);}

.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:12px;}
.stats div{background:#fff;border:1px solid var(--paper-3);border-radius:var(--r-m);padding:12px 14px;}
.stats b{display:block;font-family:var(--serif);font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;}
.stats span{font-size:10.5px;font-weight:800;color:var(--ink-3);letter-spacing:.04em;}

/* ── 월드맵 · 나라 · 코스 카드 ─────────────────────────── */
.cardlist{display:flex;flex-direction:column;gap:14px;}
.pcard{display:block;width:100%;text-align:left;border-radius:var(--r-l);overflow:hidden;
  border:1px solid var(--paper-3);background:#fff;transition:transform .16s;}
.pcard:active{transform:scale(.99);}
.pcard__foot{padding:12px 14px;}
.pcard__n{font-family:var(--serif);font-size:17px;font-weight:700;}
.pcard__s{font-size:11.5px;color:var(--ink-3);font-weight:700;margin-top:2px;}
.pcard__meta{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:11px;font-weight:800;color:var(--ink-3);}
.bar{height:4px;border-radius:99px;background:var(--paper-2);overflow:hidden;flex:1;}
.bar i{display:block;height:100%;background:var(--stamp);transition:width .5s cubic-bezier(.22,1,.36,1);}
.flag{display:inline-grid;place-items:center;min-width:30px;height:20px;padding:0 6px;border-radius:3px;
  font-size:10px;font-weight:900;letter-spacing:.06em;background:var(--ink);color:var(--paper);}
.pcard__friend{position:absolute;right:12px;bottom:12px;z-index:6;width:46px;height:46px;border-radius:50%;
  overflow:hidden;background:#FFF7EE;border:2px solid rgba(255,255,255,.8);}
.pcard__friend.locked{filter:grayscale(1) brightness(.5);}

/* ── 명소 화면(현장) ───────────────────────────────────── */
.local{margin:16px 18px 0;padding:14px 16px;border-left:3px solid var(--stamp);
  border-radius:0 var(--r-s) var(--r-s) 0;
  background:var(--paper-2);font-size:13px;line-height:1.65;color:var(--ink-2);}
.local b{color:var(--ink);font-weight:800;}

.mlist{display:flex;flex-direction:column;gap:10px;}
.mrow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px;border-radius:var(--r-m);
  background:#fff;border:1px solid var(--paper-3);
  box-shadow:0 6px 18px rgba(226,118,60,.10);transition:transform .14s,box-shadow .14s;}
.mrow:active{transform:scale(.99);}
.mrow.done{background:var(--paper-2);border-color:var(--stamp);box-shadow:none;}
.mrow__ico{width:42px;height:42px;flex:0 0 42px;border-radius:50%;display:grid;place-items:center;
  background:var(--stamp);color:#fff;}
.mrow.done .mrow__ico{background:var(--sage);}
.mrow__t{display:block;font-size:14px;font-weight:800;color:var(--ink);}
.mrow__d{display:block;font-size:11.5px;color:var(--ink-3);margin-top:3px;line-height:1.45;}
.mrow__r{margin-left:auto;flex:0 0 auto;font-size:11px;font-weight:800;color:var(--stamp);}

/* ── 미션 실행 오버레이 ────────────────────────────────── */
.run{position:absolute;inset:0;z-index:70;display:flex;flex-direction:column;
  opacity:0;visibility:hidden;transition:opacity .26s,visibility .26s;
  background:radial-gradient(120% 70% at 50% 0%,#FFE8CC 0%,transparent 55%),var(--paper);}
.run.on{opacity:1;visibility:visible;}
.run__head{padding:16px 18px 12px;padding-top:calc(16px + env(safe-area-inset-top));display:flex;align-items:flex-start;gap:12px;}
.run__t{font-size:20px;font-weight:900;letter-spacing:-.035em;color:var(--ink);}
.run__d{font-size:12.5px;color:var(--ink-2);margin-top:4px;line-height:1.5;}
.run__x{margin-left:auto;width:34px;height:34px;flex:0 0 34px;border-radius:50%;display:grid;place-items:center;
  background:var(--paper-2);color:var(--ink-2);font-size:16px;}
.run__body{flex:1;overflow-y:auto;padding:0 18px 18px;}
.run__foot{padding:14px 18px calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--paper-3);}

/* 촬영 */
.finder{position:relative;border-radius:var(--r-m);overflow:hidden;}
.finder__frame{position:absolute;inset:0;z-index:8;pointer-events:none;}
.finder__frame::before,.finder__frame::after{content:"";position:absolute;border:1.5px solid rgba(255,255,255,.75);width:26px;height:26px;}
.finder__frame::before{top:12px;left:12px;border-right:0;border-bottom:0;}
.finder__frame::after{bottom:12px;right:12px;border-left:0;border-top:0;}
.finder__subject{position:absolute;z-index:7;width:34%;bottom:8%;left:50%;transform:translateX(-50%);
  filter:drop-shadow(0 10px 18px rgba(0,0,0,.5));}
.finder__rec{position:absolute;top:12px;right:12px;z-index:9;font-size:10px;font-weight:900;letter-spacing:.1em;
  color:#fff;display:flex;align-items:center;gap:5px;}
.finder__rec i{width:7px;height:7px;border-radius:50%;background:var(--stamp);animation:blink 1.1s infinite;}
@keyframes blink{50%{opacity:.25}}
.gauge{position:relative;height:46px;margin-top:16px;border-radius:var(--r-s);overflow:hidden;
  background:var(--paper-2);border:1px solid var(--paper-3);}
.gauge__zone{position:absolute;top:0;bottom:0;background:rgba(226,118,60,.28);
  border-left:1px solid rgba(226,118,60,.5);border-right:1px solid rgba(226,118,60,.5);}
.gauge__zone--core{background:rgba(226,118,60,.72);}
.gauge__needle{position:absolute;top:-2px;bottom:-2px;width:3px;background:var(--ink);
  box-shadow:0 0 10px rgba(59,42,28,.35);}
.gauge__label{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:800;
  color:var(--ink-3);letter-spacing:.1em;pointer-events:none;}

/* 선택 */
.qbox{font-size:18px;font-weight:900;letter-spacing:-.03em;line-height:1.5;color:var(--ink);margin:6px 0 16px;}
.opts{display:flex;flex-direction:column;gap:9px;}
.opt{text-align:left;padding:16px;border-radius:var(--r-m);background:#fff;
  border:1px solid var(--paper-3);font-size:14px;font-weight:700;color:var(--ink);
  box-shadow:0 6px 16px rgba(226,118,60,.08);transition:background .16s,border-color .16s;}
.opt.ok{background:rgba(76,140,122,.14);border-color:var(--sage);}
.opt.no{background:rgba(226,118,60,.12);border-color:var(--stamp);}
.why{margin-top:12px;padding:14px 16px;border-radius:var(--r-m);background:var(--paper-2);
  font-size:12.5px;line-height:1.65;color:var(--ink-2);}
.why b{color:var(--ink);}
.why .note{display:block;margin-top:8px;font-size:11px;color:var(--ink-3);}

/* 산책 */
.walkwrap{text-align:center;padding:8px 0 0;}
.walk__n{font-size:46px;font-weight:900;letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1.1;}
.walk__u{font-size:11px;font-weight:800;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase;}
.walk__bar{height:8px;border-radius:99px;background:var(--paper-2);overflow:hidden;margin:18px 0;}
.walk__bar i{display:block;height:100%;background:var(--sage);transition:width .12s linear;}
.walk__hold{width:100%;padding:22px;border-radius:var(--r-m);background:rgba(76,140,122,.14);
  border:1.5px solid var(--sage);font-size:15px;font-weight:800;color:var(--ink);}
.walk__hold.holding{background:rgba(76,140,122,.32);}
.pawtrail{display:flex;justify-content:center;gap:10px;margin-top:14px;color:var(--paper-3);}
.pawtrail .ic{width:18px;height:18px;transition:color .2s;}
.pawtrail .ic.on{color:var(--sage);}

/* 탐색 */
.findwrap{position:relative;border-radius:var(--r-m);overflow:hidden;cursor:crosshair;}
.findwrap__hint{position:absolute;left:0;right:0;bottom:0;z-index:9;padding:12px 14px;
  background:linear-gradient(180deg,transparent,rgba(40,24,10,.85));font-size:12px;font-weight:700;color:#fff;}
.findwrap__miss{position:absolute;z-index:9;width:26px;height:26px;border-radius:50%;
  border:1.5px solid rgba(255,255,255,.6);transform:translate(-50%,-50%);animation:fade 1s forwards;}
@keyframes fade{to{opacity:0;transform:translate(-50%,-50%) scale(1.6)}}
.findwrap__hit{position:absolute;z-index:10;width:52px;height:52px;border-radius:50%;transform:translate(-50%,-50%);
  border:2px solid var(--stamp);box-shadow:0 0 0 4px rgba(178,58,46,.28);display:grid;place-items:center;color:#fff;}

/* 시간 */
.clock{display:flex;justify-content:space-between;gap:6px;margin:14px 0 18px;}
.clock div{flex:1;text-align:center;padding:12px 4px;border-radius:var(--r-s);
  background:var(--paper-2);border:1px solid transparent;}
.clock div b{display:block;font-size:11.5px;font-weight:800;color:var(--ink-3);}
.clock div.now{background:#fff;border-color:var(--paper-3);box-shadow:0 4px 12px rgba(226,118,60,.14);}
.clock div.now b{color:var(--ink);}
.clock div.target{border-color:var(--stamp);}
.clock div.target b{color:var(--stamp);}
.skyview{border-radius:var(--r-m);overflow:hidden;aspect-ratio:16/9;position:relative;}

/* ── 결과(포토카드) ────────────────────────────────────── */
.result{text-align:center;}
.polaroid{background:#F7F3EC;padding:12px 12px 44px;border-radius:3px;box-shadow:0 22px 50px rgba(0,0,0,.5);
  transform:rotate(-1.2deg);position:relative;margin:0 auto;max-width:290px;}
.polaroid .plate{border-radius:2px;}
.polaroid__cap{position:absolute;left:0;right:0;bottom:12px;font-family:var(--serif);font-size:13px;color:#3A332B;}
.polaroid__sticker{position:absolute;z-index:7;width:38%;right:10%;bottom:26%;
  filter:drop-shadow(0 10px 16px rgba(0,0,0,.45));}
.stampmark{position:absolute;top:6px;right:8px;z-index:8;transform:rotate(9deg);
  width:62px;height:62px;border-radius:50%;border:2px solid var(--stamp);color:var(--stamp);
  display:grid;place-items:center;font-size:9.5px;font-weight:900;text-align:center;line-height:1.2;
  opacity:.85;letter-spacing:.02em;}

/* ── 앨범 ──────────────────────────────────────────────── */
.tabs{display:flex;gap:4px;background:var(--paper-2);padding:4px;border-radius:var(--r-m);margin-bottom:16px;}
.tabs button{flex:1;padding:9px 4px;border-radius:var(--r-s);font-size:12.5px;font-weight:800;color:var(--ink-3);}
.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.08);}
.dex{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.dex__i{position:relative;border-radius:var(--r-m);padding:6px 4px 7px;background:#fff;
  border:1px solid var(--paper-3);text-align:center;transition:transform .14s;}
.dex__i:active{transform:scale(.96);}
.dex__i img{width:100%;aspect-ratio:1;border-radius:50%;background:#FFF7EE;}
.dex__i b{display:block;font-size:10.5px;font-weight:800;margin-top:4px;}
.dex__i.locked img{filter:grayscale(1) brightness(1.15) contrast(.35);opacity:.55;}
.dex__i.locked b{color:var(--ink-3);}
.dex__i.me{border-color:var(--stamp);}
.dex__i .tagme{position:absolute;top:4px;left:4px;font-size:8px;font-weight:900;background:var(--stamp);
  color:#FFF3EE;padding:1px 4px;border-radius:3px;}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:11px;}
.mini{border-radius:var(--r-m);overflow:hidden;background:#fff;border:1px solid var(--paper-3);}
.mini__f{padding:9px 10px;}
.mini__n{font-size:12.5px;font-weight:800;}
.mini__c{font-size:10.5px;color:var(--ink-3);font-weight:700;margin-top:1px;}
.mini.locked{opacity:.5;}
.mini.locked .plate{background:var(--paper-2);}
.stamps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.stmp{aspect-ratio:1;border-radius:50%;display:grid;place-items:center;text-align:center;padding:6px;
  border:1.5px dashed var(--paper-3);font-size:11px;font-weight:800;color:var(--ink-3);}
.stmp.on{border-style:solid;border-color:var(--stamp);color:var(--stamp);transform:rotate(-6deg);}
.empty{text-align:center;padding:44px 20px;color:var(--ink-3);font-size:13px;font-weight:700;}
.notice{margin-top:16px;padding:13px 15px;border-radius:var(--r-m);background:var(--paper-2);
  font-size:11.5px;line-height:1.65;color:var(--ink-2);}
.notice b{color:var(--ink);}
.screen--field .notice{background:var(--paper-2);color:var(--ink-2);}
.screen--field .notice b{color:var(--ink);}

/* ── 상점 ──────────────────────────────────────────────── */
.item{display:flex;align-items:center;gap:12px;border-radius:var(--r-m);padding:12px;background:#fff;
  border:1px solid var(--paper-3);}
.item__prev{width:58px;height:58px;flex:0 0 58px;border-radius:var(--r-s);overflow:hidden;background:#FFF7EE;}
.item__n{display:block;font-size:14px;font-weight:800;}
.item__d{font-size:11.5px;color:var(--ink-3);font-weight:700;margin-top:2px;}
.item__b{margin-left:auto;flex:0 0 auto;}

/* ── 하단 탭 ───────────────────────────────────────────── */
.tabbar{position:absolute;left:0;right:0;bottom:0;height:var(--tab-h);z-index:40;
  padding-bottom:env(safe-area-inset-bottom);display:flex;align-items:center;
  background:rgba(239,231,218,.96);backdrop-filter:blur(12px);border-top:1px solid var(--paper-3);}
.tabbar button{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  font-size:10px;font-weight:800;color:var(--ink-3);position:relative;transition:color .16s;}
.tabbar button svg{width:20px;height:20px;}
.tabbar button.on{color:var(--stamp);}
.tabbar button.on::before{content:"";position:absolute;top:0;width:24px;height:2px;background:var(--stamp);}

/* ── 모달 ──────────────────────────────────────────────── */
.overlay{position:absolute;inset:0;z-index:80;display:grid;place-items:center;padding:22px;
  background:rgba(10,8,6,.82);opacity:0;visibility:hidden;transition:opacity .24s,visibility .24s;}
.overlay.on{opacity:1;visibility:visible;}
.modal{width:100%;max-width:320px;border-radius:var(--r-l);padding:22px 20px;text-align:center;
  background:var(--paper);border:1px solid var(--paper-3);
  transform:scale(.94);transition:transform .3s cubic-bezier(.34,1.56,.64,1);}
.overlay.on .modal{transform:none;}
.modal__k{font-size:10px;font-weight:900;letter-spacing:.2em;color:var(--stamp);text-transform:uppercase;}
.modal__art{width:158px;height:158px;margin:14px auto 0;border-radius:50%;overflow:hidden;background:#FFF7EE;
  border:1px solid var(--paper-3);animation:pop .45s cubic-bezier(.34,1.56,.64,1);}
@keyframes pop{0%{transform:scale(.6);opacity:0}100%{transform:none;opacity:1}}
.modal__n{font-family:var(--serif);font-size:21px;font-weight:700;margin-top:13px;}
.modal__d{font-size:12.5px;color:var(--ink-2);margin-top:6px;white-space:pre-line;line-height:1.65;}
.modal__acts{margin-top:18px;display:flex;flex-direction:column;gap:8px;}

/* ── 토스트 ────────────────────────────────────────────── */
.toast{position:absolute;left:50%;bottom:calc(var(--tab-h) + 16px);transform:translate(-50%,12px);z-index:90;
  padding:11px 17px;border-radius:var(--r-m);font-size:12.5px;font-weight:800;
  background:var(--ink);color:var(--paper);opacity:0;visibility:hidden;
  transition:opacity .22s,transform .22s,visibility .22s;white-space:nowrap;}
.toast.on{opacity:1;visibility:visible;transform:translate(-50%,0);}

.spot__chips{display:flex;gap:6px;flex-wrap:wrap;padding:14px 18px 0;}

/* ═══════════════════════════════════════════════════════════
   반응형 — 웹 게임이므로 큰 화면에서는 폭을 실제로 쓴다.
   모바일(~639) 세로 한 컬럼 → 태블릿(640~999) 넓은 한 컬럼
   → 데스크톱(1000~) 좌측 내비 + 본문, 현장 화면은 사진/패널 2단
   ═══════════════════════════════════════════════════════════ */

@media (max-width:360px){ .picker,.dex{grid-template-columns:repeat(3,1fr);} }

/* ── 태블릿 이상: 폰 프레임 해제 ───────────────────────── */
@media (min-width:640px){
  .app{width:100vw;height:100dvh;border-radius:0;}
  .pad{max-width:760px;margin:0 auto;padding:26px 26px calc(var(--tab-h) + 30px);}
  .ob{max-width:680px;margin:0 auto;padding:34px 26px 40px;}
  .picker{grid-template-columns:repeat(8,1fr);}
  .stats{grid-template-columns:repeat(4,1fr);}
  .dex{grid-template-columns:repeat(6,1fr);}
  .grid2{grid-template-columns:repeat(3,1fr);}
  .stamps{grid-template-columns:repeat(5,1fr);}
  .cardlist{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:start;}
  .plate--hero{height:44vh;max-height:none;}
  .spot__chips,.local{max-width:760px;margin-left:auto;margin-right:auto;}
  .local{margin-top:16px;}
  .modal{max-width:380px;}
  .run__head,.run__foot{max-width:760px;margin:0 auto;width:100%;}
  .run__body{max-width:760px;margin:0 auto;width:100%;}
}

/* ── 데스크톱: 좌측 내비 + 넓은 본문 ────────────────────── */
@media (min-width:1000px){
  :root{ --side:96px; }

  .hud{height:var(--hud-h);padding-left:calc(var(--side) + 26px);padding-right:26px;}

  /* 하단 탭 → 좌측 세로 내비 */
  .tabbar{
    top:0;bottom:0;left:0;width:var(--side);height:auto;
    flex-direction:column;justify-content:flex-start;gap:4px;
    padding:calc(var(--hud-h) + 14px) 0 0;
    border-top:0;border-right:1px solid var(--paper-3);
    background:var(--paper);
  }
  .tabbar button{flex:0 0 auto;width:100%;height:72px;gap:5px;font-size:11px;}
  .tabbar button svg{width:22px;height:22px;}
  .tabbar button.on::before{top:50%;left:0;transform:translateY(-50%);width:3px;height:30px;}

  /* 본문 영역을 내비 오른쪽으로 */
  .screen{left:var(--side);}
  .pad{max-width:1120px;padding:30px 40px 48px;}
  .toast{left:calc(50% + var(--side)/2);bottom:28px;}

  .picker{grid-template-columns:repeat(8,1fr);gap:12px;}
  .dex{grid-template-columns:repeat(8,1fr);gap:12px;}
  .grid2{grid-template-columns:repeat(4,1fr);gap:16px;}
  .stamps{grid-template-columns:repeat(6,1fr);}
  .cardlist{grid-template-columns:repeat(3,1fr);gap:20px;}
  .title{font-size:30px;}

  /* 홈 — 저널과 기록을 2단으로 */
  #sc-home .pad{display:grid;grid-template-columns:1.1fr .9fr;gap:0 34px;align-content:start;}
  #sc-home .pad > .kicker,#sc-home .pad > .title{grid-column:1 / -1;}
  #sc-home .journal{grid-column:1;}
  #sc-home .rule:nth-of-type(1){grid-column:1;}
  #sc-home #tripBox{grid-column:1;}
  #sc-home .rule:nth-of-type(2){grid-column:2;grid-row:3;margin-top:0;}
  #sc-home #homeStats{grid-column:2;grid-row:4;grid-template-columns:repeat(2,1fr);}
  #sc-home > .pad > .notice{grid-column:2;grid-row:5;align-self:start;}

  /* 현장 화면 — 왼쪽 대형 사진 고정, 오른쪽 미션 패널 스크롤 */
  #spotView{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(380px,.85fr);height:100%;overflow:hidden;}
  #svHero{height:100%;overflow:hidden;}
  #spotView .plate--hero{height:100%;max-height:none;}
  .spot__side{overflow-y:auto;height:100%;border-left:1px solid var(--paper-3);padding-bottom:40px;}
  .spot__chips,.local{max-width:none;margin-left:0;margin-right:0;}
  .spot__side .pad{max-width:none;padding:22px 26px 40px;}
  .mlist{gap:12px;}

  /* 미션 실행기 — 화면 가운데 패널 */
  .run{left:var(--side);}
  .run__head,.run__body,.run__foot{max-width:840px;margin:0 auto;width:100%;}
  .finder .plate,.findwrap .plate{max-height:52vh;}
  .polaroid{max-width:330px;}
  .modal{max-width:420px;}
}

/* 아주 큰 화면 — 본문이 과하게 늘어지지 않게 */
@media (min-width:1600px){
  .pad{max-width:1280px;}
  .dex{grid-template-columns:repeat(10,1fr);}
  .cardlist{grid-template-columns:repeat(3,1fr);}
}

@media (prefers-reduced-motion:reduce){ *{animation-duration:.01ms !important;transition-duration:.01ms !important;} }


