/* 4233 마음 라운지 — 스타일 */
/* 기본 리셋 */
:root{color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;padding:0;font:14px -apple-system,BlinkMacSystemFont,sans-serif;background:#fff;color:#000}
img{max-width:100%}
[hidden]:not([hidden=until-found i]){display:none!important}

@font-face { font-family: "Pretendard Head"; font-weight: 600; font-display: swap; src: url(../fonts/pretendard-head-600.woff2) format("woff2"); }
.bq-cta-wrap { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.bq-cta-note { margin: 0; font-size: 13px; color: var(--muted); text-align: center; }
.bq-cta { display: inline-flex; align-items: center; justify-content: center; gap: 10px; width: 100%; max-width: 320px; min-height: 56px; padding: 0 26px; border: 0; border-radius: 999px; background: var(--booth); color: #FFFDF9; font: 600 17px/1.2 "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", sans-serif; letter-spacing: -0.01em; cursor: pointer; box-shadow: 0 8px 20px rgba(168,53,47,.22); }
.bq-cta:hover { filter: brightness(1.05); }
.bq-cta em { font-style: normal; font-size: 12px; font-weight: 600; background: rgba(255,253,249,.2); border-radius: 999px; padding: 4px 9px; }
.sheet h2.bq-title { font-size: min(26px, 5.3vw); word-break: keep-all; }
.sheet .progress + h2 { font-size: 21px !important; line-height: 1.35; }
.chips .rel-chip { background: var(--rc-bg); border-color: transparent; color: var(--rc-ink); font-weight: 600; padding: 10px 18px; transition: background .15s, color .15s, box-shadow .15s; }
.chips .rel-chip[aria-pressed="true"] { background: var(--rc-on); border-color: var(--rc-on); color: #FFFDF9; box-shadow: 0 4px 12px rgba(80,50,30,.14); }
.rel-1 { --rc-bg: #F6D5D8; --rc-ink: #93404F; --rc-on: #C55A6C; }
.rel-2 { --rc-bg: #F7E5BC; --rc-ink: #7A5A1B; --rc-on: #CF9A36; }
.rel-3 { --rc-bg: #F5DAC8; --rc-ink: #8A4B2D; --rc-on: #D27650; }
.rel-4 { --rc-bg: #DDE7D5; --rc-ink: #4C6943; --rc-on: #6E9060; }
.rel-5 { --rc-bg: #E4DFF0; --rc-ink: #5A4D85; --rc-on: #8575B5; }
.cls-intro { position: absolute; inset: 0; z-index: 30; display: grid; place-items: center; padding: 24px max(16px, env(safe-area-inset-right, 0px)) 24px max(16px, env(safe-area-inset-left, 0px)); background: rgba(30,44,36,.32); opacity: 1; transition: opacity .38s ease; cursor: pointer; }
.cls-intro.off { opacity: 0; }
.ci-x { position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; border: 0; border-radius: 50%; background: #F3EDE4; color: #5E5048; font-size: 15px; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.ci-x:hover { background: #EAE2D6; }
.ci-card { position: relative; cursor: default; box-sizing: border-box; width: min(360px, calc(100vw - 40px)); background: #FFFDF8; border-radius: 22px; padding: 26px 22px 22px; box-shadow: 0 18px 50px rgba(20,30,24,.28); display: grid; gap: 14px; text-align: center; animation: ciPop .4s ease; }
@keyframes ciPop { from { transform: translateY(8px) scale(.98); } }
.ci-eyebrow { justify-self: center; font: 600 12px/1 "Pretendard Label", "IBM Plex Sans KR", sans-serif; letter-spacing: .06em; color: #4C6943; background: #DDE7D5; border-radius: 999px; padding: 6px 12px; }
.ci-card h3 { margin: 0; font-family: var(--display); font-weight: 400; font-size: 18px; line-height: 1.5; color: #2E2621; word-break: keep-all; }
.ci-date { margin: -6px 0 0; font: 500 13px/1.3 "Pretendard Head", "Pretendard Label", sans-serif; color: #6B5E55; letter-spacing: .02em; }
.ci-date b { font-weight: 600; color: #C9785F; }
.ci-steps { list-style: none; margin: 0; padding: 12px 14px; display: grid; gap: 9px; text-align: left; background: #F7F2EA; border-radius: 14px; }
.ci-steps li { display: flex; align-items: center; gap: 10px; font-size: 14.5px; color: #3B332E; }
.ci-steps b { flex: none; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font: 600 12.5px/1 "Pretendard Label", sans-serif; color: #FFFDF8; }
.ci-steps li:nth-child(1) b { background: #E8634A; } .ci-steps li:nth-child(2) b { background: #E3A73A; } .ci-steps li:nth-child(3) b { background: #6E9C82; }
.ci-luck { margin: 0; font-family: var(--display); font-size: 14.5px; line-height: 1.65; color: #6B5E55; }
.ci-luck b { font-weight: 400; color: #A8426A; }
.cf-count { margin: 0 0 12px; text-align: center; font-family: var(--display); font-weight: 400; font-size: 24px; line-height: 1.38; color: #FFF8EE; text-shadow: 0 2px 10px rgba(40,25,20,.45); word-break: keep-all; }
.cf-count b { font-weight: 400; color: #FFD6DE; }
.cf-count + .cg-big img { max-height: 30vh; object-fit: contain; }
.h-pret { font-family: "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif !important; font-weight: 600 !important; letter-spacing: -0.01em; }

/* 온라인 체험 이름표: Pretendard (SIL OFL) 라벨용 글자만 서브셋 */
@font-face { font-family: "Pretendard Label"; font-weight: 600; font-display: block; src: url(../fonts/pretendard-label-600.woff2) format("woff2"); }
@font-face { font-family: "Pretendard Label"; font-weight: 500; font-display: block; src: url(../fonts/pretendard-label-500.woff2) format("woff2"); }

/* Layout: full-screen 3D diorama of the 안국점 floor; thin overlay UI; full-height sheets per experience; letter and gacha open as overlays */
:root {
  --paper: #FFFDF9;
  --cream: #F3ECE3;
  --oak: #C99B6B;
  --oak-deep: #7E5636;
  --ink: #2E2621;
  --muted: #7A6D63;
  --line: #E4D9CC;
  --booth: #A8352F;
  --booth-soft: #F6E1DD;
  --mustard: #E7CF86;
  --sage: #9CB08A;
  --night: #231B17;
  --glow: #FFE3B5;
  --dome-a: #F7F4EF;
  --dome-b: #E9813F;
  --display: "Gowun Dodum", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  --body: "IBM Plex Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
  --hand: "Nanum Pen Script", "Gowun Dodum", cursive;
  color-scheme: light;
}
html, body { height: 100%; }
body { background: var(--cream); color: var(--ink); font-family: var(--body); font-size: 15px; line-height: 1.55; overflow: hidden; -webkit-tap-highlight-color: transparent; }
button, input, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 2px solid var(--booth); outline-offset: 2px; }

/* gate */
[hidden] { display: none !important; }
#gate { position: fixed; inset: 0; z-index: 80; background: var(--cream); display: grid; place-items: center; padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); padding-block: 24px; }
.gate-box { width: 100%; max-width: 340px; display: grid; gap: 18px; text-align: center; }
.gate-box img { width: 58px; margin: 0 auto; }
.gate-box h1 { font-family: var(--display); font-weight: 400; font-size: 26px; margin: 0; word-break: keep-all; line-height: 1.35; }
.gate-box p { margin: 0; color: var(--muted); font-size: 14px; }
.gate-form { display: grid; gap: 10px; }
.gate-form input { width: 100%; padding: 13px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); font-size: 16px; text-align: center; letter-spacing: .08em; }
.err { color: var(--booth); font-size: 13px; min-height: 1.4em; }

/* buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 0; border-radius: 999px; padding: 13px 22px; font-weight: 600; font-size: 15px; text-decoration: none; transition: transform .15s ease, opacity .15s ease; text-align: center; }
.btn:active { transform: scale(.97); }
.btn-primary { background: var(--oak-deep); color: var(--paper); }
.btn-red { background: var(--booth); color: var(--paper); }
.btn-glow { background: var(--glow); color: var(--ink); }
.btn-line { background: transparent; color: var(--ink); box-shadow: inset 0 0 0 1px var(--line); }
.btn-ghost { background: rgba(255,252,247,.12); color: var(--paper); box-shadow: inset 0 0 0 1px rgba(255,252,247,.25); }
.btn-small { padding: 8px 14px; font-size: 13px; }
.btn[disabled] { opacity: .4; pointer-events: none; }

/* app shell */
#app { position: fixed; inset: 0; }
#stage { position: absolute; inset: 0; touch-action: none; }
#stage canvas { display: block; width: 100%; height: 100%; }
.topbar { position: absolute; top: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: calc(env(safe-area-inset-top, 0px) + 12px); padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); pointer-events: none; }
.topbar > * { pointer-events: auto; }
.brand { display: flex; align-items: center; gap: 7px; background: rgba(255,253,249,.9); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-radius: 12px; padding: 5px 9px 5px 7px; min-width: 0; }
.brand img { width: 17px; flex: none; }
.brand b { font-family: var(--display); font-weight: 400; font-size: 12.5px; display: block; line-height: 1.2; white-space: nowrap; }
.brand span { font-size: 9.5px; color: var(--muted); display: block; line-height: 1.2; white-space: nowrap; }
.top-actions { display: flex; gap: 6px; flex: none; }
.top-actions .btn { background: rgba(255,253,249,.92); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); color: var(--ink); padding: 8px 12px; }
.top-actions .btn.reserve { background: var(--booth); color: var(--paper); }
.ticket-pill { position: absolute; right: max(16px, env(safe-area-inset-right, 0px)); top: calc(env(safe-area-inset-top, 0px) + 60px); display: flex; align-items: center; gap: 6px; background: var(--paper); border: 1px solid var(--line); border-radius: 999px; padding: 5px 12px 5px 6px; font-size: 12px; font-weight: 600; box-shadow: 0 6px 16px rgba(46,38,33,.12); }
.ticket-pill i { width: 22px; height: 22px; border-radius: 50%; background: #FBE6E4; display: grid; place-items: center; }
.ticket-pill i::before { content: ""; width: 14px; height: 13px; background: #E0566A; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.5C5 16.6 1 12.6 1 7.6 1 4 3.8 1 7.3 1c2 0 3.7 1 4.7 2.6C13 2 14.7 1 16.7 1 20.2 1 23 4 23 7.6c0 5-4 9-11 13.9z'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.5C5 16.6 1 12.6 1 7.6 1 4 3.8 1 7.3 1c2 0 3.7 1 4.7 2.6C13 2 14.7 1 16.7 1 20.2 1 23 4 23 7.6c0 5-4 9-11 13.9z'/%3E%3C/svg%3E") center/contain no-repeat; }
.theme-pill { position: absolute; right: max(16px, env(safe-area-inset-right, 0px)); top: calc(env(safe-area-inset-top, 0px) + 98px); background: rgba(255,253,249,.92); border: 1px solid var(--line); border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 600; box-shadow: 0 6px 16px rgba(46,38,33,.12); }
.hint { position: absolute; left: 50%; transform: translateX(-50%); top: calc(env(safe-area-inset-top, 0px) + 140px); background: rgba(46,38,33,.8); color: var(--paper); font-size: 13px; padding: 7px 14px; border-radius: 999px; white-space: nowrap; transition: opacity .6s ease; pointer-events: none; max-width: calc(100% - 32px); overflow: hidden; text-overflow: ellipsis; }
.hint.gone { opacity: 0; }
.about-pill { position: absolute; left: max(16px, env(safe-area-inset-left, 0px)); top: calc(env(safe-area-inset-top, 0px) + 62px); background: rgba(255,253,249,.92); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid var(--line); border-radius: 999px; padding: 6px 13px; font: 600 12px/1.2 "Pretendard Label", "IBM Plex Sans KR", sans-serif; letter-spacing: .08em; color: var(--ink); cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
.about-pill::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--booth); }
.about-pill:hover { background: var(--paper); }
.about-hero { display: grid; gap: 12px; }
.sheet.sheet-white { background: #FFFFFF; }
.sheet.sheet-white .lead, .sheet.sheet-white .about-list span, .sheet.sheet-white .about-info span { color: #3B332E; }
.sheet.sheet-white .about-info em, .sheet.sheet-white .eyebrow { color: #6B5E55; }
.sheet.sheet-white .about-num div, .sheet.sheet-white .about-info { background: #F6F3EE; }
.about-logo { display: flex; justify-content: center; padding: 6px 0 2px; }
.about-logo img { width: 168px; max-width: 60%; height: auto; display: block; }
.about-pics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; width: 100%; max-width: 400px; margin: 2px auto 0; }
.about-pics img { width: 100%; max-width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 10px; display: block; background: #F2EEE8; pointer-events: none; }
.about-note { margin: -6px 0 0; font-size: 12.5px; line-height: 1.6; color: #6B5E55; padding: 0 4px; }
.about-when { background: #F6F5F2; border: 0; border-radius: 18px; padding: 10px 18px 2px; display: grid; gap: 10px; }
.about-when h3 { margin: 0; font-family: var(--display); font-weight: 400; font-size: 17px; color: #2E2621; }
.about-when ul { list-style: none; margin: 0; padding: 0; display: grid; }
.about-when li { display: flex; gap: 12px; align-items: flex-start; padding: 12px 0; border-top: 1px solid #E9E6E1; }
.about-when li:first-child { border-top: 0; padding-top: 2px; }
.about-when ul { counter-reset: aw; }
.about-when li { counter-increment: aw; }
.about-when li i { display: none; }
.about-when li::before { content: counter(aw, decimal-leading-zero); flex: none; width: 22px; margin-top: 2px; font: 600 12.5px/1.4 "Pretendard Head", "Pretendard Label", sans-serif; letter-spacing: .04em; color: #C9785F; }
.about-when li div { display: grid; gap: 2px; min-width: 0; }
.about-when li b { font-size: 14.5px; font-weight: 600; color: #2E2621; word-break: keep-all; }
.about-when li span { font-size: 13.5px; line-height: 1.6; color: #4A413B; word-break: keep-all; }
.about-creators { display: grid; gap: 6px; justify-items: center; text-align: center; padding: 18px 12px 16px; border-top: 1px solid #EFE6DA; border-bottom: 1px solid #EFE6DA; }
.ac-title { font-family: "Caveat", "Nanum Pen Script", cursive; font-weight: 600; font-size: 22px; line-height: 1.2; letter-spacing: .01em; color: #2E2621; }
.ac-sub { margin: 0; font-size: 12.5px; color: #6B5E55; }
.ac-chips { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.ac-chips li { font: 600 13.5px/1 "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", sans-serif; padding: 8px 14px; border-radius: 999px; background: #FFFFFF; color: #3B332E; border: 1px solid #E4E0DA; }
.ab-sec { display: grid; gap: 12px; padding-top: 4px; }
.ab-h { margin: 0; font: 600 15px/1.3 "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", sans-serif; letter-spacing: .02em; color: #2E2621; display: flex; align-items: center; gap: 8px; }
.ab-h::before { content: ""; width: 4px; height: 15px; border-radius: 2px; background: #D9876F; }
.ab-gal { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(200px, 62%); gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: max(18px, env(safe-area-inset-left, 0px)); padding-bottom: 6px; margin: 0 calc(-1 * max(18px, env(safe-area-inset-left, 0px))); padding-left: max(18px, env(safe-area-inset-left, 0px)); padding-right: max(18px, env(safe-area-inset-right, 0px)); scrollbar-width: none; }
.ab-gal::-webkit-scrollbar { display: none; }
.ab-shot { margin: 0; scroll-snap-align: start; display: grid; gap: 8px; cursor: zoom-in; }
.ab-shot img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 14px; display: block; background: #F2EEE8; }
.ab-shot figcaption { display: grid; gap: 2px; }
.ab-shot b { font: 600 14px/1.3 "Pretendard Head", "Pretendard Label", sans-serif; color: #2E2621; }
.ab-shot span { font-size: 12.5px; color: #6B5E55; }
.ab-hint { margin: -2px 0 0; font-size: 12px; color: #9A8D83; }
.about-when h3.ab-h { margin-bottom: 2px; }
.ab-trust { display: grid; gap: 16px; background: #F6F5F2; border: 0; border-radius: 18px; padding: 18px; }
.ab-pro { display: grid; gap: 4px; padding-bottom: 16px; border-bottom: 1px solid #E9E6E1; }
.ab-pro b { font: 600 14.5px/1.4 "Pretendard Head", "Pretendard Label", sans-serif; color: #2E2621; }
.ab-pro span { font-size: 13.5px; line-height: 1.6; color: #4A413B; word-break: keep-all; }
.ab-trust .about-creators { border: 0; padding: 0; }
.ab-branches { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.ab-br { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 12px 14px; border-radius: 12px; border: 1px solid #E4E0DA; background: #FFFFFF; color: #2E2621; text-decoration: none; font: 600 13.5px/1.3 "Pretendard Head", "Pretendard Label", sans-serif; }
.ab-br:hover { background: #F6F5F2; }
.ab-br i { font-style: normal; color: #D9876F; font-size: 18px; line-height: 1; }
.ab-run { margin: 0; font-size: 13px; color: #4A413B; }
.ab-foot { display: grid; gap: 10px; padding-top: 6px; }
.ab-online { margin: 0; text-align: center; font-size: 12px; color: #9A8D83; }
.ab-cta { position: sticky; bottom: 0; z-index: 6; margin: 0 calc(-1 * max(18px, env(safe-area-inset-left, 0px))) calc(-1 * (env(safe-area-inset-bottom, 0px) + 32px)); padding: 12px max(18px, env(safe-area-inset-right, 0px)) calc(env(safe-area-inset-bottom, 0px) + 14px) max(18px, env(safe-area-inset-left, 0px)); background: linear-gradient(rgba(255,255,255,0), #FFFFFF 28%); display: grid; }
.ab-cta .btn { width: 100%; box-sizing: border-box; box-shadow: 0 8px 20px rgba(168,53,47,.2); }
.ab-lightbox { position: fixed; inset: 0; z-index: 40; background: rgba(30,24,20,.82); display: grid; place-items: center; gap: 12px; align-content: center; padding: 24px; cursor: zoom-out; }
.ab-lightbox img { max-width: min(92vw, 520px); max-height: 78vh; border-radius: 16px; }
.ab-lbcap { color: #FFF7EE; font: 600 15px/1.3 "Pretendard Head", "Pretendard Label", sans-serif; }
.about-links { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; }
.about-links a { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; color: var(--ink); text-decoration: none; font-size: 13px; font-weight: 600; background: var(--paper); }
.about-links a:hover { background: var(--cream); }
.about-brand { margin: -4px 0 0; text-align: center; font: 600 13px/1.3 "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", sans-serif; letter-spacing: .06em; color: #7E6A5C; }
.sheet.sheet-white .sheet-head { position: sticky; top: 0; z-index: 5; background: #F3ECE2; margin: 0 calc(-1 * max(18px, env(safe-area-inset-left, 0px))); padding: calc(env(safe-area-inset-top, 0px) + 10px) max(18px, env(safe-area-inset-right, 0px)) 10px max(18px, env(safe-area-inset-left, 0px)); box-shadow: 0 1px 0 #E6DACB; }
.sheet.sheet-white .sheet-head .close { background: #FFFFFF; }
.copyright.about-slogan { font-family: var(--body); font-size: 13.5px; font-weight: 500; color: var(--ink); margin-top: 6px; }
.about-num { display: flex; gap: 10px; align-items: stretch; }
.about-num div { flex: 1; background: var(--cream); border-radius: 12px; padding: 12px 14px; display: grid; gap: 2px; }
.about-num b { font-family: var(--display); font-size: 30px; font-weight: 400; line-height: 1.1; color: var(--booth); }
.about-num span { font-size: 13px; color: var(--muted); }
.about-list { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
.about-list li { display: grid; gap: 3px; padding-left: 14px; border-left: 2px solid var(--line); }
.about-list b { font-size: 15px; }
.about-list span { font-size: 14px; color: var(--muted); line-height: 1.6; }
.about-info { display: grid; gap: 6px; font-size: 14px; background: var(--cream); border-radius: 12px; padding: 12px 14px; }
.about-info div { display: flex; gap: 10px; }
.about-info em { font-style: normal; color: var(--muted); width: 56px; flex: none; }
.class-exit { position: absolute; left: max(16px, env(safe-area-inset-left, 0px)); top: calc(env(safe-area-inset-top, 0px) + 60px); background: var(--paper); border: 1px solid var(--line); box-shadow: 0 4px 12px rgba(46,38,33,.12); }
#fader { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; background: #24342C; color: #F4EFE6; font-family: var(--display); font-size: 24px; letter-spacing: .02em; opacity: 0; pointer-events: none; transition: opacity .45s ease; }
#fader.on { opacity: 1; pointer-events: auto; }
.btn-kakao { background: #FEE500; color: #191919; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 0; }
.btn-kakao:hover { background: #F5DC00; }
/* 공유하기 버튼 (휴대폰 공유창): 대표 공유 아이콘 + 글자 */
.btn-share { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 0; }
.fg-chip2.fg-share { display: inline-flex; align-items: center; justify-content: center; gap: 5px; }
.fg-chip2.fg-share svg { width: 15px; height: 15px; flex-shrink: 0; }
.cs-form .cs-link { font-size: 12px; color: #5A4A40; background: #F4EADC; border-radius: 8px; padding: 8px 10px; word-break: break-all; user-select: text; -webkit-user-select: text; }
.cs-form .btn { width: 100%; }
.cf-eyebrow { margin: 0 0 10px; text-align: center; color: #F5D45E; font-size: 14px; font-weight: 600; }
.dock { position: absolute; left: 0; right: 0; bottom: 0; display: grid; justify-items: center; gap: 10px; padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 22px); padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); pointer-events: none; }
.dock > * { pointer-events: auto; }
/* 하단 부가 메뉴: 주요 행동(체험하기)은 위, 부가 기능은 작은 한 줄 바 */
.topbar { justify-content: flex-start; }
.topbar .about-pill { position: static; margin-left: 2px; }
.toolbar { display: flex; align-items: center; gap: 2px; max-width: 100%; background: rgba(255,253,249,.88); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid var(--line); border-radius: 999px; padding: 4px; box-shadow: 0 6px 18px rgba(46,38,33,.10); }
.toolbar .tb { position: static; display: inline-flex; align-items: center; gap: 5px; min-height: 34px; padding: 0 11px; border: 0; border-radius: 999px; background: transparent; box-shadow: none; color: var(--ink); font: 500 12.5px/1 "Pretendard Label", "Apple SD Gothic Neo", sans-serif; white-space: nowrap; cursor: pointer; text-decoration: none; }
.toolbar .tb:hover { background: rgba(126,86,54,.08); }
.toolbar .tb:focus-visible { outline: 2px solid var(--booth); outline-offset: 1px; }
.toolbar .theme-pill { max-width: 104px; overflow: hidden; text-overflow: ellipsis; display: inline-block; line-height: 34px; color: var(--muted); }
.toolbar .ticket-pill i { width: 18px; height: 18px; }
.toolbar .reserve { background: var(--booth); color: var(--paper); }
.toolbar .reserve:hover { background: var(--booth); filter: brightness(1.06); }
.tb-sep { width: 1px; height: 18px; background: var(--line); margin: 0 2px; flex: none; }
@media (max-width: 520px) { .toolbar { gap: 0; padding: 3px; } .toolbar .tb { padding: 0 9px; font-size: 12px; } .toolbar .tb-lbl { display: none; } .toolbar .theme-pill { max-width: none; } #musicBtn { font-size: 15px; padding: 0 10px; } .tb-sep { margin: 0 1px; } }
@media (max-width: 360px) { .toolbar .tb { padding: 0 7px; font-size: 11.5px; } .toolbar .ticket-pill i { display: none; } }
#actionBtn { box-shadow: 0 10px 28px rgba(126,86,54,.35); font-size: 16px; padding: 15px 26px; animation: rise .35s ease; }
@keyframes rise { from { transform: translateY(14px); opacity: 0 } to { transform: none; opacity: 1 } }
.zone-card { width: 100%; max-width: 400px; background: var(--paper); border-radius: 18px; padding: 16px 18px; box-shadow: 0 12px 34px rgba(46,38,33,.18); display: grid; gap: 10px; animation: rise .3s ease; }
.zone-card h3 { margin: 0; font-family: var(--display); font-weight: 400; font-size: 19px; }
.zone-card p { margin: 0; color: var(--muted); font-size: 14px; }
.zone-card .row { display: flex; gap: 8px; flex-wrap: wrap; }
.opt-row { display: flex; gap: 6px; flex-wrap: wrap; }
.opt-row .chip { padding: 7px 12px; font-size: 13px; }
.swatch { width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--paper); box-shadow: 0 0 0 1px var(--line); }
.swatch[aria-pressed="true"] { box-shadow: 0 0 0 2px var(--oak-deep); }
.mini-label { font-size: 12px; color: var(--muted); }

/* sheets */
.sheet { position: fixed; inset: 0; z-index: 20; background: var(--paper); overflow-y: auto; -webkit-overflow-scrolling: touch; animation: sheetIn .32s ease; }
@keyframes sheetIn { from { transform: translateY(24px); opacity: 0 } to { transform: none; opacity: 1 } }
.petal-rain { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
#sheetInner { position: relative; z-index: 1; }
.sheet-inner { max-width: 520px; margin: 0 auto; padding-top: calc(env(safe-area-inset-top, 0px) + 14px); padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 32px); padding-left: max(18px, env(safe-area-inset-left, 0px)); padding-right: max(18px, env(safe-area-inset-right, 0px)); display: grid; gap: 20px; }
.sheet-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.eyebrow { font-size: 12px; letter-spacing: .08em; color: var(--muted); text-transform: uppercase; }
.close { width: 38px; height: 38px; border-radius: 50%; border: 0; background: var(--cream); font-size: 18px; line-height: 1; flex: none; }
.sheet h2 { font-family: var(--display); font-weight: 400; font-size: 26px; line-height: 1.3; margin: 0; text-wrap: balance; }
.sheet .lead { margin: 0; color: var(--muted); }
.sample { justify-self: start; display: inline-block; font-size: 11px; color: var(--booth); background: var(--booth-soft); border-radius: 6px; padding: 2px 8px; }
.stack { display: grid; gap: 10px; }
.actions { display: flex; gap: 10px; flex-wrap: wrap; }
.actions .btn { flex: 1 1 140px; }
.progress { height: 4px; background: var(--cream); border-radius: 4px; overflow: hidden; }
.progress i { display: block; height: 100%; background: var(--oak); transition: width .3s ease; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { border: 1px solid var(--line); background: var(--paper); border-radius: 999px; padding: 10px 16px; font-size: 15px; }
.chip[aria-pressed="true"] { background: var(--oak-deep); border-color: var(--oak-deep); color: var(--paper); }
.traits-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.trait { border: 1px solid var(--line); background: var(--paper); border-radius: 14px; padding: 12px 6px 10px; display: grid; justify-items: center; gap: 6px; text-align: center; min-width: 0; }
.trait .dot { width: 22px; height: 22px; border-radius: 50%; }
.trait b { font-weight: 600; font-size: 15px; }
.trait small { font-size: 11px; color: var(--muted); line-height: 1.3; }
.trait[aria-pressed="true"] { border-color: var(--oak-deep); box-shadow: inset 0 0 0 1.5px var(--oak-deep); background: #FBF4EC; }
.count { font-size: 13px; color: var(--muted); font-variant-numeric: tabular-nums; }
.field { display: grid; gap: 6px; }
.field label { font-size: 13px; color: var(--muted); }
.field input, .field textarea { width: 100%; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); font-size: 16px; resize: none; }
.field textarea.hand { font-family: var(--hand); font-size: 24px; line-height: 1.45; background: repeating-linear-gradient(var(--paper) 0 33px, var(--line) 33px 34px); background-attachment: local; }
.code-input { letter-spacing: .3em; text-transform: lowercase; text-align: center; font-size: 22px !important; }
.mode-list { display: grid; gap: 10px; }
.mode-card { text-align: left; border: 1px solid var(--line); background: var(--paper); border-radius: 16px; padding: 16px 18px; display: grid; gap: 4px; position: relative; }
.mode-card b { font-family: var(--display); font-weight: 400; font-size: 19px; }
.mode-card span { font-size: 13px; color: var(--muted); }
.mode-card em { position: absolute; right: 14px; top: 14px; font-style: normal; font-size: 11px; font-weight: 600; color: var(--booth); background: var(--booth-soft); border-radius: 999px; padding: 3px 9px; }
.footnote { font-size: 12px; color: var(--muted); margin: 0; text-align: center; }
.list-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.list-row div { min-width: 0; flex: 1; }
.m-plate { top: 21% !important; font-size: 12px !important; padding: 2px 12px !important; }
.list-row .lr-ic { flex: none; width: 52px; height: 52px; display: block; }
.list-row .lr-ic svg { width: 100%; height: 100%; display: block; }
.list-row b { font-family: "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; font-weight: 600; font-size: 18px; display: block; }
.list-row span { font-size: 13px; color: var(--muted); }
.offline-grid { display: flex; flex-wrap: wrap; gap: 6px; }
.offline-grid span { font-size: 13px; background: var(--cream); border-radius: 8px; padding: 5px 10px; }
.or { display: flex; align-items: center; gap: 10px; color: var(--muted); font-size: 12px; }
.or::before, .or::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* similarity */
.q-num { font-size: 13px; color: var(--muted); font-variant-numeric: tabular-nums; }
.opts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.opt { border-radius: 14px; padding: 16px 14px; background: var(--cream); display: grid; gap: 6px; font-size: 16px; font-weight: 500; min-width: 0; word-break: keep-all; }
.opt i { font-style: normal; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 13px; font-weight: 600; }
.opt.a i { background: var(--dome-a); box-shadow: inset 0 0 0 1px #CFC6BA; }
.opt.b i { background: var(--dome-b); color: var(--paper); }
.booth { background: var(--booth); border-radius: 18px; padding: 16px 14px 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; color: var(--paper); }
.pad { display: grid; justify-items: center; gap: 10px; text-align: center; min-width: 0; }
.pad .who { font-size: 14px; font-weight: 600; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.domes { display: flex; gap: 12px; }
.dome { width: 60px; height: 60px; border-radius: 50%; border: 0; font-weight: 600; font-size: 16px; box-shadow: 0 0 0 4px #C9C4BE, 0 0 0 5px #8D8780, 0 6px 0 5px rgba(0,0,0,.25); transition: transform .1s ease, opacity .2s ease; }
.dome:active { transform: translateY(3px); }
.dome.a { background: radial-gradient(circle at 35% 30%, #fff, var(--dome-a) 55%, #DCD5CC); color: var(--ink); }
.dome.b { background: radial-gradient(circle at 35% 30%, #FFC59C, var(--dome-b) 55%, #B9602A); color: var(--paper); }
.pad.done .dome { opacity: .35; pointer-events: none; }
.pad .state { font-size: 12px; opacity: .85; min-height: 1.5em; }
.wait-dot { width: 60px; height: 60px; border-radius: 50%; border: 2px dashed rgba(255,253,249,.6); animation: spin 3s linear infinite; }
.wait-dot.done { border-style: solid; background: rgba(255,253,249,.25); animation: none; }
@keyframes spin { to { transform: rotate(360deg) } }
.reveal { background: var(--cream); border-radius: 14px; padding: 14px 16px; display: grid; gap: 8px; animation: rise .3s ease; }
.reveal .verdict { font-family: var(--display); font-size: 22px; }
.reveal .line { font-size: 14px; color: var(--muted); }
.result-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.result-list li { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; font-size: 14px; border-bottom: 1px solid var(--line); padding-bottom: 8px; }
.tag { font-size: 11px; border-radius: 6px; padding: 2px 8px; white-space: nowrap; }
.tag.same { background: #E7EFE2; color: #476B3B; }
.tag.diff { background: var(--booth-soft); color: var(--booth); }
.score { font-family: var(--display); font-size: 56px; line-height: 1; font-variant-numeric: tabular-nums; }
.score small { font-size: 18px; color: var(--muted); }
.room-code { font-family: var(--display); font-size: 54px; letter-spacing: .28em; line-height: 1.1; color: var(--booth); font-variant-numeric: tabular-nums; }
.people { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.person { background: var(--cream); border-radius: 14px; padding: 14px; display: grid; gap: 4px; min-width: 0; opacity: .55; transition: opacity .3s ease; }
.person.me, .person.here { opacity: 1; }
.person i { width: 12px; height: 12px; border-radius: 50%; background: var(--oak); }
.person.here i { background: #6E9B5E; }
.person b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.person span { font-size: 12px; color: var(--muted); }

/* letter overlay */
.lv { position: fixed; inset: 0; z-index: 40; background: radial-gradient(120% 80% at 50% 20%, #3A2C24 0%, var(--night) 70%); overflow-y: auto; -webkit-overflow-scrolling: touch; color: var(--paper); }
.lv-inner { max-width: 520px; margin: 0 auto; min-height: 100%; padding-top: calc(env(safe-area-inset-top, 0px) + 14px); padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 28px); padding-left: max(18px, env(safe-area-inset-left, 0px)); padding-right: max(18px, env(safe-area-inset-right, 0px)); display: grid; gap: 20px; align-content: start; }
.lv-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.lv-head span { font-size: 11px; letter-spacing: .12em; color: #CDBFB2; }
.lv .close, .gv .close { background: rgba(255,252,247,.12); color: var(--paper); }
.env-wrap { display: grid; justify-items: center; gap: 16px; padding-top: 8vh; }
.env { position: relative; width: min(300px, 82vw); aspect-ratio: 3 / 2; perspective: 900px; }
.env-back { position: absolute; inset: 0; background: #CDB38E; border-radius: 6px; }
.env-letter { position: absolute; left: 6%; right: 6%; top: 7%; height: 84%; background: #FBF6EE; border-radius: 4px; box-shadow: 0 2px 6px rgba(0,0,0,.15); transition: transform .9s cubic-bezier(.2,.8,.2,1) .45s; z-index: 1; display: grid; place-items: start center; padding-top: 10%; }
.env-letter span { font-family: var(--hand); font-size: 26px; color: var(--oak-deep); }
.env-front { position: absolute; inset: 0; background: linear-gradient(160deg, #EADBC2, #DCC6A4); border-radius: 6px; clip-path: polygon(0 0, 50% 54%, 100% 0, 100% 100%, 0 100%); z-index: 2; display: flex; justify-content: space-between; align-items: flex-end; padding: 0 16px 14px; color: #6B4F3A; }
.env-front b { font-family: var(--hand); font-weight: 400; font-size: 26px; line-height: 1; max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.env-front small { font-family: var(--hand); font-size: 20px; max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.env-flap { position: absolute; left: 0; right: 0; top: 0; height: 58%; background: linear-gradient(180deg, #D9C29E, #CFB48C); clip-path: polygon(0 0, 100% 0, 50% 100%); transform-origin: top; transition: transform .6s ease; z-index: 3; border-radius: 6px 6px 0 0; }
.seal { position: absolute; left: 50%; top: 58%; transform: translate(-50%, -50%); width: 58px; height: 58px; border-radius: 50%; border: 0; z-index: 4; background: radial-gradient(circle at 35% 30%, #C9574F, var(--booth) 60%, #7F2621); box-shadow: 0 3px 10px rgba(0,0,0,.35), inset 0 0 0 4px rgba(0,0,0,.08); display: grid; place-items: center; transition: opacity .3s ease; animation: pulse 2.2s ease-in-out infinite; }
.seal img { width: 20px; filter: invert(1); opacity: .9; }
@keyframes pulse { 50% { transform: translate(-50%, -50%) scale(1.07) } }
.env.open .seal { opacity: 0; pointer-events: none; animation: none; }
.env.open .env-flap { transform: rotateX(180deg); }
.env.flapback .env-flap { z-index: 0; }
.env.open .env-letter { transform: translateY(-58%); }
.env-hint { font-size: 14px; color: #CDBFB2; margin: 0; text-align: center; }
.paper { background: #FBF6EE; color: var(--ink); border-radius: 6px; padding: 22px 20px 18px; box-shadow: 0 20px 50px rgba(0,0,0,.4); display: grid; gap: 14px; animation: rise .6s ease; }
.paper-top { display: flex; justify-content: space-between; font-size: 11px; color: var(--muted); letter-spacing: .1em; }
.paper .to { font-family: var(--hand); font-size: 36px; line-height: 1; color: var(--oak-deep); }
.paper canvas { width: 100%; max-width: 300px; height: auto; display: block; margin: 0 auto; }
.traits-line { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.traits-line span { font-size: 13px; background: var(--cream); border-radius: 999px; padding: 4px 11px; }
.traits-line span em { font-style: normal; color: var(--muted); font-size: 11px; margin-left: 4px; }
.paper .msg { font-family: var(--hand); font-size: 27px; line-height: 1.5; margin: 0; white-space: pre-wrap; word-break: keep-all; overflow-wrap: anywhere; min-height: 2em; background: repeating-linear-gradient(transparent 0 39px, var(--line) 39px 40px); }
.paper .from { font-family: var(--hand); font-size: 26px; text-align: right; color: var(--oak-deep); }
.paper-foot { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--muted); border-top: 1px dashed var(--line); padding-top: 12px; }
.paper-foot img { width: 13px; }
.lv-actions { display: grid; gap: 10px; }
.lv-actions .row { display: flex; gap: 10px; flex-wrap: wrap; }
.lv-actions .row .btn { flex: 1 1 140px; }
.code-box { background: var(--cream); color: var(--ink); border-radius: 16px; padding: 16px; display: grid; gap: 8px; }
.code-box .code { font-family: var(--display); font-size: 42px; letter-spacing: .22em; color: var(--booth); line-height: 1.1; word-break: break-all; }
.note { font-size: 12px; color: var(--muted); margin: 0; }
.lv-note { font-size: 12px; color: #CDBFB2; margin: 0; text-align: center; }
.ticket-get { background: linear-gradient(135deg, #FFF1DA, #FFE3B5); color: var(--ink); border-radius: 16px; padding: 16px; display: grid; gap: 10px; animation: rise .5s ease; }
.ticket-get b { font-family: var(--display); font-weight: 400; font-size: 20px; }

/* gacha overlay */
.gv { position: fixed; inset: 0; z-index: 45; background: radial-gradient(110% 70% at 50% 15%, #F6E7D3 0%, #EAD6BD 60%, #D9BF9E 100%); overflow-y: auto; -webkit-overflow-scrolling: touch; }
.gv .close { background: rgba(46,38,33,.08); color: var(--ink); }
.gv-inner { max-width: 520px; margin: 0 auto; padding-top: calc(env(safe-area-inset-top, 0px) + 14px); padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 28px); padding-left: max(18px, env(safe-area-inset-left, 0px)); padding-right: max(18px, env(safe-area-inset-right, 0px)); display: grid; gap: 18px; }
.gv h2 { font-family: var(--display); font-weight: 400; font-size: 26px; margin: 0; text-wrap: balance; }
.machine { position: relative; width: min(280px, 76vw); margin: 0 auto; aspect-ratio: 280 / 380; }
.m-dome { position: absolute; left: 6%; right: 6%; top: 0; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 30% 25%, rgba(255,255,255,.95) 0 8%, rgba(255,255,255,.35) 22%, rgba(255,255,255,.18) 60%, rgba(255,255,255,.4) 100%); box-shadow: inset 0 -10px 30px rgba(126,86,54,.18), 0 0 0 6px #FFFDF9, 0 0 0 8px #E4D9CC; overflow: hidden; z-index: 2; }
.m-dome .cap { position: absolute; width: 18%; aspect-ratio: 1; border-radius: 50%; box-shadow: inset 0 -3px 0 rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.12); transition: transform .3s ease; }
.machine.shake .m-dome .cap { animation: tumble .25s ease-in-out infinite alternate; }
@keyframes tumble { from { transform: translate(-4px, 3px) rotate(-14deg) } to { transform: translate(4px, -5px) rotate(18deg) } }
.m-body { position: absolute; left: 0; right: 0; bottom: 0; height: 44%; background: linear-gradient(180deg, #B9443C, var(--booth) 40%, #8F2C27); border-radius: 22px 22px 26px 26px; box-shadow: inset 0 6px 0 rgba(255,255,255,.18), 0 18px 30px rgba(126,86,54,.35); z-index: 1; }
.m-plate { position: absolute; left: 50%; top: 10%; transform: translateX(-50%); background: var(--paper); color: var(--booth); font-family: var(--display); font-size: 16px; padding: 3px 14px; border-radius: 999px; white-space: nowrap; }
.m-knob { position: absolute; left: 50%; top: 34%; transform: translateX(-50%); width: 76px; height: 76px; border-radius: 50%; border: 0; background: radial-gradient(circle at 35% 30%, #fff, #F1EAE0 60%, #D2C6B6); box-shadow: 0 4px 0 #6E211D, 0 8px 14px rgba(0,0,0,.25); display: grid; place-items: center; }
.m-knob i { width: 58px; height: 14px; border-radius: 8px; background: #E4D9CC; box-shadow: inset 0 2px 0 rgba(0,0,0,.08); transition: transform 1.1s cubic-bezier(.5,0,.3,1); }
.machine.turn .m-knob i { transform: rotate(360deg); }
.m-knob[disabled] { opacity: .7; }
.m-chute { position: absolute; left: 50%; bottom: 10%; transform: translateX(-50%); width: 46%; height: 18%; background: #5B1C18; border-radius: 12px 12px 6px 6px; box-shadow: inset 0 6px 10px rgba(0,0,0,.4); }
.drop-cap { position: absolute; left: 50%; bottom: 11%; width: 64px; height: 64px; margin-left: -32px; border: 0; padding: 0; border-radius: 50%; z-index: 3; animation: drop .9s cubic-bezier(.3,1.4,.5,1) both; box-shadow: 0 6px 12px rgba(0,0,0,.25); background: none; }
.drop-cap span { position: absolute; left: 0; right: 0; height: 50%; overflow: hidden; transition: transform .5s ease; }
.drop-cap span:first-child { top: 0; border-radius: 32px 32px 0 0; }
.drop-cap span:last-child { bottom: 0; border-radius: 0 0 32px 32px; background: #FFFDF9; }
.drop-cap.open span:first-child { transform: translateY(-38px) rotate(-24deg); }
.drop-cap.open span:last-child { transform: translateY(38px) rotate(18deg); }
@keyframes drop { 0% { transform: translateY(-60px) scale(.4); opacity: 0 } 60% { opacity: 1 } 100% { transform: none; opacity: 1 } }
.tap-hint { text-align: center; font-size: 14px; color: var(--oak-deep); margin: 0; animation: blink 1.4s ease-in-out infinite; }
@keyframes blink { 50% { opacity: .35 } }
.prize { background: var(--paper); border-radius: 18px; padding: 20px 18px 16px; box-shadow: 0 18px 40px rgba(126,86,54,.25); display: grid; gap: 10px; position: relative; overflow: hidden; animation: pop .5s cubic-bezier(.3,1.5,.5,1); }
@keyframes pop { from { transform: scale(.7); opacity: 0 } to { transform: none; opacity: 1 } }
.prize::before { content: ""; position: absolute; inset: 0 0 auto; height: 6px; background: var(--pc, var(--booth)); }
.prize .tier { font-size: 12px; font-weight: 600; color: var(--pc, var(--booth)); letter-spacing: .06em; }
.prize .pname { font-family: var(--display); font-size: 26px; line-height: 1.25; }
.prize .pdesc { color: var(--muted); font-size: 14px; margin: 0; }
.prize .pcode { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 17px; letter-spacing: .08em; background: var(--cream); border-radius: 10px; padding: 10px 12px; text-align: center; }
.prize .ticket-edge { border-top: 2px dashed var(--line); margin: 4px -18px 0; }
.prize .line-msg { font-family: var(--hand); font-size: 28px; line-height: 1.4; margin: 0; color: var(--oak-deep); }
.confetti { position: fixed; inset: 0; pointer-events: none; z-index: 46; overflow: hidden; }
.confetti i { position: absolute; top: -12px; width: 8px; height: 12px; border-radius: 2px; animation: fall 1.8s ease-in forwards; }
@keyframes fall { to { transform: translateY(105vh) rotate(540deg); opacity: .6 } }
.odds { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.odds th, .odds td { text-align: left; padding: 7px 4px; border-bottom: 1px solid rgba(126,86,54,.15); }
.odds td:last-child, .odds th:last-child { text-align: right; }
details.box { background: rgba(255,253,249,.7); border-radius: 14px; padding: 12px 14px; }
details.box summary { cursor: pointer; font-weight: 600; font-size: 14px; }
.wallet { display: grid; gap: 8px; }
.wallet-item { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: rgba(255,253,249,.75); border-radius: 12px; padding: 10px 12px; font-size: 13px; }
.wallet-item b { font-weight: 600; }
.wallet-item code { font-size: 12px; color: var(--muted); }
.g-tickets { display: flex; justify-content: center; align-items: center; gap: 8px; font-size: 15px; }
.g-tickets b { font-family: var(--display); font-size: 28px; color: var(--booth); font-weight: 400; }

#fallback { position: fixed; inset: 0; display: grid; place-items: center; text-align: center; padding: 24px; background: var(--cream); color: var(--ink); }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }

/* WITH 4233 : 포스트잇 벽 */
.nw { position: fixed; inset: 0; z-index: 42; background: #F4F1EC; overflow-y: auto; -webkit-overflow-scrolling: touch; animation: sheetIn .32s ease; }
.nw-head { position: sticky; top: 0; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: calc(env(safe-area-inset-top, 0px) + 12px) max(16px, env(safe-area-inset-right, 0px)) 12px max(16px, env(safe-area-inset-left, 0px)); background: linear-gradient(#F4F1EC 70%, rgba(244,241,236,0)); }
.nw-head h2 { margin: 0; font-family: var(--display); font-weight: 400; font-size: 22px; line-height: 1.2; }
.nw-head p { margin: 2px 0 0; font-size: 12px; color: var(--muted); }
.nw-head .row { display: flex; gap: 6px; flex-shrink: 0; }
.nw-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 6px; padding: 4px max(14px, env(safe-area-inset-right, 0px)) calc(env(safe-area-inset-bottom, 0px) + 90px) max(14px, env(safe-area-inset-left, 0px)); max-width: 1100px; margin: 0 auto; }
.pi { position: relative; aspect-ratio: 1; border: 0; padding: 12px 11px 10px; text-align: left; font-family: "Nanum Pen Script", cursive; font-size: 19px; line-height: 1.12; color: #2B2622; box-shadow: 0 1px 1px rgba(0,0,0,.08), 0 8px 14px -6px rgba(0,0,0,.28); transform: rotate(var(--r)) translate(var(--dx), var(--dy)); transition: transform .18s ease; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; cursor: pointer; }
.pi::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 18%; background: linear-gradient(rgba(0,0,0,.06), rgba(0,0,0,0)); pointer-events: none; }
.pi:hover, .pi:focus-visible { transform: rotate(0deg) scale(1.06); z-index: 2; }
.pi .t { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; word-break: keep-all; }
.pi .d { font-size: 15px; opacity: .65; align-self: flex-end; }
.pi.new { animation: stick .5s cubic-bezier(.2,1.4,.4,1); }
@keyframes stick { from { transform: scale(1.6) rotate(-8deg); opacity: 0; } to { transform: rotate(var(--r)); opacity: 1; } }
.nw-fab { position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(env(safe-area-inset-bottom, 0px) + 18px); z-index: 4; box-shadow: 0 10px 24px rgba(46,38,33,.3); }
.nw-pop { position: fixed; inset: 0; z-index: 5; background: rgba(30,24,20,.55); display: grid; place-items: center; padding: 20px; animation: fade .2s ease; }
.nw-card { width: min(340px, 86vw); }
.nw-big { width: 100%; aspect-ratio: 1; box-sizing: border-box; padding: 26px 24px 20px; font-family: "Nanum Pen Script", cursive; font-size: 27px; line-height: 1.2; color: #2B2622; box-shadow: 0 24px 50px rgba(0,0,0,.35); display: flex; flex-direction: column; justify-content: space-between; transform: rotate(-1.5deg); animation: rise .3s ease; word-break: keep-all; white-space: pre-wrap; overflow-y: auto; }
.nw-big .d { font-size: 20px; opacity: .7; text-align: right; }
.nw-pop .row { display: flex; gap: 8px; justify-content: center; margin-top: 16px; }
.nw-form { width: min(360px, 90vw); display: grid; gap: 10px; }
.nw-form textarea { width: 100%; box-sizing: border-box; aspect-ratio: 1; border: 0; resize: none; padding: 22px 20px; font-family: "Nanum Pen Script", cursive; font-size: 26px; line-height: 1.2; color: #2B2622; box-shadow: 0 20px 40px rgba(0,0,0,.3); outline: none; }
.nw-form input { border: 0; border-radius: 10px; padding: 10px 12px; font-size: 16px; background: #FFFDF9; }
.nw-cols { display: flex; gap: 8px; justify-content: center; }
.nw-cols button { width: 30px; height: 30px; border-radius: 6px; border: 2px solid transparent; }
.nw-cols button[aria-pressed="true"] { border-color: #fff; box-shadow: 0 0 0 2px #2B2622; }
.nw-form .note { color: #F4ECE2; font-size: 12px; text-align: center; margin: 0; }
.cg { background: radial-gradient(120% 70% at 50% 18%, #36584A 0%, #2C4A3C 55%, #243E32 100%); color: #F6F1E4; }
.cg .nw-head { background: linear-gradient(#34564A 70%, rgba(52,86,74,0)); justify-content: center; text-align: center; }
.cg .nw-head .row { position: absolute; right: max(16px, env(safe-area-inset-right, 0px)); top: calc(env(safe-area-inset-top, 0px) + 12px); }
.cg .nw-head h2 { color: #F6F1E4; font-family: "Pretendard Label", "Apple SD Gothic Neo", sans-serif; font-weight: 600; letter-spacing: -.01em; }
.cg .nw-head .btn-line { color: #F6F1E4; border-color: rgba(246,241,228,.55); background: rgba(255,255,255,.06); }
.cg .nw-head p { color: rgba(246,241,228,.72); font-family: "Pretendard Label", "Apple SD Gothic Neo", sans-serif; font-weight: 500; }
.cg-hero { max-width: 560px; margin: 0 auto; padding: 0 max(14px, env(safe-area-inset-left, 0px)); text-align: center; }
.cg-hero canvas { width: 100%; height: auto; display: block; cursor: pointer; touch-action: manipulation; }
.cg-big-count { margin: 6px 0 4px; font-size: 22px; line-height: 1.35; color: #F6F1E4; font-weight: 500; }
.cg-big-count b { font-size: 52px; line-height: 1.1; color: #F2C66A; font-weight: 700; margin-right: 2px; letter-spacing: -.02em; }
.cg-hint { margin: 2px 0 0; font-size: 12.5px; color: rgba(246,241,228,.7); }
.cg-sec { max-width: 1100px; margin: 22px auto 4px; padding: 0 max(16px, env(safe-area-inset-left, 0px)); font-size: 15px; font-weight: 600; color: #F2C66A; }
.cg-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(146px, 1fr)); gap: 18px 12px; padding: 12px max(14px, env(safe-area-inset-right, 0px)) calc(env(safe-area-inset-bottom, 0px) + 96px) max(14px, env(safe-area-inset-left, 0px)); max-width: 1100px; margin: 0 auto; }
.cg-card { position: relative; background: #FFFDF9; color: #2B2622; border: 0; padding: 8px 8px 10px; border-radius: 4px; box-shadow: 0 8px 18px rgba(0,0,0,.32); transform: rotate(var(--r, 0deg)); text-align: left; display: flex; flex-direction: column; gap: 3px; cursor: pointer; font: inherit; transition: transform .15s ease; }
.cg-card.new { animation: rise .45s ease; }
.cg-card:hover { transform: rotate(0deg) translateY(-3px) scale(1.03); z-index: 1; }
.cg-card .pin { position: absolute; top: -6px; left: 50%; width: 12px; height: 12px; margin-left: -6px; border-radius: 50%; background: #E0507E; box-shadow: 0 2px 3px rgba(0,0,0,.4); }
.cg-card img { width: 100%; aspect-ratio: 5 / 6; object-fit: cover; background: #F4EADC; border-radius: 2px; display: block; }
.cg-card .to { font-family: "Nanum Pen Script", cursive; font-size: 17px; color: #7E5636; line-height: 1.1; }
.cg-card .t { font-family: "Nanum Pen Script", cursive; font-size: 19px; line-height: 1.15; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.3em; word-break: keep-all; }
.cg-big { width: 100%; box-sizing: border-box; background: #FFFDF9; color: #2B2622; padding: 14px 14px 18px; border-radius: 6px; box-shadow: 0 24px 50px rgba(0,0,0,.45); transform: rotate(-1deg); animation: rise .3s ease; max-height: 86vh; overflow-y: auto; }
.cg-big img { width: 100%; aspect-ratio: 5 / 6; object-fit: cover; background: #F4EADC; border-radius: 3px; display: block; }
.cg-big .to { font-family: "Nanum Pen Script", cursive; font-size: 26px; color: #7E5636; margin-top: 8px; }
.cg-big .t { font-family: "Nanum Pen Script", cursive; font-size: 28px; line-height: 1.2; margin: 2px 0 8px; word-break: keep-all; white-space: pre-wrap; }
.cg-big .fl { font-size: 12px; color: #7A6D63; display: flex; flex-wrap: wrap; gap: 4px 10px; }
.cg-big .d { font-size: 12px; color: #9A8D83; text-align: right; margin-top: 6px; }
.cg-form { width: min(380px, 92vw); max-height: 92vh; overflow-y: auto; box-sizing: border-box; background: #FFFDF9; color: #2B2622; border-radius: 16px; padding: 16px; display: grid; gap: 10px; box-shadow: 0 24px 50px rgba(0,0,0,.45); }
.cg-form h3 { margin: 0; font-size: 17px; }
.cg-form .pv { display: block; width: 120px; margin: 0 auto; aspect-ratio: 5 / 6; border-radius: 6px; background: #F4EADC; }
.cg-form .pk { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.cg-form .pk button { border: 1.5px solid #E2D8CB; background: #fff; border-radius: 10px; padding: 6px 2px; font-size: 12px; display: grid; justify-items: center; gap: 3px; color: #2B2622; }
.cg-form .pk button[aria-pressed="true"] { border-color: #2B2622; background: #F4EADC; }
.cg-form .pk .dot { width: 16px; height: 16px; border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(0,0,0,.12); }
.cg-form textarea, .cg-form input { width: 100%; box-sizing: border-box; border: 1.5px solid #E2D8CB; border-radius: 10px; padding: 10px 12px; font-size: 16px; font-family: inherit; background: #fff; outline: none; }
.cg-form textarea { height: 78px; resize: none; }
.cg-form .row { display: flex; gap: 8px; justify-content: center; }
.cg-form .note { margin: 0; font-size: 12px; color: #7A6D63; text-align: center; }

@keyframes fade { from { opacity: 0; } to { opacity: 1; } }
/* 칠판에 붙은 편지: 글이 주인공, 꽃다발은 우표처럼 작게 */
.cg-wall { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 18px 14px; }
.cg-card { padding: 16px 14px 12px; gap: 12px; justify-content: space-between; min-height: 156px; }
.cg-card .t { font-family: "Gowun Batang", "Nanum Myeongjo", serif; font-size: 15.5px; line-height: 1.6; color: #2B2622; -webkit-line-clamp: 4; min-height: 0; word-break: keep-all; letter-spacing: -.005em; }
.cg-card .foot { display: flex; align-items: center; gap: 8px; border-top: 1px dashed #E6D9C8; padding-top: 9px; }
.cg-card .foot img { width: 34px; height: 40px; aspect-ratio: auto; object-fit: contain; background: #F4EADC; border-radius: 4px; flex: none; }
.cg-card .to { font-family: "Gowun Batang", "Nanum Myeongjo", serif; font-weight: 700; font-size: 13px; color: #7E5636; line-height: 1.3; }
.cg-big .to { font-family: "Gowun Batang", "Nanum Myeongjo", serif; font-weight: 700; font-size: 18px; margin-top: 10px; }
.cg-big .t { font-family: "Gowun Batang", "Nanum Myeongjo", serif; font-size: 19px; line-height: 1.65; margin: 4px 0 10px; }
#stage, #stage canvas, .cg-card img, .cg-big img, .cg-hero canvas { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
img { -webkit-user-drag: none; }
.copyright { margin: 6px 0 0; font-size: 11.5px; color: var(--muted); text-align: center; }
/* (2026-11-10) v129 가챠 화면 디자인은 사용자 요청으로 되돌림(이전 기계 디자인) */

/* ABOUT 하단: 전문가 · 지점 · 푸터 (읽기 쉬운 레이아웃) */
.ab2 { gap: 14px; }
.ab2-h { }
.ab2-h::before { }
.ab2-card { background: #F6F5F2; border-radius: 18px; padding: 12px 18px; display: grid; }
.ab2-lead { margin: 0 0 4px; padding-bottom: 14px; border-bottom: 1px solid #E2DDD6; font: 500 13.5px/1.6 "Pretendard Label", var(--body); color: #3A322D; word-break: keep-all; }
.ab2-pro { display: grid; gap: 2px; padding: 12px 0; border-bottom: 1px solid #E2DDD6; }
.ab2-pro:last-child { border-bottom: 0; padding-bottom: 4px; }
.ab2-pro b { font: 600 14.5px/1.4 "Pretendard Head", "Pretendard Label", var(--body); color: #2E2621; }
.ab2-pro span { font: 400 13.5px/1.6 "Pretendard Label", var(--body); color: #4A413B; }
.ab2-pro span i { font-style: normal; color: #9A8F86; margin: 0 8px; }
.ab2-branches { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.ab2-br { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 14px; border-radius: 12px; border: 1px solid #E0D8D2; color: #2E2621; text-decoration: none; font: 600 13.5px/1.3 "Pretendard Head", "Pretendard Label", var(--body); min-width: 0; }
.ab2-br span { min-width: 0; overflow-wrap: anywhere; }
.ab2-br i { font-style: normal; color: #E07A5F; font-size: 18px; line-height: 1; }
.ab2-c0 { background: #FDF1EE; } .ab2-c1 { background: #F4F0FB; border-color: #DDD5EA; } .ab2-c2 { background: #F1F4EE; border-color: #D9E0D3; } .ab2-c3 { background: #EEF4FB; border-color: #D3DDEA; }
.ab2-br:hover { filter: brightness(.98); }
.ab2-note { margin: 0; font: 400 12.5px/1.6 "Pretendard Label", var(--body); color: #4A413B; }
.ab2-foot { display: grid; justify-items: center; gap: 8px; padding: 22px 0 6px; text-align: center; }
.ab2-slogan { margin: 0; font: 500 13.5px/1.4 "Pretendard Label", var(--body); color: #2E2621; }
.ab2-brand { margin: 0; font: 600 13px/1.3 "Pretendard Head", "Pretendard Label", var(--body); color: #8C6E5A; letter-spacing: .02em; }
.ab2-links { display: flex; gap: 36px; margin-top: 8px; }
.ab2-links a { color: #3A322D; display: inline-flex; padding: 4px; border-radius: 8px; }
.ab2-links a:hover { background: rgba(0,0,0,.04); }

/* ===== 장점 꽃다발 · Figma 디자인 (fg) — 2026-11-10 이식 ===== */

/* ===== 장점 꽃다발 · Figma 디자인 (fg) ===== */
@font-face { font-family: "Ownglyph Ryuttung"; src: url("../fonts/Ownglyph_ryuttung-Rg.woff2") format("woff2"); font-weight: 400; font-display: swap; }
:root { --fg-bg: #FDFAF3; --fg-ink: #14110F; --fg-sub: #36302B; --fg-brown: #5C4B3D; --fg-line: #CDC6C1; --fg-on: #8C7F72; --fg-mute: #8B7969;
  --fg-sans: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "IBM Plex Sans KR", "Malgun Gothic", sans-serif;
  --fg-bold: "Pretendard Head", var(--fg-sans); --fg-hand: "Ownglyph Ryuttung", "Nanum Pen Script", cursive; }
.sheet.sheet-fg, .lv.lv-fg { background: var(--fg-bg); color: var(--fg-ink); }
.sheet-fg .sheet-inner, .lv-fg .lv-inner { max-width: 430px; min-height: 100%; display: flex; flex-direction: column; gap: 0; padding: env(safe-area-inset-top, 0px) 0 0; box-sizing: border-box; }
.fg-top { display: flex; justify-content: flex-end; padding: 8px 10px 0; height: 46px; box-sizing: border-box; }
.fg-x { width: 38px; height: 38px; border-radius: 50%; border: 0; background: transparent; color: var(--fg-mute); font-size: 18px; line-height: 1; cursor: pointer; }
.fg-x:hover { background: rgba(92,75,61,.06); }
.fg-body { flex: 1 0 auto; padding: 56px 16px 8px; box-sizing: border-box; width: 100%; }
.fg-title, .sheet .fg-title, .lv .fg-title { margin: 0; text-wrap: wrap; font: 600 25px/36px var(--fg-bold); color: var(--fg-ink); text-align: center; letter-spacing: -.01em; word-break: keep-all; }
.fg-sub { margin: 14px 0 0; font: 600 17px/25px var(--fg-sans); color: rgba(54,48,43,.68); text-align: center; letter-spacing: -.17px; word-break: keep-all; }
.fg-hero { position: relative; width: 219px; height: 226px; margin: 28px auto 0; }
.fg-hero-img { position: absolute; left: 50%; top: 10px; width: 146px; transform: translateX(-50%) rotate(-7.08deg); animation: fgFloat 4.2s ease-in-out infinite; }
.fg-shadow { position: absolute; left: 50%; bottom: 0; width: 105px; height: 17px; transform: translateX(-50%); border-radius: 50%; background: radial-gradient(closest-side, rgba(162,153,134,.62), rgba(232,228,219,0)); filter: blur(2px); }
.fg-gift { display: flex; justify-content: center; align-items: flex-start; gap: 9px; margin: 32px auto 0; font: 500 17px/25px var(--fg-sans); color: var(--fg-sub); letter-spacing: -.34px; word-break: keep-all; }
.fg-gift svg { flex: none; width: 21px; height: 22px; margin-top: 1px; }
.fg-gift b { font-weight: 700; }
.fg-gift-c { display: block; text-align: center; margin-top: 34px; font-weight: 400; }
.fg-gift-c u { text-underline-offset: 3px; }
.fg-zone { margin-top: 84px; text-align: center; }
.fg-photo { width: 100%; max-width: 345px; height: 333px; margin: 20px auto 0; overflow: hidden; }
.fg-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 79%; display: block; }
.fg-note { margin: 21px 0 0; font: 500 17px/25px var(--fg-sans); color: var(--fg-sub); letter-spacing: -.34px; word-break: keep-all; }
.fg-bar { position: sticky; bottom: 0; z-index: 3; display: flex; gap: 6px; padding: 40px 16px calc(env(safe-area-inset-bottom, 0px) + 22px); margin-top: auto; background: linear-gradient(rgba(253,250,243,0), var(--fg-bg) 44%); box-sizing: border-box; width: 100%; }
.fg-btn { flex: 1 1 0; min-width: 0; height: 56px; border: 0; border-radius: 20px; font: 600 18px/33px var(--fg-bold); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 7px; text-decoration: none; white-space: nowrap; transition: background .2s, transform .1s; padding: 0 10px; }
.fg-btn:active { transform: scale(.98); }
.fg-pri { background: var(--fg-brown); color: #fff; }
.fg-pri.is-off { background: rgba(82,60,41,.4); }
.fg-sec { background: #E8E4DB; color: #423529; }
.fg-kakao { background: #FEE500; color: #191919; }
.fg-btn[disabled] { opacity: .7; cursor: default; }
.fg-bar-rcv .fg-sec { flex-grow: 152; } .fg-bar-rcv .fg-pri { flex-grow: 201; }
/* form */
.fg-form .fg-in { padding: 0 19px; }
.fg-label { display: block; margin: 0; font: 600 17px/26px var(--fg-bold); color: var(--fg-ink); letter-spacing: -.17px; }
.fg-rel-label { margin-top: 62px; }
.fg-chiprow { display: flex; gap: 8px; margin-top: 8px; }
.fg-chiprow:first-of-type { margin-top: 12px; }
.fg-chip { height: 43px; padding: 0 13px; border: 0; border-radius: 15px; background: #fff; box-shadow: inset 0 0 0 .8px var(--fg-line), 0 1px 6px rgba(199,190,181,.17); font: 400 17px/25px var(--fg-sans); color: var(--fg-mute); cursor: pointer; transition: box-shadow .15s; }
.fg-chip[aria-pressed="true"] { box-shadow: inset 0 0 0 2px var(--fg-on), 0 1px 6px rgba(199,190,181,.17); color: #5C4B3D; }
.fg-name-label { margin-top: 53px; }
.fg-input { position: relative; height: 43px; margin-top: 12px; background: #fff; border-radius: 15px; box-shadow: inset 0 0 0 .8px var(--fg-line); transition: box-shadow .15s; }
.fg-input:focus-within { box-shadow: inset 0 0 0 2px var(--fg-on); }
.fg-input input { -webkit-appearance: none; appearance: none; box-sizing: border-box; width: 100%; height: 100%; border: 0; outline: 0; background: transparent; padding: 0 44px 0 14px; font: 400 17px/25px var(--fg-sans); color: var(--fg-ink); border-radius: 15px; }
.fg-input input::placeholder { color: rgba(0,0,0,.4); }
.fg-w285 { max-width: 285px; }
.fg-pen { position: absolute; right: 16px; top: 12px; width: 18px; height: 18px; display: grid; place-items: center; pointer-events: none; }
.fg-pen svg { width: 6px; height: 19.7px; transform: rotate(45deg); }
.fg-err { min-height: 20px; margin: 10px 0 0; font: 500 13px/20px var(--fg-sans); color: #C0503E; }
/* pick */
.fg-grid { display: grid; grid-template-columns: repeat(3, 97px); gap: 11px 12px; justify-content: center; margin-top: 74px; }
.fg-trait { height: 90px; border: 0; border-radius: 20px; background: #fff; box-shadow: inset 0 0 0 .8px var(--fg-line), 0 1px 6px rgba(199,190,181,.22); display: flex; flex-direction: column; align-items: center; padding: 14px 2px 0; cursor: pointer; transition: box-shadow .15s, transform .15s; }
.fg-trait img { width: 25px; height: 25px; object-fit: contain; }
.fg-trait b { margin-top: 5px; font: 600 16px/19px var(--fg-bold); color: #000; letter-spacing: -.16px; }
.fg-trait small { margin-top: 2px; font: 400 9px/11px var(--fg-sans); color: #4A4A4A; letter-spacing: -.18px; white-space: nowrap; }
.fg-trait[aria-pressed="true"] { box-shadow: inset 0 0 0 2px var(--fg-on), 0 1px 6px rgba(199,190,181,.22); }
.fg-trait[aria-pressed="true"] img { animation: fgBob .4s ease; }
.fg-count { margin: 16px 0 0; text-align: center; font: 500 13px/18px var(--fg-sans); color: #988F86; }
/* write */
.fg-starters { display: flex; justify-content: center; gap: 7px; margin-top: 45px; flex-wrap: wrap; }
.fg-chip-s { height: 32px; padding: 0 10px; border-radius: 11px; font-size: 12.7px; line-height: 18.7px; }
.fg-ta { position: relative; height: 261px; margin-top: 12px; background: #fff; border-radius: 15px; box-shadow: inset 0 0 0 2px var(--fg-on); }
.fg-ta textarea { box-sizing: border-box; width: 100%; height: 100%; border: 0; outline: 0; resize: none; background: transparent; padding: 10px 44px 12px 15px; font: 400 20px/30px var(--fg-hand); color: #3B332E; border-radius: 15px; }
.fg-ta textarea::placeholder { color: rgba(0,0,0,.4); }
.fg-ta .fg-pen { top: 16px; }
.fg-help { display: flex; justify-content: space-between; gap: 10px; margin-top: 10px; padding: 0 3px; font: 400 11px/14px var(--fg-sans); color: #988F86; }
.fg-from-label { margin-top: 44px; }
/* ready */
.fg-ready { display: flex; flex-direction: column; align-items: center; padding-top: 84px; }
.fg-env { position: relative; width: 194px; height: 208px; margin-top: 157px; }
.fg-env img { position: absolute; left: 0; right: 0; margin: 0 auto; top: 0; width: 169px; animation: fgFloat 3.6s ease-in-out infinite, fgIn .5s ease both; }
.fg-env .fg-shadow { width: 194px; height: 34px; }
/* card */
.fg-view { padding-top: 26px; }
.fg-card { position: relative; width: calc(100% - 58px); max-width: 320px; min-height: 445px; margin: 33px auto 0; box-sizing: border-box; padding: 27px 26px 20px; border-radius: 31px; background: linear-gradient(145.78deg, #FFE68B 2%, #FFCFB2 100.9%); display: flex; flex-direction: column; animation: fgIn .55s ease both; }
.fg-to, .fg-from, .fg-msg { font: 400 20px/28.2px var(--fg-hand); color: #4D443C; }
.fg-from { margin-top: auto; padding-top: 12px; text-align: right; }
.fg-bqwrap { position: relative; width: 197px; height: 197px; margin: 2px auto 0; display: grid; place-items: center; }
.fg-glow { position: absolute; inset: 0; border-radius: 50%; background: linear-gradient(#FFFFFF, #FFE292); filter: blur(4.5px); animation: fgGlow 3.2s ease-in-out infinite; }
.fg-msg { margin: 14px 0 0; line-height: 30px; white-space: pre-wrap; overflow-wrap: anywhere; }
/* composed bouquet */
.fg-bq { position: relative; width: 100%; aspect-ratio: 100 / 115; }
.fg-bqwrap .fg-bq { width: 150px; }
.fg-bq > * { position: absolute; }
.fg-bq .fg-base { height: auto; } /* 다발·잎·줄기 이미지 (위치·폭은 lounge.js 인라인) */
.fg-bq .fg-fl { transform: translate(-50%, -50%) rotate(var(--r)); animation: fgPop .6s cubic-bezier(.34,1.56,.64,1) both; animation-delay: var(--d); filter: drop-shadow(0 2px 2px rgba(120,60,40,.12)); }
/* after send */
.fg-box { margin: 26px auto 0; width: calc(100% - 58px); max-width: 320px; box-sizing: border-box; padding: 18px 18px 16px; border-radius: 20px; background: #fff; box-shadow: inset 0 0 0 .8px var(--fg-line), 0 1px 6px rgba(199,190,181,.22); text-align: center; }
.fg-box .fg-gift { margin: 0; }
.fg-box .fg-btn { width: 100%; margin-top: 14px; height: 48px; font-size: 16px; border-radius: 16px; }
.fg-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px 18px; margin: 20px 0 6px; }
.fg-link { border: 0; background: none; padding: 4px 0; font: 500 14px/20px var(--fg-sans); color: var(--fg-mute); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.fg-link[disabled] { text-decoration: none; cursor: default; }
.fg-msgline { margin: 12px 0 0; text-align: center; font: 500 13px/19px var(--fg-sans); color: #988F86; min-height: 19px; }
@keyframes fgPop { from { opacity: 0; transform: translate(-50%, -50%) rotate(var(--r)) scale(.2); } to { opacity: 1; transform: translate(-50%, -50%) rotate(var(--r)) scale(1); } }
@keyframes fgIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes fgFloat { 0%, 100% { translate: 0 0; } 50% { translate: 0 -7px; } }
@keyframes fgGlow { 0%, 100% { opacity: .92; transform: scale(1); } 50% { opacity: 1; transform: scale(1.03); } }
@keyframes fgBob { 0% { transform: scale(1); } 40% { transform: scale(1.3) rotate(-8deg); } 100% { transform: scale(1); } }
@media (max-width: 360px) { .fg-grid { grid-template-columns: repeat(3, minmax(0, 92px)); gap: 10px; } .fg-title { font-size: 23px; line-height: 33px; } .fg-chip { padding: 0 11px; } }
@media (prefers-reduced-motion: reduce) { .fg-hero-img, .fg-env img, .fg-glow { animation: none; } .fg-bq .fg-fl, .fg-card { animation-duration: .01s; } }

/* ===== 수험생 응원 교실 · Figma 디자인 (cf2) — 2026-11-10 =====
   글꼴: 메모먼트 꾹꾹체 — 무료(상업 이용·웹 임베딩 허용, 파일 재배포 금지). fonts/에 원본 파일을 넣으면 적용됨.
   설치된 PC에서는 local()로 바로 보이고, 파일이 없으면 고운돋움으로 대체. */
@font-face { font-family: "Memoment Kkukkkuk"; font-display: swap;
  src: local("Memoment Kkukkkuk"), local("MemomentKkukkukk"), local("메모먼트 꾹꾹체"),
       url("../fonts/MemomentKkukkukk.ttf") format("truetype"); }
:root { --cf-green: #289D72; --cf-ink: #294D40; --cf-mm: "Memoment Kkukkkuk", "Gowun Dodum", sans-serif; --cf-bold: "Pretendard Head", "Pretendard Label", "Apple SD Gothic Neo", sans-serif;
  --cf-grad: linear-gradient(180deg, #289D72 0%, #52B08D 31.6%, #79C2A7 45.4%, #D9EEE6 64.3%, #FFFFFF 85%); }

/* 1. 교실 입장 화면 */
#fader.cls { background: var(--cf-green); color: #fff; font-family: var(--cf-mm); font-size: 32.7px; letter-spacing: 0; }

/* 6. 교실 안 빨간 버튼 → 초록 */
body.in-class .btn-red, body.in-class #btnReserve, body.in-class .tb.reserve { background: var(--cf-green) !important; border-color: var(--cf-green) !important; color: #fff !important; }

/* 공통 카드 · 버튼 */
.cf-card { position: relative; box-sizing: border-box; width: min(343px, calc(100vw - 32px)); background: #fff var(--cf-grad) no-repeat; border-radius: 20.5px; padding: 42px 24px 24px; display: grid; gap: 0; overflow: hidden; text-align: center; color: var(--cf-ink); box-shadow: 0 18px 50px rgba(20, 40, 32, .28); cursor: default; animation: rise .3s ease; }
.cf-card::before { content: ""; position: absolute; inset: 0 -1px auto; height: 100%; background: linear-gradient(rgba(255,255,255,.38), rgba(255,255,255,0)); mix-blend-mode: multiply; pointer-events: none; }
.cf-card > * { position: relative; }
.cf-title { margin: 0; font-family: var(--cf-mm); font-weight: 400; font-size: clamp(24px, 7.4vw, 30px); line-height: 36px; color: #fff; word-break: keep-all; }
.cf-row { display: flex; gap: 9px; justify-content: center; }
.cf-btn { flex: 1 1 0; min-width: 0; height: 48px; border: 0; border-radius: 16px; font: 700 18px/1 var(--cf-bold); cursor: pointer; padding: 0 12px; white-space: nowrap; }
.cf-btn:active { transform: translateY(1px); }
.cf-green { background: var(--cf-green); color: #fff; }
.cf-mute { background: #88B9A8; color: #fff; flex: 0 0 113px; }
.cf-yellow { background: #FFE600; color: #161616; }
.cf-line { background: #fff; color: var(--cf-green); border: 1px solid var(--cf-green); }
.cf-wide { flex: 1 1 100%; }

/* 2. 입장 안내 카드 (Figma 343×516) */
.cls-intro.cf { background: rgba(20, 40, 32, .45); }
.cf-intro { padding: 53px 24px 24px; }
.cf-clover { width: 78px; height: 90px; object-fit: contain; margin: 22px auto 30px; display: block; }
.cf-steps { list-style: none; margin: 0 auto; padding: 0; text-align: left; font-family: var(--cf-mm); font-size: 21px; line-height: 30px; letter-spacing: -.01em; color: var(--cf-ink); }
.cf-luck { margin: 18px 0 26px; font-family: var(--cf-mm); font-size: 15.5px; line-height: 21.2px; letter-spacing: -.01em; color: #3C9775; word-break: keep-all; }

/* 3. 편지 쓰기 카드 (Figma 343×508) */
.cf-write { padding-top: 42px; background-image: linear-gradient(180deg, #289D72 0%, #52B08D 31.6%, #79C2A7 52.7%, #D9EEE6 81.4%, #FFFFFF 99.7%); max-height: 94vh; overflow-y: auto; }
.cf-pk { display: grid; grid-template-columns: 93fr 97fr 93fr; gap: 6px 8px; margin: 25px 0 15px; }
.cf-pk button { position: relative; height: 54px; background: #fff; border: .6px solid #CDC6C1; border-radius: 11px; box-shadow: 0 .7px 4.4px rgba(199, 190, 181, .22); font-family: var(--cf-mm); font-size: 14.8px; color: var(--cf-ink); cursor: pointer; padding: 0; }
.cf-pk button span { position: absolute; left: 0; right: 0; top: 30px; line-height: 18px; }
.cf-pk button .fl { position: absolute; left: 50%; top: 4px; width: 26px; height: 26px; margin-left: -13px; object-fit: contain; filter: drop-shadow(0 1px 1px rgba(120,60,40,.15)); transition: transform .2s; }
.cf-pk button[aria-pressed="true"] .fl { transform: scale(1.12) rotate(-6deg); }
.cf-pk button .ck { position: absolute; right: 6px; top: 5px; width: 15px; height: 17px; object-fit: contain; opacity: 0; transform: scale(.4); transition: opacity .18s, transform .22s; }
.cf-pk button[aria-pressed="true"] .ck { opacity: 1; transform: none; }
.cf-pk button[aria-pressed="true"] { border-color: var(--cf-green); box-shadow: 0 0 0 1px var(--cf-green) inset, 0 .7px 4.4px rgba(199, 190, 181, .22); }
.cf-field { position: relative; display: block; margin-top: 8px; }
.cf-field textarea, .cf-field input { display: block; width: 100%; box-sizing: border-box; background: #fff; border: .8px solid #CDC6C1; border-radius: 10px; padding: 6px 40px 6px 13px; font: 400 15px/25px "Pretendard Label", "Apple SD Gothic Neo", sans-serif; color: #2B2622; outline: none; }
.cf-field textarea { height: 72px; resize: none; }
.cf-field input { height: 38px; }
.cf-field textarea::placeholder, .cf-field input::placeholder { color: #727674; }
.cf-field textarea:focus, .cf-field input:focus { border-color: var(--cf-green); }
.cf-pen { position: absolute; right: 13px; top: 10px; width: 17.3px; height: 17.3px; pointer-events: none; }
.cf-msg { min-height: 16px; margin: 6px 0 4px; font: 500 12px/16px "Pretendard Label", sans-serif; color: #C9524A; }

/* 4. 완성 카드 (Figma 343×508) */
.cf-wrap { display: grid; justify-items: center; gap: 16px; width: min(343px, calc(100vw - 32px)); max-height: 96vh; overflow-y: auto; }
.cf-count { margin: 0; font-family: var(--cf-mm); font-weight: 400; font-size: 30px; line-height: 36px; color: #fff; text-align: center; text-shadow: 0 2px 10px rgba(0, 0, 0, .25); }
.cf-count b { font-weight: 400; color: #4CCA9A; }
.cf-letter { width: 100%; padding: 23px 24px 20px; text-align: left; background-image: linear-gradient(180deg, #289D72 17.1%, #52B08D 37.9%, #79C2A7 52.2%, #D9EEE6 81.4%, #FFFFFF 99.7%); }
.cf-photo { height: 234px; margin: 0 -0.5px; border-radius: 11px; background: linear-gradient(#fff, #FFFAEE); display: grid; place-items: center; overflow: hidden; }
.cf-photo { position: relative; }
.cf-photo .cf-bqcv { position: relative; z-index: 1; width: 128px; height: auto; margin-top: -6px; }
.cf-photo .cf-bqsh { position: absolute; left: 50%; bottom: 22px; width: 86px; transform: translateX(-50%); opacity: .8; }
.cf-to { margin: 23px 0 0; font-family: var(--cf-mm); font-size: 19px; line-height: 28.2px; color: #fff; }
.cf-t { margin: 9px 0 0; font-family: var(--cf-mm); font-size: 21px; line-height: 28.2px; color: #fff; word-break: keep-all; white-space: pre-wrap; }
.cf-fl { margin: 22px 0 0; font: 500 12px/18px "Pretendard Label", sans-serif; letter-spacing: -.02em; color: var(--cf-ink); }
.cf-d { margin: 14px 0 0; text-align: right; font-family: var(--cf-mm); font-size: 14.8px; line-height: 21px; color: rgba(41, 77, 64, .73); }
.cf-under { width: 100%; }

/* 5. 붙인 뒤 카드 (Figma 343×364) */
.cf-done { padding: 67px 24px 24px; }
.cf-doodle { position: absolute !important; left: 0; top: 0; width: 100%; height: auto; pointer-events: none; }
.cf-body { margin: 46px 0 50px; font-family: var(--cf-mm); font-size: 21px; line-height: 30px; letter-spacing: -.01em; color: var(--cf-ink); word-break: keep-all; }

/* 7. 갤러리 (Figma 639×1092) */
.nw.cg.cf-gal { background: #28996B linear-gradient(180deg, #026540 0%, #289D72 28.6%, #52B08D 42.9%, #79C2A7 52.7%, #D9EEE6 81.4%, #FFFFFF 99.7%) no-repeat; background-size: 100% max(1567px, 100%); color: #fff; }
.cf-ghead { position: relative; text-align: center; padding: calc(env(safe-area-inset-top, 0px) + 50px) 56px 0; }
.cf-ghead h2 { margin: 0; font-family: var(--cf-mm); font-weight: 400; font-size: 32.7px; line-height: 39.3px; letter-spacing: -.01em; }
.cf-ghead p { margin: 5px 0 0; font-family: var(--cf-mm); font-size: 14.2px; line-height: 19.6px; letter-spacing: -.01em; }
.cf-gx { position: fixed; top: calc(env(safe-area-inset-top, 0px) + 14px); right: max(16px, env(safe-area-inset-right, 0px)); z-index: 4; width: 38px; height: 38px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .92); color: var(--cf-ink); font-size: 16px; cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, .15); }
.cf-ghero { text-align: center; padding: 0 16px; }
.cf-ghero img { display: block; width: min(276px, 64vw); height: auto; margin: 20px auto 0; }
.cf-gcount { margin: 0; font-family: var(--cf-mm); font-size: 21.6px; line-height: 29.7px; letter-spacing: -.01em; }
.cf-gcount b { font-weight: 400; font-size: 43.2px; line-height: 51.9px; color: #FFD086; margin-right: 4px; letter-spacing: -.01em; }
.cf-ghint { margin: 2px 0 0; font-family: var(--cf-mm); font-size: 14.2px; line-height: 19.6px; }
.cf-gwall { display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 22px 12px; max-width: 760px; margin: 0 auto; padding: 32px max(16px, env(safe-area-inset-right, 0px)) calc(env(safe-area-inset-bottom, 0px) + 110px) max(16px, env(safe-area-inset-left, 0px)); }
.cf-gcard { position: relative; display: flex; flex-direction: column; justify-content: space-between; min-height: 138px; padding: 12px 11px 10px; border: 0; border-radius: 4px; background: linear-gradient(#fff, #FFFAEE); color: var(--cf-ink); text-align: left; cursor: pointer; transform: rotate(var(--r, 0deg)); box-shadow: 0 4px 10px rgba(20, 60, 45, .16); transition: transform .15s; }
.cf-gcard:hover { transform: rotate(0deg) translateY(-3px); }
.cf-gcard.new { animation: rise .45s ease; }
.cf-gcard .pin { position: absolute; top: -5px; left: 50%; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: #FFD086; }
.cf-gcard .t { font-family: var(--cf-mm); font-size: 13px; line-height: 18px; letter-spacing: -.01em; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; word-break: keep-all; }
.cf-gcard .foot { display: flex; align-items: center; gap: 6px; margin-top: 10px; padding-top: 8px; border-top: 1px dashed rgba(41, 77, 64, .35); }
.cf-gcard .th { flex: none; width: 22px; height: 23px; border-radius: 3px; background: #A7D7C5; display: grid; place-items: center; }
.cf-gcard .th img { width: 17px; height: 20px; object-fit: contain; }
.cf-gcard .to { font-family: var(--cf-mm); font-size: 12px; line-height: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cf-fab { position: fixed; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 40px); transform: translateX(-50%); width: auto; flex: none; height: 44px; padding: 0 22px; font-size: 15px; border-radius: 14px; filter: drop-shadow(0 3px 6px rgba(41, 77, 64, .29)); z-index: 3; }
@media (prefers-reduced-motion: reduce) { .cf-card, .cf-gcard.new { animation: none; } }

/* 4-1. 완성 편지: Figma 장점 꽃다발 노란 편지지 (2026-11-10) */
.cf-card.cf-letter { padding: 27px 26px 20px; border-radius: 31px; background: linear-gradient(145.78deg, #FFE68B 2%, #FFCFB2 100.9%); box-shadow: 0 18px 44px rgba(120, 80, 30, .22); color: #4D443C; }
.cf-card.cf-letter::before { display: none; }
.cf-letter .cf-to { margin: 0; color: #4D443C; font-size: 20px; }
.cf-letter .cf-photo { position: relative; width: 197px; height: 197px; margin: 4px auto 0; border-radius: 50%; background: none; overflow: visible; }
.cf-letter .cf-photo .fg-glow { z-index: 0; }
.cf-letter .cf-photo .cf-bqcv { width: 150px; margin: 0; }
.cf-letter .cf-t { margin: 14px 0 0; color: #4D443C; font-size: 20px; line-height: 30px; }
/* 띄어쓰기 없이 길게 친 글도 카드 안에서 줄바꿈: 그리드 칸이 긴 글만큼 넓어져 카드가 잘리고 꽃다발이 옆으로 밀리던 문제 */
.cf-card { grid-template-columns: minmax(0, 1fr); }
.cf-t, .cf-to, .cf-fl, .cf-gcard .t { overflow-wrap: anywhere; }
/* 사용자가 적은 이름·글이 들어가는 곳: 띄어쓰기 없이 길어도 칸 밖으로 넘치지 않게 (평소 줄바꿈은 그대로) */
.fg-title, .fg-to, .fg-from, .fg-paper b, .cf-count { overflow-wrap: anywhere; }
.cf-letter .cf-fl { margin: 16px 0 0; color: rgba(77, 68, 60, .75); }
.cf-letter .cf-d { margin: 8px 0 0; color: rgba(77, 68, 60, .7); }

/* 2026-11-10 피드백: 입장 카드 그라데이션을 위로(흰 부분 넓게), 행운 선택은 색으로, 인스타그램 버튼 */
.cf-intro { background-image: linear-gradient(180deg, #289D72 0%, #52B08D 18%, #79C2A7 27%, #D9EEE6 40%, #FFFFFF 54%); }
.cf-pk button[aria-pressed="true"] { background: #C6EAD8; border-color: var(--cf-green); box-shadow: 0 0 0 1.5px var(--cf-green) inset, 0 2px 8px rgba(40, 157, 114, .22); color: #1F7A57; }
.cf-pk button[aria-pressed="true"] span { font-weight: 700; }
.btn-insta { background: linear-gradient(45deg, #F9A13B 0%, #E1306C 50%, #8A3AB9 100%); color: #fff; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 0; }
.btn-insta:hover { filter: brightness(1.05); }

/* 2026-11-10: 응원이 전해졌어요 카드 흰 부분 위로, 인원 숫자 강조 */
.cf-done { background-image: linear-gradient(180deg, #289D72 0%, #52B08D 20%, #79C2A7 30%, #D9EEE6 44%, #FFFFFF 58%); }
.cf-body .cf-num { font-weight: 400; font-size: 25px; color: #E8634A; }

/* 2026-11-10 장점 꽃다발 피드백: 제목 꾹꾹체·상단 여백 줄임, 관계 칩 색 채우기, 장점 선택 노랑 */
.fg-title, .sheet .fg-title, .lv .fg-title { font: 400 28px/36px var(--cf-mm); letter-spacing: 0; }
.fg-title.fg-one { white-space: nowrap; font-size: clamp(19px, 6.2vw, 26px); }
.fg-body { padding-top: 22px; }
.fg-rel-label { margin-top: 40px; }
.fg-grid { margin-top: 40px; }
.fg-chip[aria-pressed="true"] { box-shadow: none; font-weight: 600; }
.fg-chip[data-r="연인"][aria-pressed="true"] { background: #F7C9CF; color: #A83B52; }
.fg-chip[data-r="친구"][aria-pressed="true"] { background: #F8DE9F; color: #9C6A12; }
.fg-chip[data-r="가족"][aria-pressed="true"] { background: #F6C9AE; color: #A8502A; }
.fg-chip[data-r="직장동료"][aria-pressed="true"] { background: #CFE2C3; color: #4D7340; }
.fg-chip[data-r="지인"][aria-pressed="true"] { background: #C9DDEE; color: #3D6A8E; }
.fg-chip[data-r="나"][aria-pressed="true"] { background: #DCD3F1; color: #6650A6; }
.fg-chip[data-r="기타"][aria-pressed="true"] { background: #E5DDD3; color: #6E5C4C; }
.fg-trait[aria-pressed="true"] { background: linear-gradient(145.78deg, #FFE68B 2%, #FFCFB2 100.9%); box-shadow: 0 2px 10px rgba(240, 160, 90, .28); }
/* (UX 수정 요청 26.11.11) 장점 선택 화면 아래 '장점은 3개까지 고를 수 있어요 / n / 3 선택' 글자색 #FF895C */
.fg-count { color: #FF895C; }
/* (UX 수정 요청 26.11.11) 받은 편지: 꽃다발 아래 '장점 (꽃이름) · …' */
.fg-picks { margin: 2px 0 0; text-align: center; font: 600 13px/19px var(--fg-sans); color: #FF895C; word-break: keep-all; overflow-wrap: anywhere; }

.gv h2 { word-break: keep-all; }

/* ===== HUD 재배치 (2026-11-10, 제안 반영) =====
   위 왼쪽: 내 캐릭터(프로필) + 로고, 그 아래 ABOUT / 위 오른쪽: 하트(재화) · 예약 · 설정(배경·음악)
   아래 가운데: 체험 목록(가장 자주 누르는 버튼, 엄지 영역). 아래 양쪽 구석은 비움 */
.topbar { justify-content: flex-start; align-items: center; gap: 7px; }
.hud-me { flex: none; position: relative; width: 42px; height: 42px; padding: 0; border: 2px solid #fff; border-radius: 50%; background: #FBEFE3; box-shadow: 0 3px 10px rgba(46,38,33,.18); cursor: pointer; display: grid; place-items: center; }
.hud-me svg { width: 36px; height: 36px; }
.hud-me span { position: absolute; left: 50%; bottom: -9px; transform: translateX(-50%); padding: 1px 6px; border-radius: 999px; background: var(--booth); color: #fff; font: 600 9px/14px "Pretendard Label", sans-serif; white-space: nowrap; }
.hud-right { margin-left: auto; display: flex; align-items: center; gap: 6px; position: relative; }
.hud-pill { position: static !important; display: inline-flex; align-items: center; gap: 5px; height: 34px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--line); background: rgba(255,253,249,.94); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); box-shadow: 0 3px 10px rgba(46,38,33,.12); font: 600 12.5px/1 "Pretendard Label", sans-serif; color: var(--ink); white-space: nowrap; cursor: pointer; text-decoration: none; }
.hud-pill.ticket-pill i { width: 20px; height: 20px; }
.hud-res { background: var(--booth); color: #fff; border-color: var(--booth); }
.hud-gear { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: rgba(255,253,249,.94); color: var(--ink); display: grid; place-items: center; cursor: pointer; box-shadow: 0 3px 10px rgba(46,38,33,.12); }
.hud-menu { position: absolute; right: 0; top: 42px; display: grid; gap: 4px; padding: 6px; border-radius: 14px; background: rgba(255,253,249,.97); border: 1px solid var(--line); box-shadow: 0 10px 26px rgba(46,38,33,.18); z-index: 5; min-width: 132px; }
.hud-menu .tb { position: static; display: flex; align-items: center; gap: 6px; height: 36px; padding: 0 12px; border: 0; border-radius: 10px; background: transparent; font: 500 13px/1 "Pretendard Label", sans-serif; color: var(--ink); cursor: pointer; text-align: left; max-width: none; box-shadow: none; }
.hud-menu .tb:hover { background: rgba(126,86,54,.08); }
.hud-menu .tb-lbl { display: inline !important; }
.about-pill { top: calc(env(safe-area-inset-top, 0px) + 66px); }
.hud-list { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 48px; padding: 0 26px; border: 0; border-radius: 999px; background: #3B332E; color: #FFF8EE; font: 600 16px/1 "Pretendard Head", "Pretendard Label", sans-serif; box-shadow: 0 8px 22px rgba(46,38,33,.28); cursor: pointer; }
.hud-list:active { transform: translateY(1px); }
body.in-class .hud-list { display: none; }
@media (max-width: 360px) { .brand span { display: none; } .hud-pill { padding: 0 9px; } }
.cf-lounge { margin: 14px auto 0; border: 0; background: none; font: 500 14px/1 "Pretendard Label", sans-serif; color: #5C7A6C; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; padding: 4px 8px; }
@media (max-width: 430px) { .brand { padding: 5px 8px 5px 6px; } .brand b { font-size: 11px; } .brand span { display: none; } .hud-right { gap: 5px; } .hud-pill { padding: 0 9px; font-size: 12px; } }
@media (max-width: 380px) { .brand > div { display: none; } .brand { padding: 6px; } }

/* 2026-11-10: 왼쪽 위 로고 = ABOUT 공식 로고(4233 MIND SPACE) + '4233 마음 라운지', 캐릭터는 설정 메뉴 맨 위로 */
.brand.brand2 { display: grid; gap: 2px; padding: 6px 10px 5px; border-radius: 12px; }
.brand.brand2 img { width: auto; height: 24px; display: block; }
.brand.brand2 span { display: block !important; font: 600 10px/1.2 "Pretendard Label", sans-serif; color: var(--muted); letter-spacing: .01em; white-space: nowrap; }
@media (max-width: 380px) { .brand.brand2 { padding: 5px 8px 4px; } .brand.brand2 img { height: 17px; } }
.hud-menu #btnMe { font-weight: 600; border-bottom: 1px solid var(--line); border-radius: 10px 10px 4px 4px; }

/* v137 장점 꽃다발 편지 화면 색·글꼴 (2026-11-10) */
:root { --fg-bg: #FFFEF5; }
.fg-bar { background: linear-gradient(rgba(255,254,245,0), var(--fg-bg) 44%); }
.fg-pri { background: #FF895C; color: #fff; }
.fg-pri.is-off { background: rgba(255,137,92,.45); }
.fg-sec { background: #E9E8DE; color: #383838; }
.fg-hl { color: #FF895C; }
.fg-ta { box-shadow: inset 0 0 0 1.5px #FF895C; }
.fg-ta textarea { font: 400 19px/29px var(--cf-mm); color: #3B332E; }
.fg-ta textarea::placeholder { font: 400 19px/29px var(--cf-mm); color: rgba(255,137,92,.7); }
.fg-msg { font: 400 18px/28px var(--cf-mm); }

/* v138 상단 로고: 기존 배치(마크 + 2줄) · "4233 MIND SPACE" → "MIND SPACE" / "4233 마음 라운지" */
.brand.brand3 { display: flex; align-items: center; gap: 7px; padding: 5px 10px 5px 7px; }
.brand.brand3 img { width: 15px; height: auto; flex: none; }
.brand.brand3 > div { display: block !important; min-width: 0; }
.brand.brand3 b { font: 600 12px/1.2 "Pretendard Head", "Pretendard Label", sans-serif; letter-spacing: .06em; white-space: nowrap; }
.brand.brand3 span { display: block !important; font: 600 9.5px/1.25 "Pretendard Label", sans-serif; color: var(--muted); white-space: nowrap; }
.about-pill { top: calc(env(safe-area-inset-top, 0px) + 54px); } /* v140 로고 쪽으로 붙임 */

/* v142 포스트잇 벽 제목: 장점 꽃다발 타이틀 글꼴 + 가운데 정렬 */
.nw-head.nw-head-c { justify-content: center; text-align: center; padding-left: 72px; padding-right: 72px; }
.nw-head.nw-head-c .row { position: absolute; right: max(16px, env(safe-area-inset-right, 0px)); top: calc(env(safe-area-inset-top, 0px) + 14px); }
.nw-head.nw-head-c h2 { font: 400 26px/34px var(--cf-mm); letter-spacing: 0; word-break: keep-all; text-wrap: balance; color: #14110F; }
.nw-head.nw-head-c p { margin-top: 4px; }
@media (max-width: 380px) { .nw-head.nw-head-c h2 { font-size: 23px; line-height: 30px; } }

/* v143 장점 꽃다발: 상단 체험 배지 · 봉투 눌러 열기 → 편지 펼쳐짐 */
.fg-badge { display: flex; width: max-content; max-width: 100%; align-items: center; gap: 9px; margin: 0 auto 18px; padding: 7px 15px; box-sizing: border-box; border-radius: 999px; background: #FFF1E8; box-shadow: inset 0 0 0 1px rgba(255,137,92,.45); font: 600 14px/20px var(--fg-sans); color: #E8703F; letter-spacing: -.2px; white-space: nowrap; }
.fg-badge i { width: 1px; height: 12px; background: rgba(232,112,63,.5); }
.fg-body > .fg-badge + .fg-title { margin-top: 0; }
.fg-ready .fg-sub { margin-top: 12px; }
.fg-env-btn { display: block; padding: 0; border: 0; background: none; cursor: pointer; margin-top: 120px; -webkit-tap-highlight-color: transparent; }
.fg-env-btn:focus-visible { outline: 2px solid #FF895C; outline-offset: 6px; border-radius: 20px; }
.fg-env-btn img { animation: fgFloat 3.6s ease-in-out infinite, fgIn .5s ease both, fgNudge 2.8s 1.2s ease-in-out infinite; }
.fg-ready.is-open .fg-env-btn img { animation: fgEnvOpen .62s cubic-bezier(.5,0,.6,1) forwards; }
.fg-ready.is-open .fg-env-btn .fg-shadow, .fg-ready.is-open .fg-title, .fg-ready.is-open .fg-sub { transition: opacity .4s ease; opacity: 0; }
.fg-unfold .fg-card { transform-origin: 50% 100%; animation: fgUnfold .75s cubic-bezier(.2,.8,.25,1) both; }
.fg-unfold .fg-title, .fg-unfold #lvActions { animation: fgIn .5s .35s ease both; }
@keyframes fgNudge { 0%, 86%, 100% { rotate: 0deg; } 90% { rotate: -5deg; } 94% { rotate: 4deg; } 97% { rotate: -2deg; } }
@keyframes fgEnvOpen { 0% { transform: none; } 30% { transform: scale(1.06) rotate(-4deg); } 55% { transform: scale(1.1) rotate(3deg); opacity: 1; } 100% { transform: translateY(40px) scale(.7); opacity: 0; } }
@keyframes fgUnfold { 0% { opacity: 0; transform: translateY(90px) scale(.5, .12); } 45% { opacity: 1; transform: translateY(20px) scale(.8, .55); } 100% { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .fg-env-btn img, .fg-unfold .fg-card { animation: none !important; } }
.fg-gift-s { margin-top: 22px; font-size: 15px; line-height: 22px; align-items: center; }

/* v144 봉투 화면: 이전 편지 감성(받는 사람 이름 쪽지·하트 봉인·고른 꽃이 살짝 보임·반짝임) */
.fg-env2 { position: relative; display: block; width: 250px; height: 270px; margin: 46px auto 0; padding: 0; border: 0; background: none; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.fg-env2:focus-visible { outline: 2px solid #FF895C; outline-offset: 6px; border-radius: 24px; }
.fg-halo { position: absolute; left: 50%; top: 46%; width: 260px; height: 260px; translate: -50% -50%; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,214,170,.65), rgba(255,226,146,.28) 55%, rgba(255,254,245,0)); animation: fgGlow 3.2s ease-in-out infinite; }
.fg-paper { position: absolute; left: 50%; top: 22px; width: 168px; height: 128px; translate: -50% 0; box-sizing: border-box; padding: 14px 16px; border-radius: 12px; background: linear-gradient(#FFFDF6, #FFF4DE); box-shadow: 0 2px 10px rgba(180,120,70,.18); text-align: left; animation: fgPeek 3.6s ease-in-out infinite; }
.fg-paper b { font: 400 19px/24px var(--cf-mm); color: #4D443C; }
.fg-paper .pf { position: absolute; width: 44px; height: 44px; object-fit: contain; filter: drop-shadow(0 2px 3px rgba(90,58,42,.18)); }
.fg-paper .pf0 { right: 6px; top: -22px; rotate: 12deg; }
.fg-paper .pf1 { right: 40px; top: -14px; width: 36px; height: 36px; rotate: -14deg; }
.fg-paper .pf2 { right: -14px; top: 6px; width: 34px; height: 34px; rotate: 24deg; }
.fg-envimg { position: absolute; left: 50%; top: 92px; width: 200px; translate: -50% 0; filter: drop-shadow(0 6px 10px rgba(200,120,80,.18)); }
.fg-seal { position: absolute; left: 50%; top: 168px; width: 40px; height: 40px; translate: -50% -50%; animation: fgPulse 1.8s ease-in-out infinite; }
.fg-seal svg { width: 100%; height: 100%; display: block; filter: drop-shadow(0 2px 4px rgba(200,90,50,.35)); }
.fg-env2 .fg-shadow { position: absolute; left: 50%; bottom: 12px; width: 190px; height: 28px; translate: none; }
.fg-spark { position: absolute; font-style: normal; color: #FFB37F; font-size: 16px; animation: fgTwinkle 2.6s ease-in-out infinite; }
.fg-spark.s1 { left: 6px; top: 70px; } .fg-spark.s2 { right: 4px; top: 40px; font-size: 20px; animation-delay: .7s; } .fg-spark.s3 { right: 14px; top: 210px; font-size: 13px; animation-delay: 1.3s; } .fg-spark.s4 { left: 22px; top: 200px; font-size: 18px; color: #FFC9A6; animation-delay: 1.9s; }
.fg-envfrom { margin: 6px 0 0; font: 400 18px/24px var(--cf-mm); color: #8B7969; text-align: center; }
.fg-ready.is-open .fg-seal { animation: fgSealPop .4s ease forwards; }
.fg-ready.is-open .fg-paper { animation: fgPaperUp .85s .25s cubic-bezier(.3,.7,.3,1) forwards; }
.fg-ready.is-open .fg-envimg { animation: fgEnvDown .7s .3s ease forwards; }
.fg-ready.is-open .fg-envfrom, .fg-ready.is-open .fg-spark, .fg-ready.is-open .fg-shadow { transition: opacity .4s; opacity: 0; }
@keyframes fgPeek { 0%, 100% { translate: -50% 0; } 50% { translate: -50% -6px; } }
@keyframes fgPulse { 0%, 100% { scale: 1; } 50% { scale: 1.08; } }
@keyframes fgTwinkle { 0%, 100% { opacity: .25; scale: .8; } 50% { opacity: 1; scale: 1.1; } }
@keyframes fgSealPop { to { scale: 1.5; opacity: 0; } }
@keyframes fgPaperUp { to { translate: -50% -50px; scale: 1.15; opacity: 0; } }
@keyframes fgEnvDown { to { translate: -50% 30px; opacity: 0; } }
/* v144 공유 화면: 카카오톡 주 버튼 하나 + 보조 2개 */
.fg-chips { display: flex; justify-content: center; gap: 8px; margin: 20px 0 0; }
.fg-chip2 { height: 40px; padding: 0 16px; border: 0; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 1px var(--fg-line); font: 600 14px/20px var(--fg-sans); color: #4D443C; cursor: pointer; }
.fg-chip2[disabled] { opacity: .6; cursor: default; }
.fg-more { margin: 4px 0 0; text-align: center; }
@media (prefers-reduced-motion: reduce) { .fg-halo, .fg-paper, .fg-seal, .fg-spark { animation: none !important; } }

/* v147 장점 꽃다발 첫 화면: 아래에서 올라오는 안국점 꽃 선반 실사 (위로 갈수록 사라짐) */
.sheet.fg-intro .sheet-inner { position: relative; }
.sheet.fg-intro .sheet-inner::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 470px; background: url("../images/bouquet/anguk-shelf.webp") center 70% / cover no-repeat; opacity: .38; filter: saturate(.9); -webkit-mask: linear-gradient(transparent, #000 45%); mask: linear-gradient(transparent, #000 45%); pointer-events: none; }
.sheet.fg-intro .fg-body, .sheet.fg-intro .fg-bar { position: relative; }
.sheet.fg-intro .fg-bar { background: linear-gradient(rgba(255,254,245,0), rgba(255,254,245,.7) 60%); }
/* v147 포스트잇 벽: 위쪽 WITH 4233 둥근 배지 */
.nw-badge { display: inline-block; margin: 0 0 8px !important; padding: 5px 13px; border-radius: 999px; background: rgba(201,165,126,.18); box-shadow: inset 0 0 0 1px rgba(150,110,70,.32); font: 700 12px/16px "Pretendard Label", "Apple SD Gothic Neo", sans-serif !important; letter-spacing: .1em; color: #8A6646 !important; }
/* v148 장점 꽃다발 제목: 따뜻한 짙은 갈색 · 26px (강조 #FF895C 유지) */
.fg-title, .sheet .fg-title, .lv .fg-title { font-size: 26px; line-height: 36px; color: #3B2F28; }
@media (max-width: 360px) { .fg-title, .sheet .fg-title, .lv .fg-title { font-size: 23px; line-height: 33px; } }
.sheet .fg-title.fg-one, .fg-title.fg-one { font-size: clamp(19px, 6vw, 25px); }

/* v151 편지 쓰기 입력창: 크림 편지지 + 크래프트 마스킹테이프 · 글씨 21px로 키우고 칸 높이 줄임 */
.fg-ta { height: 196px; margin-top: 18px; border-radius: 14px; background: #FFFBF2; box-shadow: inset 0 0 0 1.5px #FF895C, 0 3px 10px rgba(190,140,90,.12); }
.fg-ta::before { content: ""; position: absolute; left: 50%; top: -9px; width: 74px; height: 18px; translate: -50% 0; rotate: -2deg; background: repeating-linear-gradient(90deg, rgba(255,255,255,.18) 0 4px, transparent 4px 8px), #E5C79C; opacity: .9; clip-path: polygon(3% 0, 97% 4%, 100% 50%, 97% 100%, 3% 96%, 0 50%); z-index: 1; }
.fg-ta textarea { padding: 14px 44px 10px 16px; font: 400 21px/34px var(--cf-mm); color: #3B2F28; background: repeating-linear-gradient(transparent 0 33px, rgba(214,178,130,.55) 33px 34px) 0 14px / 100% 100% local; background-clip: content-box; }
.fg-ta textarea::placeholder { font: 400 21px/34px var(--cf-mm); color: rgba(255,137,92,.7); }
.fg-help { font-size: 12px; line-height: 16px; }
/* v151 첫 화면 하단: 사진 위에서도 잘 읽히게 반투명 카드 + 안국점 안내 */
.fg-foot { margin: 26px auto 0; width: calc(100% - 40px); max-width: 340px; box-sizing: border-box; padding: 14px 16px 13px; border-radius: 18px; background: rgba(255,254,245,.86); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: 0 2px 12px rgba(150,110,70,.12); }
.fg-foot .fg-gift { margin: 0; color: #3B2F28; }
.fg-place { margin: 9px 0 0; padding-top: 9px; border-top: 1px dashed rgba(150,110,70,.28); text-align: center; font: 500 13px/18px var(--fg-sans); color: #8A6646; word-break: keep-all; }
.sheet.fg-intro .fg-sub { font-size: 15px; line-height: 22px; }
.fg-place { white-space: nowrap; font-size: clamp(11.5px, 3.3vw, 13px); letter-spacing: -.2px; }

/* v152 첫 화면 정리: 위 여백 축소 · 현장 안내는 실사 사진 위 캡션(장소 정보) · 가챠 혜택은 버튼 바로 위(행동 보상) */
.sheet.fg-intro .fg-top { height: 40px; padding-top: 6px; }
.sheet.fg-intro .fg-body { padding-top: 0; display: flex; flex-direction: column; }
.sheet.fg-intro .fg-hero { margin-top: 18px; }
.fg-place2 { display: flex; align-items: center; gap: 6px; width: max-content; max-width: calc(100% - 24px); margin: auto auto 6px; padding: 7px 13px; box-sizing: border-box; border-radius: 999px; background: rgba(255,254,245,.82); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: 0 1px 8px rgba(150,110,70,.14); font: 500 12.5px/17px var(--fg-sans); color: #6E5038; letter-spacing: -.2px; white-space: nowrap; }
.fg-place2 svg { width: 10px; height: 13px; flex: none; color: #FF895C; }
.fg-bar.fg-bar-note { flex-wrap: wrap; padding-top: 30px; }
.fg-barnote { flex: 1 0 100%; display: flex; justify-content: center; align-items: center; gap: 6px; margin: 0 0 10px; font: 500 14px/20px var(--fg-sans); color: #3B2F28; letter-spacing: -.3px; white-space: nowrap; }
.fg-barnote svg { width: 17px; height: 18px; flex: none; }
.fg-barnote b { color: #E8703F; }
.sheet.fg-intro .fg-bar { background: linear-gradient(rgba(255,254,245,0), rgba(255,254,245,.92) 38%); }
@media (max-width: 360px) { .fg-barnote { font-size: 12.5px; } }
.fg-barnote { font-size: clamp(12px, 3.5vw, 14px); }
.fg-more { display: flex; justify-content: center; align-items: center; gap: 8px; color: var(--fg-mute); font-size: 12px; }

/* v155 장점 꽃다발 마지막 화면: 카드 작게(버튼까지 한 화면) · 전달 후 하트 카드 톡 · 복사 안내 토스트 */
.fg-snd .fg-card { width: min(250px, calc(100% - 96px)); min-height: 0; padding: 20px 20px 16px; border-radius: 26px; margin-top: 20px; }
.fg-snd .fg-bqwrap { width: 150px; height: 150px; }
/* 칸(150px)에 맞춰 꽃다발 그림도 줄임: 원래 크기(폭 150 · 높이 173 + 포장지)가 칸 밖으로 넘쳐 편지 첫 줄을 덮었음 */
.fg-snd .fg-bqwrap .fg-bq { width: 118px; }
.fg-snd .fg-msg { font-size: 16px; line-height: 24px; margin-top: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.fg-snd .fg-to, .fg-snd .fg-from { font-size: 17px; line-height: 24px; }
.fg-snd .fg-chips { margin-top: 14px; }
.fg-done-sub { margin: 10px 0 0; text-align: center; font: 500 14px/20px var(--fg-sans); color: #6E5038; }
.fg-snd.is-shared .fg-title { margin-top: 0; }
.fg-got { margin-top: 16px; padding: 14px 16px; background: linear-gradient(145deg, #FFF4DA, #FFE2CF); box-shadow: inset 0 0 0 1px rgba(255,137,92,.35); animation: fgGotPop .55s cubic-bezier(.2,1.4,.4,1) both; }
.fg-got .fg-gift { justify-content: center; align-items: center; font-size: 16px; }
.fg-got b { color: #E8703F; }
/* 이름이 꽃 등장 애니메이션(fgPop)과 겹쳐 꽃의 위치 보정(translate·rotate)을 지워 버렸음 → 따로 이름 */
@keyframes fgGotPop { 0% { opacity: 0; transform: scale(.6); } 100% { opacity: 1; transform: none; } }
.fg-url { display: inline-block; margin-top: 4px; max-width: 100%; font-size: 12px; color: #4D443C; word-break: break-all; user-select: all; -webkit-user-select: all; }
.fg-toast { position: fixed; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 96px); z-index: 90; width: max-content; max-width: calc(100% - 40px); translate: -50% 12px; padding: 12px 18px; border-radius: 16px; background: rgba(59,47,40,.92); color: #FFFDF7; font: 500 14px/20px "Pretendard Label", "Apple SD Gothic Neo", sans-serif; text-align: center; opacity: 0; pointer-events: none; transition: opacity .25s, translate .25s; }
.fg-toast.on { opacity: 1; translate: -50% 0; }
.fg-snd .fg-more { flex-wrap: wrap; row-gap: 2px; margin-top: 10px; }
/* v156 완성된 편지 본문: 글자 크기에 맞춘 편지지 밑줄 */
.fg-card .fg-msg { --lh: 28px; line-height: var(--lh); min-height: calc(var(--lh) * 3); padding-bottom: 2px; background-image: linear-gradient(transparent calc(var(--lh) - 1.5px), rgba(160,110,60,.32) calc(var(--lh) - 1.5px), rgba(160,110,60,.32) calc(var(--lh) - .5px), transparent calc(var(--lh) - .5px)); background-size: 100% var(--lh); background-position: 0 0; }
.fg-snd .fg-card .fg-msg { --lh: 24px; min-height: calc(var(--lh) * 3); }
/* v157 마지막 화면 편지: 글이 길면 편지지도 길어짐(3줄 자르기 해제) · 꽃다발과 글 사이 여백 */
.fg-snd .fg-msg { display: block; -webkit-line-clamp: unset; overflow: visible; }
.fg-card .fg-bqwrap { margin-bottom: 6px; }
.fg-card .fg-msg { margin-top: 18px; overflow-wrap: anywhere; }
.fg-card .fg-msg { word-break: keep-all; overflow-wrap: break-word; }

/* v158 체험 가까이에서 동작 버튼이 뜨면 체험 목록 버튼 숨김 */
body.near-zone #btnList { display: none !important; }

/* v158 가챠 당첨 화면: 코드 카드 + 3단계 + 안내 */
.prize2 .tier { font-size: 13px; }
.prize2 .pcond { margin: -4px 0 0; font-size: 13px; color: var(--muted); }
.pcodebox { display: grid; gap: 8px; padding: 14px 12px 12px; border-radius: 14px; background: var(--cream); box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--pc) 35%, transparent); text-align: center; }
.pcodebox .pc-l { font-size: 12px; color: var(--muted); }
.prize2 .pcode { background: #fff; font-size: 18px; font-weight: 700; color: var(--pc); padding: 10px 8px; user-select: all; -webkit-user-select: all; word-break: break-all; }
.pc-msg { margin: 0; min-height: 17px; font-size: 12px; color: var(--pc); }
.psteps { margin: 2px 0 0; padding: 0; list-style: none; counter-reset: ps; display: grid; gap: 7px; text-align: left; }
.psteps li { counter-increment: ps; display: flex; gap: 9px; align-items: flex-start; font-size: 14px; line-height: 20px; }
.psteps li::before { content: counter(ps); flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--pc); color: #fff; font-size: 12px; font-weight: 700; display: grid; place-items: center; }
.plinks { display: grid; }
.pnote { margin: 0; font-size: 11.5px; line-height: 17px; color: var(--muted); text-align: center; }

/* v159 행운의 마음 가챠: 장점 꽃다발과 같은 톤 */
.gv.gv2 { background: #FFFEF5; color: #3B2F28; }
.gv2 .gv-inner { max-width: 430px; padding-top: calc(env(safe-area-inset-top, 0px) + 6px); display: flex; flex-direction: column; gap: 16px; }
.g2-top { display: flex; justify-content: flex-end; height: 34px; margin-right: -6px; }
.g2-head { text-align: center; margin-top: -8px; }
.g2-head .fg-badge { margin-bottom: 14px; }
.g2-head .fg-sub { margin-top: 8px; font-size: 15px; line-height: 22px; }
.gv2 .machine { width: min(250px, 66vw); margin-top: 4px; filter: drop-shadow(0 14px 22px rgba(232,112,63,.18)); }
.gv2 .m-body { background: linear-gradient(180deg, #FFAA82, #FF895C 45%, #E8703F); box-shadow: inset 0 6px 0 rgba(255,255,255,.25), 0 14px 24px rgba(232,112,63,.25); }
.gv2 .m-plate { color: #E8703F; font: 400 15px/1.4 var(--cf-mm); }
.gv2 .m-knob { box-shadow: 0 4px 0 #B9542C, 0 8px 14px rgba(150,70,30,.25); }
.gv2 .m-chute { background: #9A4524; }
.gv2 .g-tickets { margin: -4px auto 0; padding: 6px 16px; border-radius: 999px; background: #FFF1E8; box-shadow: inset 0 0 0 1px rgba(255,137,92,.4); font: 500 14px/20px var(--fg-sans); color: #6E5038; gap: 6px; }
.gv2 .g-tickets b { font: 400 22px/1 var(--cf-mm); color: #E8703F; }
.gv2 .tap-hint { color: #E8703F; font-weight: 600; }
.gv2 .prize { background: #fff; border-radius: 24px; padding: 22px 18px 18px; box-shadow: 0 10px 30px rgba(190,130,80,.16), inset 0 0 0 1px rgba(205,198,193,.6); }
.gv2 .prize::before { height: 5px; }
.gv2 .prize .tier { justify-self: start; padding: 4px 11px; border-radius: 999px; background: color-mix(in srgb, var(--pc) 12%, #fff); font-size: 12.5px; }
.gv2 .prize .pname { font: 400 26px/34px var(--cf-mm); color: #3B2F28; }
.gv2 .prize .line-msg { font-family: var(--cf-mm); font-size: 22px; line-height: 32px; color: #3B2F28; }
.gv2 .pcodebox { background: #FFFBF2; }
.gv2 .btn { border-radius: 16px; min-height: 48px; font-weight: 600; }
.gv2 .btn-primary { background: #FF895C; color: #fff; border: 0; }
.gv2 .btn-line { background: #E9E8DE; color: #383838; border: 0; }
.gv2 .g2-empty { margin: 0 auto; width: 100%; text-align: center; }
.gv2 .g2-empty .fg-gift { justify-content: center; }
.gv2 .g2-wallet { background: #fff; box-shadow: inset 0 0 0 1px rgba(205,198,193,.6); }
.gv2 .wallet-item { background: #FFFBF2; }

/* v159 편지 펼칠 때 렉 줄이기: 펼치는 동안 꽃 튀어나오기·그림자·빛 움직임 멈춤, 카드만 GPU로 이동 */
.fg-unfold .fg-card { will-change: transform, opacity; }
.fg-unfold:not(.fg-settled) .fg-bq .fg-fl { animation: none; filter: none; }
.fg-unfold:not(.fg-settled) .fg-glow { animation: none; filter: none; }
.fg-ready.is-open .fg-halo, .fg-ready.is-open .fg-spark, .fg-ready.is-open .fg-paper .pf { animation: none; }
.gv2 h2.fg-title { font: 400 26px/36px var(--cf-mm); color: #3B2F28; letter-spacing: 0; }
.gv2 .g2-empty .fg-gift { text-align: left; align-items: center; }

/* v160 가챠: 남은 하트 하트 아이콘 · 기계 이름표 삭제 */
.gv2 .g-tickets { align-items: center; }
.g-heart { width: 18px; height: 17px; flex: none; animation: gHeart 1.6s ease-in-out infinite; }
@keyframes gHeart { 0%, 100% { scale: 1; } 15% { scale: 1.18; } 30% { scale: 1; } }
#pSave { width: 100%; }

/* v161 교실 응원 완료: 운동장을 본 뒤 하단에 버튼 2개 */
.cf-dock { position: fixed; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 16px); z-index: 30; width: min(400px, calc(100% - 24px)); translate: -50% 0; box-sizing: border-box; padding: 14px 14px 14px; border-radius: 22px; background: rgba(255,255,255,.94); box-shadow: 0 10px 30px rgba(20,60,40,.2); animation: fgIn .45s ease both; }
.cf-dock-t { margin: 0 0 10px; text-align: center; font: 500 13.5px/19px "Pretendard Label", sans-serif; color: #294D40; word-break: keep-all; }
.cf-dock-t b { color: #E8634A; }

/* v162 가챠: 하트 띠가 기계 그림자에 가리지 않게 · 당첨 카드 단순화 */
.gv2 .g-tickets { position: relative; z-index: 3; margin-top: 10px; box-shadow: inset 0 0 0 1px rgba(255,137,92,.4), 0 2px 8px rgba(232,112,63,.12); background: #FFF6F0; }
.gv2 .machine { filter: none; }
.gv2 .prize2 { gap: 12px; text-align: left; }
.gv2 .prize2 .tier { justify-self: center; }
.gv2 .prize2 .pname, .gv2 .prize2 .pcond { text-align: center; }
.gv2 .prize2 .psteps { padding: 12px 14px; border-radius: 14px; background: #FAF7F0; }
.plinks2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.plinks2 .btn { min-height: 46px; font-size: 14px; padding: 0 8px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; text-decoration: none; }
.gv2 .btn-naver { background: #fff; color: #03A94D; box-shadow: inset 0 0 0 1.5px #03C75A; border: 0; }
.btn-naver b { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 4px; background: #03C75A; color: #fff; font: 900 12px/1 Arial, sans-serif; }
.g2-save1 { width: 100%; }

/* v164 3등 수령 안내 */
.gv2 .prize2 .pwarn { margin: -6px 0 0; text-align: center; font: 600 13px/19px var(--fg-sans); color: #E8703F; word-break: keep-all; }
/* 사용 방법(1~3번) 바로 아래 안내 */
.gv2 .prize2 .pstep-note { margin: -4px 0 0; padding: 0 4px; text-align: left; }
/* v165 행운의 마음 가챠: 강조되도록 진한 주황 배경 (다른 체험과 같은 글꼴·버튼, 배경만 진하게) */
.gv.gv2 { background: radial-gradient(120% 60% at 50% 22%, #FFC59E 0%, #FF9A68 38%, #FF7F4F 70%, #F06A3B 100%) fixed; color: #fff; }
.gv2 .gv-inner { position: relative; }
.gv2 .gv-inner::before { content: ""; position: absolute; left: 50%; top: 150px; width: 420px; height: 420px; translate: -50% 0; border-radius: 50%; background: repeating-conic-gradient(from 0deg, rgba(255,255,255,.13) 0 9deg, rgba(255,255,255,0) 9deg 22deg); -webkit-mask: radial-gradient(closest-side, #000 30%, transparent); mask: radial-gradient(closest-side, #000 30%, transparent); pointer-events: none; animation: g2spin 40s linear infinite; z-index: 0; }
.gv2 .gv-inner > * { position: relative; z-index: 1; }
@keyframes g2spin { to { rotate: 360deg; } }
.gv2 .fg-x { background: rgba(255,255,255,.9); color: #3B2F28; }
.gv2 .g2-head .fg-badge { background: rgba(255,255,255,.95); box-shadow: none; color: #E8703F; }
.gv2 h2.fg-title { color: #fff; text-shadow: 0 2px 10px rgba(180,70,20,.25); }
.gv2 h2.fg-title .fg-hl { color: #FFF1A6; }
.gv2 .g2-head .fg-sub { color: rgba(255,255,255,.92); }
/* 기계: 주황 배경 위에서 보이게 크림 몸통 + 주황 포인트 */
.gv2 .m-body { background: linear-gradient(180deg, #FFFDF8, #FFF1E2 55%, #F9DFC6); box-shadow: inset 0 6px 0 rgba(255,255,255,.8), inset 0 -6px 0 rgba(232,112,63,.18), 0 16px 26px rgba(150,50,10,.28); }
.gv2 .m-knob { background: radial-gradient(circle at 35% 30%, #FFB48C, #FF895C 60%, #E8703F); box-shadow: 0 4px 0 #C2552B, 0 8px 14px rgba(150,60,20,.3); }
.gv2 .m-knob i { background: #FFE3D2; }
.gv2 .m-chute { background: #E8703F; box-shadow: inset 0 6px 10px rgba(120,40,10,.45); }
.gv2 .m-dome { box-shadow: 0 0 0 6px rgba(255,255,255,.55), 0 12px 30px rgba(150,50,10,.2); }
.gv2 .g-tickets { background: #fff; box-shadow: 0 4px 14px rgba(150,50,10,.2); }
.gv2 .tap-hint { color: #fff; }
.gv2 .g2-wallet { background: rgba(255,255,255,.96); color: #3B2F28; }
.gv2 .g2-empty { background: #fff; color: #3B2F28; }
.gv2 .prize { color: #3B2F28; box-shadow: 0 14px 34px rgba(150,50,10,.25); }

/* v166 가챠: 돌아가는 빛살 → 은은한 비눗방울 */
.gv2 .gv-inner::before { display: none; }
.g2-bubbles { position: fixed; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.g2-bubbles i { position: absolute; bottom: -80px; border-radius: 50%; background: radial-gradient(circle at 32% 30%, rgba(255,255,255,.85) 0 8%, rgba(255,255,255,.22) 22%, rgba(255,255,255,.06) 60%, rgba(255,255,255,.18) 100%); box-shadow: inset 0 0 0 1px rgba(255,255,255,.45), 0 0 14px rgba(255,240,220,.35); animation: g2rise linear infinite, g2glow ease-in-out infinite alternate; }
@keyframes g2rise { from { transform: translateY(0) translateX(0); } 50% { transform: translateY(-60vh) translateX(18px); } to { transform: translateY(-125vh) translateX(-10px); } }
@keyframes g2glow { from { opacity: .45; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .g2-bubbles i { animation: none; } }
/* v166 체험 목록: 여백 */
.sheet-list .list-row { padding: 18px 2px; }
.sheet-list .ab-sec { margin-top: 30px; gap: 14px; }
.sheet-list .ab-branches { margin-top: 2px; }
.sheet-list .ab2-note { margin-top: 2px; padding: 0 4px; }
.sheet-list .stack { margin-bottom: 6px; }
.gv2 .gv-inner > .g2-bubbles { position: fixed; z-index: 0; }

/* v168 설정 메뉴 통일 */
.hud-menu { min-width: 208px; padding: 8px; gap: 2px; border-radius: 18px; }
.hud-menu .tb, .hud-menu #btnMe { display: flex; align-items: center; gap: 10px; width: 100%; height: 46px; padding: 0 10px; border: 0; border-radius: 12px; background: transparent; font: 500 14px/1 "Pretendard Label", "Apple SD Gothic Neo", sans-serif; color: #3B2F28; text-align: left; max-width: none; }
.hud-menu #btnMe { border-bottom: 0; font-weight: 500; }
.hud-menu .tb + .tb { box-shadow: 0 -1px 0 rgba(205,198,193,.5); border-radius: 0 0 12px 12px; }
.hud-menu .tb:hover { background: #FFF4EC; box-shadow: none; border-radius: 12px; }
.hm-ic { flex: none; width: 30px; height: 30px; border-radius: 9px; background: #FFF1E8; color: #E8703F; display: grid; place-items: center; }
.hm-ic svg { width: 17px; height: 17px; }
.hm-l { flex: 1; min-width: 0; white-space: nowrap; }
.hm-v { flex: none; font-size: 13px; color: #988F86; }
.hm-sw { flex: none; position: relative; width: 38px; height: 22px; border-radius: 11px; background: #E2DCD4; transition: background .2s; }
.hm-sw i { position: absolute; left: 3px; top: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.2); transition: transform .2s; }
.hm-sw.on { background: #FF895C; } .hm-sw.on i { transform: translateX(16px); }

/* v168 ABOUT 지점 그림 지도 */
.ab2-map { margin: 2px 0 12px; border-radius: 18px; overflow: hidden; box-shadow: inset 0 0 0 1px #EFE4D6; }
.ab2-map svg { display: block; width: 100%; height: auto; }
.ab2-map .bm-t { font: 600 11px/1 "Pretendard Label", "Apple SD Gothic Neo", sans-serif; fill: #3B2F28; paint-order: stroke; stroke: #fff; stroke-width: 3px; }
.ab2-map .bm-s { font: 600 11px/1 "Pretendard Label", sans-serif; fill: #8A6646; }
.ab2-map .bm-r { font: 500 9px/1 "Pretendard Label", sans-serif; fill: #6F9AB3; }
.ab2-map a { cursor: pointer; }
.ab2-map a:hover .bm-pin path { fill: #D45F30; }
.ab2-map .bm-pin { animation: bmDrop .6s cubic-bezier(.3,1.5,.5,1) both; }
@keyframes bmDrop { from { opacity: 0; } to { opacity: 1; } }

/* v169 WITH 4233 포스트잇 벽 */
.nw.nw2 { background: #FFFEF5 radial-gradient(rgba(190,160,120,.18) 1px, transparent 1.4px) 0 0 / 18px 18px; }
.nw2 .nw-head { background: linear-gradient(#FFFEF5 78%, rgba(255,254,245,0)); padding-top: calc(env(safe-area-inset-top, 0px) + 10px); padding-bottom: 18px; }
/* ✕ 는 PC 에서도 포스트잇 벽(최대 720px) 오른쪽 끝 라인에 맞춤 (화면 오른쪽 구석으로 멀어지지 않게) */
.nw2 .nw-head.nw-head-c .row { top: calc(env(safe-area-inset-top, 0px) + 6px); right: max(10px, env(safe-area-inset-right, 0px), calc(50% - 360px + 6px)); }
.nw2 .nw-head .nw-badge { background: #FFF1E8; box-shadow: inset 0 0 0 1px rgba(255,137,92,.45); color: #E8703F !important; margin-bottom: 12px !important; }
.nw2 .nw-head.nw-head-c h2 { color: #3B2F28; font-size: 26px; line-height: 36px; }
.nw2 .nw-head p#nwCount { display: inline-block; margin-top: 10px; padding: 5px 12px; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 1px #EADFD2; font: 500 12.5px/18px "Pretendard Label", sans-serif; color: #6E5038; }
.nw2 #nwCount b { color: #E8703F; }
.nw2 .nw-wall { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 16px 12px; padding-top: 8px; padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 110px); max-width: 720px; }
.nw2 .pi { overflow: visible; border-radius: 3px 3px 10px 3px; font: 400 16.5px/1.35 var(--cf-mm); color: #3B2F28; padding: 16px 11px 9px; box-shadow: 0 2px 4px rgba(120,80,40,.10), 0 10px 16px -8px rgba(120,80,40,.35); }
.nw2 .pi::after { display: none; }
.nw2 .pi::before { content: ""; position: absolute; left: 50%; top: -7px; width: 46px; height: 15px; translate: -50% 0; rotate: -3deg; background: repeating-linear-gradient(90deg, rgba(255,255,255,.25) 0 4px, transparent 4px 8px), rgba(229,199,156,.85); clip-path: polygon(3% 0, 97% 6%, 100% 50%, 97% 100%, 3% 94%, 0 50%); }
.nw2 .pi .d { font: 400 12px/1 var(--cf-mm); opacity: .55; }
.nw-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 4; display: flex; justify-content: center; padding: 34px 16px calc(env(safe-area-inset-bottom, 0px) + 18px); background: linear-gradient(rgba(255,254,245,0), #FFFEF5 45%); pointer-events: none; }
.nw-bar .fg-btn { pointer-events: auto; flex: 0 1 400px; box-shadow: 0 8px 20px rgba(232,112,63,.28); }
.nw2 .nw-head.nw-head-c { padding-left: 20px; padding-right: 20px; } .nw2 .nw-head p#nwCount { white-space: nowrap; }

/* 꽃다발 칠판 목록 페이지네이션 (20개씩, 1페이지 = 최근). 고정 버튼(나도 편지 쓰기) 자리는 페이지 버튼 아래로 */
.nw.cg.cf-gal .cf-gwall { padding-bottom: 20px; }
.cf-pager { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 6px; max-width: 760px; margin: 0 auto; padding: 4px 16px calc(env(safe-area-inset-bottom, 0px) + 110px); }
.cf-pager:empty { padding-top: 0; }
.cf-pager button { min-width: 38px; height: 38px; padding: 0 10px; border: 1px solid rgba(41, 77, 64, .25); border-radius: 12px; background: rgba(255, 255, 255, .92); color: var(--cf-ink); font-family: var(--cf-bold); font-size: 15px; cursor: pointer; }
.cf-pager button[aria-current="page"] { background: var(--cf-green); border-color: var(--cf-green); color: #fff; }
.cf-pager button:disabled { opacity: .35; cursor: default; }
.cf-pager button:focus-visible { outline: 3px solid #FFD84D; outline-offset: 2px; }

/* 인사하기 문구 고르기: 손 흔들기 버튼 아래로 내려오는 목록 (설정 메뉴와 같은 모양, 설정 버튼 폭만큼 왼쪽) */
.hud-menu.greet-menu { right: 40px; min-width: 132px; }
.hud-menu.greet-menu .tb { justify-content: center; font-weight: 600; }
.hud-wave[aria-expanded="true"] { background: #3B332E; color: #FFF8EE; }

/* 설정 메뉴 '장식 조명' 옆 ? 안내 툴팁 (hover·포커스·탭) */
.hud-menu .hm-tip { position: relative; display: inline-grid; place-items: center; width: 16px; height: 16px; margin-left: 5px; border-radius: 50%; background: #EFE6DE; color: #7E6A5C; font: 600 11px/1 "Pretendard Label", sans-serif; vertical-align: 1px; cursor: help; }
.hud-menu .hm-tip::after { content: attr(data-tip); position: absolute; right: -8px; top: calc(100% + 8px); width: max-content; padding: 8px 10px; border-radius: 10px; background: #3B2F28; color: #fff; font: 500 12px/1.45 "Pretendard Label", sans-serif; white-space: pre; text-align: left; box-shadow: 0 6px 16px rgba(46,38,33,.2); opacity: 0; visibility: hidden; transition: opacity .15s; pointer-events: none; z-index: 6; }
.hud-menu .hm-tip:hover::after, .hud-menu .hm-tip:focus-visible::after, .hud-menu .hm-tip.show::after { opacity: 1; visibility: visible; }
