// Camera (landscape) + Preview + Place Detail.

const { useState: useS } = React;
const TS = window.DAIL_TOKENS;
const cs = TS.colors, fss = TS.fontSizes, fws = TS.fontWeights, sps = TS.spacing, rs = TS.radius;
const baseTextS = { fontFamily: TS.fonts.primary, color: cs.textPrimary, lineHeight: 1.4 };

// ───────── CAMERA — landscape, standard camera-app form factor ─────────
// Phone is held in landscape, but the controls follow a normal camera UI:
// the shutter/mode column lives on the RIGHT short edge (where the thumb
// rests), close + flash + flip live on the LEFT short edge. The 5초
// countdown is a small chip that overlays the shutter when active — the
// shutter itself stays visible/manual at all times.
window.DAIL_CameraScreen = function CameraScreen() {
  const mode = 'video'; // dail is video-only — no mode picker shown
  const [flash, setFlash] = useS('off'); // 'off' | 'auto' | 'on'
  // Static-frame countdown chip, parked at 3.
  const remaining = 3;

  return (
    <div style={{ width:'100%', height:'100%', position:'relative', background:'#000', overflow:'hidden' }}>
      <img src="https://images.unsplash.com/photo-1606787366850-de6330128bfc?w=1280&q=70" alt="" style={{ width:'100%', height:'100%', objectFit:'cover', opacity:0.92 }}/>

      {/* Edge gutters — full-bleed black columns on left + right so controls read on any scene */}
      <div style={{ position:'absolute', left:0, top:0, bottom:0, width:74, background:'linear-gradient(90deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0) 100%)', pointerEvents:'none' }}/>
      <div style={{ position:'absolute', right:0, top:0, bottom:0, width:96, background:'linear-gradient(270deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0) 100%)', pointerEvents:'none' }}/>

      {/* LEFT column — close · flash · flip (vertical stack, top → bottom) */}
      <div style={{ position:'absolute', left:18, top:18, bottom:18, display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'space-between' }}>
        <button title="닫기" style={{ width:36, height:36, borderRadius:18, background:'rgba(0,0,0,0.5)', border:'none', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)' }}>
          <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 2l10 10M12 2L2 12" stroke="#FFF" strokeWidth="1.6" strokeLinecap="round"/></svg>
        </button>
        <button
          title="플래시"
          onClick={() => setFlash(f => f === 'off' ? 'auto' : f === 'auto' ? 'on' : 'off')}
          style={{ width:36, height:36, borderRadius:18, background:'rgba(0,0,0,0.5)', border:'none', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)', position:'relative' }}
        >
          <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M8 1L3 8h3l-1 5 5-7H7l1-5z" fill={flash === 'off' ? 'rgba(255,255,255,0.5)' : '#FFF'} stroke={flash === 'off' ? 'rgba(255,255,255,0.5)' : '#FFF'} strokeWidth="0.5" strokeLinejoin="round"/></svg>
          {flash !== 'off' ? (
            <span style={{ position:'absolute', bottom:-4, right:-2, ...baseTextS, fontSize:8, color:'#FFF', fontWeight:fws.bold, padding:'1px 4px', borderRadius:6, background:'rgba(0,0,0,0.7)', textTransform:'uppercase' }}>{flash}</span>
          ) : null}
        </button>
        <button title="카메라 전환" style={{ width:36, height:36, borderRadius:18, background:'rgba(0,0,0,0.5)', border:'none', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)' }}>
          <svg width="15" height="15" viewBox="0 0 16 16" fill="none">
            <path d="M3 6.5h7l-1.5-1.5M13 9.5H6l1.5 1.5" stroke="#FFF" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
            <rect x="2" y="4" width="12" height="8" rx="1" stroke="#FFF" strokeWidth="1.2" fill="none" opacity="0.4"/>
          </svg>
        </button>
      </div>

      {/* RIGHT column — flash (top, where 사진첩 used to be) · shutter · flip (bottom, where 사진/동영상 used to be) */}
      <div style={{ position:'absolute', right:18, top:0, bottom:0, display:'flex', flexDirection:'column', alignItems:'center', justifyContent:'center', gap:18 }}>
        {/* Flash — moved into the top slot of the right column */}
        <button
          title="플래시"
          onClick={() => setFlash(f => f === 'off' ? 'auto' : f === 'auto' ? 'on' : 'off')}
          style={{ width:40, height:40, borderRadius:20, background:'rgba(0,0,0,0.55)', border:'none', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)', position:'relative' }}
        >
          <svg width="16" height="16" viewBox="0 0 14 14" fill="none"><path d="M8 1L3 8h3l-1 5 5-7H7l1-5z" fill={flash === 'off' ? 'rgba(255,255,255,0.55)' : '#FFF'} stroke={flash === 'off' ? 'rgba(255,255,255,0.55)' : '#FFF'} strokeWidth="0.5" strokeLinejoin="round"/></svg>
          {flash !== 'off' ? (
            <span style={{ position:'absolute', bottom:-4, right:-4, ...baseTextS, fontSize:8, color:'#FFF', fontWeight:fws.bold, padding:'1px 4px', borderRadius:6, background:'rgba(0,0,0,0.7)', textTransform:'uppercase' }}>{flash}</span>
          ) : null}
        </button>

        {/* Shutter — standard camera form. Progress ring traces the white border as 5초 elapses. */}
        <button title="촬영" style={{ width:62, height:62, borderRadius:31, padding:0, border:'none', background:'transparent', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', position:'relative' }}>
          {/* Static white border */}
          <div style={{ position:'absolute', inset:0, borderRadius:31, border:'3px solid rgba(255,255,255,0.35)' }}/>
          {/* Progress ring — SVG circle stroke animates around the shutter (rotated -90° so it starts at 12 o'clock).
              Static frame parked at ~40% (≈ 2초 elapsed of 5초). circumference = 2π·28 ≈ 175.93. */}
          <svg width="62" height="62" viewBox="0 0 62 62" style={{ position:'absolute', inset:0, transform:'rotate(-90deg)' }}>
            <circle cx="31" cy="31" r="28" fill="none" stroke={cs.error} strokeWidth="3" strokeLinecap="round"
              strokeDasharray="175.93" strokeDashoffset={175.93 * (1 - 0.40)} />
          </svg>
          {/* Inner stop square (recording in progress) */}
          <div style={{
            width:22, height:22, borderRadius:5,
            background: cs.error,
            transition:'all 0.18s ease',
            position:'relative',
          }}/>
        </button>

        {/* Flip — moved into the bottom slot of the right column */}
        <button title="카메라 전환" style={{ width:40, height:40, borderRadius:20, background:'rgba(0,0,0,0.55)', border:'none', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)' }}>
          <svg width="17" height="17" viewBox="0 0 16 16" fill="none">
            <path d="M3 6.5h7l-1.5-1.5M13 9.5H6l1.5 1.5" stroke="#FFF" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
            <rect x="2" y="4" width="12" height="8" rx="1" stroke="#FFF" strokeWidth="1.2" fill="none" opacity="0.4"/>
          </svg>
        </button>
      </div>

      {/* Bottom-center timer label (recording duration) — small, unobtrusive */}
      <div style={{ position:'absolute', bottom:14, left:0, right:0, display:'flex', justifyContent:'center', pointerEvents:'none' }}>
        <div style={{ height:22, padding:'0 9px', borderRadius:11, background:'rgba(0,0,0,0.55)', display:'flex', alignItems:'center', gap:6, backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)' }}>
          <span style={{ width:6, height:6, borderRadius:'50%', background:cs.error }}/>
          <span style={{ ...baseTextS, fontSize:10, color:'#FFF', fontWeight:fws.semibold, fontVariantNumeric:'tabular-nums', letterSpacing:'0.02em' }}>0:00 / 0:05</span>
        </div>
      </div>
    </div>
  );
};

// ───────── PREVIEW — landscape video on top, 그룹 선택 패널 상시 하단 ─────────
// - 위: 16:9 가로 영상 — 탭하면 영상 안에 바로 글자 입력 (실시간)
// - 좌상단: 장소 pill (핀 아이콘), 우상단: 음소거 토글
// - 아래: 공유할 그룹 체크리스트 + 등록 버튼
window.DAIL_PreviewScreen = function PreviewScreen() {
  const [groups, setGroups] = useS(['seongsu']);
  const [caption, setCaption] = useS('여기 미쳤어');
  const [muted, setMuted] = useS(false);
  const [editing, setEditing] = useS(false);
  const inputRef = React.useRef(null);
  const toggle = (k) => setGroups(g => g.includes(k) ? g.filter(x => x !== k) : [...g, k]);

  const startEditing = () => {
    setEditing(true);
    setTimeout(() => inputRef.current?.focus(), 0);
  };

  return (
    <div style={{ width:'100%', height:'100%', background:cs.bg, overflow:'hidden', display:'flex', flexDirection:'column' }}>
      {/* TOP NAV */}
      <div style={{ paddingTop:60, paddingLeft:14, paddingRight:14, paddingBottom:10, background:cs.card, display:'flex', alignItems:'center', justifyContent:'space-between' }}>
        <button style={{ ...baseTextS, fontSize:fss.body, color:cs.textSecondary, background:'none', border:'none', cursor:'pointer', padding:0 }}>취소</button>
        <span style={{ ...baseTextS, fontSize:fss.heading, fontWeight:fws.semibold }}>새 영상</span>
        <span style={{ width:32 }}/>
      </div>

      {/* VIDEO PREVIEW — tap anywhere to start editing caption */}
      <div
        onClick={startEditing}
        style={{ background:'#000', position:'relative', width:'100%', aspectRatio:'16 / 9', overflow:'hidden', cursor:'text' }}
      >
        <img src="https://images.unsplash.com/photo-1529417305485-480f579e7578?w=1280&q=70" alt="" style={{ width:'100%', height:'100%', objectFit:'cover' }}/>

        {/* 장소 pill — top left */}
        <div style={{ position:'absolute', top:10, left:10, height:28, padding:'0 10px 0 8px', borderRadius:14, background:'rgba(0,0,0,0.55)', display:'flex', alignItems:'center', gap:5, backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)' }}>
          <svg width="10" height="12" viewBox="0 0 10 12" fill="none"><path d="M5 0.5C2.5 0.5 0.5 2.5 0.5 5c0 3 4.5 6.5 4.5 6.5S9.5 8 9.5 5c0-2.5-2-4.5-4.5-4.5z" stroke="#FFF" strokeWidth="1.2" fill="none"/><circle cx="5" cy="5" r="1.5" fill="#FFF"/></svg>
          <span style={{ ...baseTextS, fontSize:11, color:'#FFF', fontWeight:fws.semibold }}>dail.coffee 성수</span>
        </div>

        {/* Mute toggle — top right */}
        <button
          onClick={(e) => { e.stopPropagation(); setMuted(m => !m); }}
          title={muted ? '음소거 해제' : '음소거'}
          style={{ position:'absolute', top:8, right:8, width:32, height:32, borderRadius:16, background:'rgba(0,0,0,0.55)', border:'none', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', backdropFilter:'blur(8px)', WebkitBackdropFilter:'blur(8px)' }}
        >
          {muted ? (
            <svg width="14" height="14" viewBox="0 0 16 16" fill="none">
              <path d="M2 5.5h2.5L7.5 3v10L4.5 10.5H2z" fill="#FFF"/>
              <path d="m9.5 5 4 6M13.5 5l-4 6" stroke="#FFF" strokeWidth="1.5" strokeLinecap="round"/>
            </svg>
          ) : (
            <svg width="14" height="14" viewBox="0 0 16 16" fill="none">
              <path d="M2 5.5h2.5L7.5 3v10L4.5 10.5H2z" fill="#FFF"/>
              <path d="M10.5 5.5c.7.7 1 1.6 1 2.5s-.3 1.8-1 2.5M12.5 3.5c1.4 1.4 2 3 2 4.5s-.6 3.1-2 4.5" stroke="#FFF" strokeWidth="1.4" strokeLinecap="round" fill="none"/>
            </svg>
          )}
        </button>

        {/* Caption — baked into video, center-bottom-ish. While editing, becomes editable inline. */}
        <div style={{
          position:'absolute', left:0, right:0, top:'62%',
          textAlign:'center', padding:'0 20px',
        }}>
          {editing ? (
            <input
              ref={inputRef}
              value={caption}
              onChange={(e) => setCaption(e.target.value)}
              onBlur={() => setEditing(false)}
              onKeyDown={(e) => { if (e.key === 'Enter') { e.currentTarget.blur(); } }}
              onClick={(e) => e.stopPropagation()}
              placeholder="한 줄 적기"
              style={{
                ...baseTextS, color:'#FFF', fontSize:22, fontWeight:fws.bold,
                textShadow:'0 2px 8px rgba(0,0,0,0.65)', letterSpacing:'-0.01em',
                background:'transparent', border:'none', outline:'none',
                textAlign:'center', width:'100%',
                caretColor:'#FFF',
              }}
            />
          ) : caption.trim() ? (
            <span style={{ ...baseTextS, color:'#FFF', fontSize:22, fontWeight:fws.bold, textShadow:'0 2px 8px rgba(0,0,0,0.65)', letterSpacing:'-0.01em' }}>
              {caption}
            </span>
          ) : (
            <span style={{ ...baseTextS, color:'rgba(255,255,255,0.7)', fontSize:14, fontWeight:fws.medium, textShadow:'0 1px 4px rgba(0,0,0,0.5)' }}>
              탭해서 한 줄 적기
            </span>
          )}
        </div>

        {/* Duration tag */}
        <div style={{ position:'absolute', bottom:10, right:10, padding:'2px 7px', borderRadius:4, background:'rgba(0,0,0,0.6)' }}>
          <span style={{ ...baseTextS, color:'#FFF', fontSize:10, fontWeight:fws.medium, fontVariantNumeric:'tabular-nums' }}>0:05</span>
        </div>
      </div>

      {/* GROUP PICKER — always visible */}
      <div style={{ flex:1, overflow:'auto', background:cs.card }}>
        <div style={{ padding:'14px 18px 6px', display:'flex', alignItems:'baseline', justifyContent:'space-between' }}>
          <span style={{ ...baseTextS, fontSize:fss.caption, color:cs.textTertiary, fontWeight:fws.medium, letterSpacing:'0.04em' }}>공유할 그룹</span>
          <span style={{ ...baseTextS, fontSize:fss.caption, color:cs.textTertiary }}>{groups.length}개 선택</span>
        </div>
        <div style={{ padding:'0 6px' }}>
          {Object.entries(window.DAIL_GROUPS).map(([k, g], i, arr) => {
            const checked = groups.includes(k);
            return (
              <button key={k} onClick={() => toggle(k)} style={{
                width:'100%', display:'flex', alignItems:'center', gap:12,
                padding:'12px 12px', background:'none', border:'none',
                borderBottom: i === arr.length-1 ? 'none' : `1px solid ${cs.divider}`,
                cursor:'pointer', textAlign:'left',
              }}>
                <div style={{ width:20, height:20, borderRadius:rs.sm, border:`1.5px solid ${checked ? cs.accent : cs.border}`, background: checked ? cs.accent : 'transparent', display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}>
                  {checked ? <svg width="11" height="11" viewBox="0 0 10 10"><path d="M2 5l2 2 4-4" stroke="#FFF" strokeWidth="1.7" fill="none" strokeLinecap="round" strokeLinejoin="round"/></svg> : null}
                </div>
                <div style={{ flex:1, minWidth:0 }}>
                  <div style={{ ...baseTextS, fontSize:fss.body, fontWeight:fws.semibold }}>{g.name}</div>
                  <div style={{ ...baseTextS, fontSize:fss.caption, color:cs.textTertiary, marginTop:2 }}>{g.members}명</div>
                </div>
              </button>
            );
          })}
        </div>
      </div>

      {/* SUBMIT BAR */}
      <div style={{ background:cs.card, borderTop:`1px solid ${cs.divider}`, padding:'10px 18px 28px' }}>
        <button style={{
          width:'100%', height:50, borderRadius:rs.md, border:'none',
          background: groups.length ? cs.accent : cs.border,
          color: groups.length ? '#FFF' : cs.textTertiary,
          ...baseTextS, fontSize:fss.body, fontWeight:fws.bold, cursor: groups.length ? 'pointer' : 'not-allowed',
          display:'flex', alignItems:'center', justifyContent:'center', gap:8,
        }}>
          <span>등록</span>
          {groups.length ? (
            <span style={{ ...baseTextS, fontSize:11, fontWeight:fws.semibold, padding:'2px 8px', borderRadius:10, background:'rgba(255,255,255,0.22)' }}>{groups.length}개 그룹</span>
          ) : null}
        </button>
      </div>
    </div>
  );
};

// ───────── PLACE DETAIL — bottom sheet, Google Maps style ─────────
window.DAIL_PlaceScreen = function PlaceScreen() {
  // Map background visible above the sheet, sheet at ~70% height.
  const Apple = window.DAIL_MAPS.apple;
  const videos = [
    {p:'https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=640&q=70', n:'민지', t:'여기 미쳤어'},
    {p:'https://images.unsplash.com/photo-1442512595331-e89e73853f31?w=640&q=70',  n:'하루', t:'아메리카노 진하다'},
    {p:'https://images.unsplash.com/photo-1559925393-8be0ec4767c8?w=640&q=70',  n:'지우', t:'비 오는 날 더 좋음'},
  ];
  const [idx, setIdx] = useS(0);
  const scrollerRef = React.useRef(null);
  const onScroll = (e) => {
    const w = e.currentTarget.clientWidth;
    if (!w) return;
    const next = Math.round(e.currentTarget.scrollLeft / w);
    if (next !== idx) setIdx(next);
  };
  return (
    <div style={{ width:'100%', height:'100%', background:cs.bg, position:'relative', overflow:'hidden' }}>
      <Apple />
      {/* Top back button */}
      <button style={{ position:'absolute', top:60, left:18, width:40, height:40, borderRadius:20, background:cs.card, border:`1px solid ${cs.border}`, display:'flex', alignItems:'center', justifyContent:'center', cursor:'pointer', boxShadow:'0 2px 6px rgba(0,0,0,0.06)', zIndex:5 }}>
        <span style={{ fontSize:20, color:cs.textPrimary, lineHeight:1 }}>‹</span>
      </button>
      {/* Bottom sheet — taller than map screen sheet (place detail is denser) */}
      <div style={{ position:'absolute', left:0, right:0, bottom:0, top:'30%', background:cs.card, borderTopLeftRadius:18, borderTopRightRadius:18, borderTop:`1px solid ${cs.border}`, boxShadow:'0 -8px 24px rgba(0,0,0,0.08)', overflow:'auto', paddingBottom:34 }}>
        <div style={{ display:'flex', justifyContent:'center', padding:'8px 0 4px' }}>
          <div style={{ width:36, height:4, background:cs.border, borderRadius:2 }}/>
        </div>
        {/* Place header */}
        <div style={{ padding:'10px 18px 12px' }}>
          <div style={{ ...baseTextS, fontSize:fss.display, fontWeight:fws.bold, letterSpacing:'-0.01em' }}>dail.coffee 성수</div>
          <div style={{ ...baseTextS, fontSize:fss.caption, color:cs.textSecondary, marginTop:4 }}>카페 · 성수동2가 277-9 · 250m</div>
        </div>
        {/* Friend videos — 가로 16:9 풀폭 swipe deck (map screen 영상 형식 그대로) */}
        <div style={{ padding:'4px 0 4px' }}>
          <div style={{ display:'flex', alignItems:'baseline', justifyContent:'space-between', padding:'0 18px', marginBottom:10 }}>
            <span style={{ ...baseTextS, fontSize:fss.caption, fontWeight:fws.medium, color:cs.textTertiary, letterSpacing:'0.04em' }}>친구들의 영상</span>
            <span style={{ ...baseTextS, fontSize:fss.caption, color:cs.textTertiary, fontVariantNumeric:'tabular-nums' }}>{idx+1} / {videos.length}</span>
          </div>
          <div
            ref={scrollerRef}
            onScroll={onScroll}
            style={{
              display:'flex',
              overflowX:'auto', scrollSnapType:'x mandatory',
              scrollbarWidth:'none',
              WebkitOverflowScrolling:'touch',
            }}
          >
            {videos.map((v, i) => (
              <div key={i} style={{
                flex:'0 0 100%', width:'100%',
                scrollSnapAlign:'center', scrollSnapStop:'always',
                padding:'0 18px',
                boxSizing:'border-box',
              }}>
                {/* 16:9 video — caption baked in (preview style) */}
                <div style={{ borderRadius:rs.md, overflow:'hidden', background:cs.videoArea, aspectRatio:'16 / 9', position:'relative' }}>
                  <img src={v.p} alt="" style={{ width:'100%', height:'100%', objectFit:'cover', display:'block' }}/>
                  {/* Caption — baked into video, center-bottom */}
                  <div style={{ position:'absolute', left:0, right:0, top:'62%', textAlign:'center', padding:'0 20px' }}>
                    <span style={{ ...baseTextS, color:'#FFF', fontSize:20, fontWeight:fws.bold, textShadow:'0 2px 8px rgba(0,0,0,0.65)', letterSpacing:'-0.01em' }}>{v.t}</span>
                  </div>
                  {/* Author chip — top left */}
                  <div style={{ position:'absolute', top:8, left:8, height:22, padding:'0 8px', borderRadius:11, background:'rgba(0,0,0,0.55)', display:'flex', alignItems:'center', backdropFilter:'blur(6px)', WebkitBackdropFilter:'blur(6px)' }}>
                    <span style={{ ...baseTextS, color:'#FFF', fontSize:10, fontWeight:fws.semibold }}>{v.n}</span>
                  </div>
                  {/* mute badge */}
                  <div style={{ position:'absolute', top:8, right:8, background:'rgba(0,0,0,0.55)', borderRadius:999, padding:'4px 8px', display:'flex', alignItems:'center', gap:4 }}>
                    <svg width="11" height="11" viewBox="0 0 12 12" fill="none">
                      <path d="M2 4.5h2L6.5 2v8L4 7.5H2z" fill="#FFF"/>
                      <path d="m9 4 2.5 4M11.5 4 9 8" stroke="#FFF" strokeWidth="1.2" strokeLinecap="round"/>
                    </svg>
                    <span style={{ ...baseTextS, color:'#FFF', fontSize:10, fontWeight:fws.medium }}>음소거</span>
                  </div>
                  {/* duration badge */}
                  <div style={{ position:'absolute', bottom:8, right:8, background:'rgba(0,0,0,0.55)', borderRadius:4, padding:'2px 6px' }}>
                    <span style={{ ...baseTextS, color:'#FFF', fontSize:10, fontWeight:fws.medium, fontVariantNumeric:'tabular-nums' }}>0:05</span>
                  </div>
                </div>
              </div>
            ))}
          </div>
          {/* Dots indicator */}
          <div style={{ display:'flex', justifyContent:'center', gap:6, marginTop:12 }}>
            {videos.map((_, i) => (
              <span key={i} style={{
                width: i === idx ? 18 : 6, height:6, borderRadius:3,
                background: i === idx ? cs.textPrimary : cs.border,
                transition:'all 0.2s ease',
              }}/>
            ))}
          </div>
        </div>
        {/* Info rows */}
        <div style={{ padding:'12px 18px 0' }}>
          {[
            ['주소', '서울 성동구 성수동2가 277-9'],
            ['영업', '오늘 08:00 – 22:00'],
            ['전화', '02-2235-2027'],
            ['웹사이트', 'bluebottlecoffee.com'],
          ].map(([k,v], i, arr) => (
            <div key={k} style={{ display:'flex', alignItems:'center', gap:12, padding:'14px 0', borderBottom: i === arr.length-1 ? 'none' : `1px solid ${cs.divider}` }}>
              <div style={{ flex:1, minWidth:0 }}>
                <div style={{ ...baseTextS, fontSize:fss.caption, color:cs.textTertiary, fontWeight:fws.medium, letterSpacing:'0.02em' }}>{k}</div>
                <div style={{ ...baseTextS, fontSize:fss.body, fontWeight:fws.medium, marginTop:2 }}>{v}</div>
              </div>
              <span style={{ color:cs.textTertiary, fontSize:18, lineHeight:1 }}>›</span>
            </div>
          ))}
        </div>
      </div>
    </div>
  );
};
