:root{
    /* 액센트(테마 공통): 코랄=주액센트, 씨=확정/선택 보조, 선=룰렛·돌리기 등 한정. 상태색(초록/빨강)은 의미 유지 */
    /* 4색 팔레트: 코랄(주)·씨(보조)·잉크(글자)·배경. 선=메인 룰렛 CTA 1곳 한정 강조. 로즈=삭제/제외 등 상태색만 */
    --coral:#fb6f56; --sea:#2a9d8f; --sun:#ffb703; --rose:#e63946;
    --on-accent:#ffffff;
    /* 액센트를 '작은 텍스트 전경색'으로 쓸 때 — 라이트 흰 위 AA(4.5:1) 충족용 짙은 변형(배경 액센트는 --coral/--sea 그대로) */
    --coral-text:#c2452f; --sea-text:#117c6f;
    /* === 라이트(화이트) 모드 — 뉴트럴 베이스 + 잉크 === */
    --bg:#f3f1ec; --surface:#ffffff; --surface-2:#f4f2ec; --surface-3:#eae6dc; --surface-warm:#fbf7ee; --surface-input:#ffffff; --border:#e4ded2;
    --ink:#1c2226; --ink-2:#3a4045; --ink-3:#4a5055; --ink-muted:#565c62;
    /* 호환 별칭(이중용도): paper=표면, deep=잉크. 남은 참조도 테마 따라감 */
    --paper:var(--surface); --deep:var(--ink);
    /* 반경·그림자·간격 토큰 */
    --r-sm:10px; --r-12:12px; --r-14:14px; --r-md:16px; --r-card:18px; --r-lg:22px; --r-pill:999px;
    --shadow-soft:0 6px 18px rgba(20,24,28,.10); --shadow-card:0 6px 18px rgba(20,24,28,.12); --shadow-retro:6px 6px 0 var(--coral);
    --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
  }
  /* === 다크(블랙) 모드 === */
  html[data-theme="dark"]{
    --bg:#14161a; --surface:#1f2229; --surface-2:#262a31; --surface-3:#31363f; --surface-warm:#23262c; --surface-input:#20242a; --border:#363c45;
    --ink:#f3f5f8; --ink-2:#d2d6dd; --ink-3:#bcc2ca; --ink-muted:#aab0b8;
    --coral-text:#ff8f78; --sea-text:#4ec7b4; /* 다크 표면 위는 밝은 액센트가 가독 좋음 */
    --shadow-soft:0 6px 18px rgba(0,0,0,.45); --shadow-card:0 8px 22px rgba(0,0,0,.55);
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  /* --- UI 폴리시(안전·추가형): 부드러운 스크롤·모바일 탭 플래시 제거·키보드 포커스·선택색 --- */
  html{scroll-behavior:smooth;}
  *{-webkit-tap-highlight-color:transparent;}
  ::selection{background:var(--coral);color:#fff;}
  :focus-visible{outline:3px solid var(--coral);outline-offset:2px;}
  @media(prefers-reduced-motion:reduce){.screen.active{animation:none;}}
  html,body{background:var(--bg);}
  body{
    font-family:'Gowun Dodum',sans-serif;
    color:var(--ink); min-height:100vh; padding:22px 14px 70px;
    display:flex; flex-direction:column; align-items:center; overflow-x:hidden;
    transition:background .2s,color .2s;
  }
  .title{font-family:'Black Han Sans',sans-serif;font-size:clamp(24px,6vw,46px);
    text-align:center;line-height:1.05;letter-spacing:1px;color:var(--ink);}
  /* 좁은 화면: 타이틀이 우상단 고정 토글(테마/언어)과 겹치지 않게 상단 여백 확보 */
  @media(max-width:480px){.title{margin-top:24px;}}
  .title span{color:var(--coral-text);}
  .subtitle{margin-top:6px;font-family:'Jua',sans-serif;font-size:clamp(13px,3vw,17px);opacity:.9;text-align:center;color:var(--ink-2);}
  .subtitle small{font-size:.85em;color:var(--ink-muted);}

  /* stepper */
  .stepper{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin:18px 0 6px;}
  .origin-sel{font-family:'Jua',sans-serif;font-size:12px;padding:3px 7px;border-radius:8px;border:1px solid var(--border);background:var(--surface-input);color:var(--ink-2);cursor:pointer;}
  .step{font-family:'Jua',sans-serif;font-size:12px;padding:5px 11px;border-radius:var(--r-pill);cursor:pointer;
    background:var(--surface-3);color:var(--ink-3);white-space:nowrap;}
  .step.on{background:var(--coral);color:#fff;}
  .step.done{background:var(--sea);color:#fff;}

  .screen{display:none;width:100%;max-width:720px;flex-direction:column;align-items:center;}
  .screen.active{display:flex;animation:fade .4s ease;}
  @keyframes fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

  /* wheels */
  .stage{display:flex;flex-wrap:wrap;gap:30px;justify-content:center;align-items:flex-start;margin-top:24px;width:100%;}
  .wheel-block{display:flex;flex-direction:column;align-items:center;gap:14px;}
  .wheel-label{font-family:'Jua',sans-serif;font-size:18px;background:var(--surface);color:var(--ink);
    padding:6px 20px;border-radius:var(--r-pill);box-shadow:var(--shadow-soft);border:1px solid var(--border);
    max-width:min(90vw,340px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .legend{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;font-family:'Jua',sans-serif;font-size:13px;color:var(--ink-2);}
  .legend span{display:flex;align-items:center;gap:5px;}
  .legend .sw{width:13px;height:13px;border-radius:4px;display:inline-block;}
  .legend .sw.ov{background:var(--coral);}
  .legend .sw.dm{background:var(--sea);}
  .wheel-wrap{position:relative;}
  .pointer{position:absolute;top:-4px;left:50%;transform:translateX(-50%);width:0;height:0;
    border-left:15px solid transparent;border-right:15px solid transparent;border-top:26px solid var(--coral);
    filter:drop-shadow(0 3px 3px rgba(0,0,0,.4));z-index:6;}
  .wheel{border-radius:50%;box-shadow:0 0 0 8px var(--paper),0 0 0 13px var(--deep),0 12px 26px rgba(0,0,0,.45);
    transition:transform 5s cubic-bezier(.17,.67,.19,1);display:block;}
  .big .wheel{width:420px;height:420px;}
  .small .wheel{width:230px;height:230px;}
  @media(max-width:520px){.big .wheel{width:330px;height:330px;}.small .wheel{width:190px;height:190px;}}
  @media(max-width:360px){.big .wheel{width:280px;height:280px;}}  /* 320px대에서 휠 우측 잘림 방지 */
  .hub{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;
    background:var(--paper);border:5px solid var(--coral);box-shadow:0 3px 6px rgba(0,0,0,.4);z-index:5;
    display:flex;align-items:center;justify-content:center;font-size:20px;}
  .theme-hint{font-size:12px;color:var(--ink-3);margin-top:-4px;}
  /* (1B) 테마 고르기 칩 — 도시 룰렛 위에서 테마 1개 선택/랜덤 */
  .theme-pick{width:100%;max-width:560px;margin:6px auto 2px;text-align:center;}
  .tp-label{font-family:'Jua',sans-serif;font-size:15px;color:var(--ink);margin-bottom:8px;}
  .tp-label small{font-size:12px;color:var(--ink-3);}
  .tp-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
  .tp-chip{font-family:'Jua',sans-serif;font-size:14px;padding:9px 14px;min-height:40px;border-radius:var(--r-pill);cursor:pointer;
    display:inline-flex;align-items:center;white-space:nowrap;
    background:var(--surface-2);color:var(--ink-2);border:2px solid transparent;transition:transform .1s,background .12s;}
  .tp-chip:hover{transform:translateY(-1px);}
  .tp-chip.on{background:var(--sea);color:#fff;border-color:var(--sea-text);font-weight:bold;}
  #themeRandomChip.on{background:var(--coral);border-color:var(--coral-text);color:#fff;}
  .rspots{font-family:'Jua',sans-serif;font-size:14px;color:var(--sea-text);margin-top:6px;}
  .rspots:empty{display:none;}

  /* buttons */
  .btn-row{margin-top:34px;display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:center;}
  .btn{font-family:'Jua',sans-serif;border:none;border-radius:var(--r-pill);cursor:pointer;
    transition:transform .1s,box-shadow .15s,filter .15s;}
  .btn:disabled{opacity:.45;cursor:not-allowed;}
  .btn:active{transform:translateY(1px);}
  /* 메인 CTA '돌리기!' — 룰렛 정체성으로 노랑 유지(노랑 위 텍스트는 항상 짙게 고정) */
  .btn-spin{font-family:'Black Han Sans',sans-serif;font-size:24px;letter-spacing:2px;color:#3a2c00;
    background:var(--sun);padding:16px 50px;box-shadow:var(--shadow-card);}
  .btn-spin:hover{filter:brightness(1.04);}
  .btn-go{font-size:19px;color:#fff;background:var(--coral);padding:15px 34px;box-shadow:var(--shadow-card);}
  .btn-go:hover{filter:brightness(1.04);}
  .btn-sec{font-size:16px;color:var(--ink);background:var(--surface);border:1px solid var(--border);padding:13px 26px;box-shadow:var(--shadow-soft);}
  .btn-back{background:transparent;color:var(--ink-2);border:2px solid var(--border);font-size:15px;padding:11px 22px;}

  /* result card */
  .result{margin-top:30px;min-height:80px;background:var(--surface);color:var(--ink);border-radius:var(--r-lg);border:1px solid var(--border);
    padding:22px 30px;max-width:560px;width:calc(100% - 18px);text-align:center;box-shadow:var(--shadow-card);
    opacity:0;transform:scale(.92) translateY(10px);transition:opacity .4s,transform .4s;}
  .result.show{opacity:1;transform:none;}
  .result .tag{font-family:'Jua',sans-serif;font-size:14px;color:var(--sea-text);}
  .result .place{font-family:'Black Han Sans',sans-serif;font-size:clamp(22px,6.2vw,38px);margin:4px 0;line-height:1.15;word-break:keep-all;}
  .result .place small{display:block;font-family:'Jua',sans-serif;font-size:14px;color:var(--ink-muted);margin-top:2px;}  /* 메타(지역·코드)는 도시명과 줄 분리 — 모바일 줄섞임 방지 */
  .result .themes{font-family:'Jua',sans-serif;font-size:20px;color:var(--coral-text);}
  .result .rdesc{font-family:'Jua',sans-serif;font-size:14px;color:var(--ink-3);margin-top:10px;line-height:1.6;max-width:34em;margin-left:auto;margin-right:auto;}
  .result .rwhen{font-family:'Jua',sans-serif;font-size:13px;color:var(--sea-text);margin-top:8px;}
  .result .rwhen:empty{display:none;} .result .rdesc:empty{display:none;}
  /* (재미) 도착 후 랜덤 — 종류 골라 운에 맡기기 */
  .arrival-box{margin-top:18px;text-align:center;width:100%;max-width:560px;}
  .arrival-q{font-family:'Jua',sans-serif;font-size:16px;color:var(--ink);margin-bottom:8px;}
  .arrival-types{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
  .arrival-type{font-family:'Jua',sans-serif;font-size:14px;min-height:44px;padding:10px 15px;border-radius:var(--r-pill);cursor:pointer;
    display:inline-flex;align-items:center;white-space:nowrap;background:var(--surface-warm);color:var(--coral-text);border:1.5px solid var(--coral);box-shadow:var(--shadow-soft);transition:transform .1s,background .12s,color .12s;}
  .arrival-type:hover{transform:translateY(-1px);}
  .arrival-type:active{transform:scale(.96);}
  .arrival-type.on{background:var(--coral);color:#fff;border-color:var(--coral);font-weight:bold;}
  .arrival-type.all{font-weight:bold;}
  .mission-card{display:none;margin-top:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:18px 20px;font-family:'Jua',sans-serif;line-height:1.6;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere;}
  .mission-card.show{display:block;}
  .mission-card .rolling{font-size:24px;}
  .mission-card .m-act{font-family:'Black Han Sans',sans-serif;font-size:clamp(20px,5.5vw,26px);margin:2px 0;color:var(--ink);}
  .mission-card .m-head{font-family:'Black Han Sans',sans-serif;font-size:17px;color:var(--coral-text);margin-bottom:6px;}
  .mission-card .m-act.small{font-family:'Black Han Sans',sans-serif;font-size:15px;color:var(--coral-text);margin-bottom:8px;}
  .mission-card .m-line2{font-family:'Jua',sans-serif;font-size:clamp(16px,4.5vw,19px);color:var(--ink);margin:4px 0;}
  .mission-card .m-line{font-size:14px;color:var(--ink-2);margin-top:6px;}
  .mission-card .rare{color:var(--coral-text);}
  .mission-foot{display:flex;gap:10px;justify-content:center;margin-top:10px;flex-wrap:wrap;}
  .rnd-result{display:flex;flex-direction:column;gap:10px;width:100%;margin-top:10px;}
  .rnd-result:empty{display:none;}
  .rnd-cap{font-family:'Jua',sans-serif;font-size:14px;color:var(--coral-text);margin:2px 2px 4px;}
  .arrival-hint{font-family:'Jua',sans-serif;font-size:12px;color:var(--ink-muted);margin-top:10px;text-align:center;line-height:1.5;}
  .arrival-hint b{color:var(--coral-text);}
  #randomTab .mission-card{max-width:560px;margin-left:auto;margin-right:auto;text-align:center;}
  #randomTab .group-title,#randomTab .arrival-q{text-align:center;}
  /* 랜덤 강도: 접이식 — 휠→돌리기 동선을 막지 않게 기본 한 줄 요약, 펼치면 3버튼 */
  .intensity-fold{text-align:center;margin:10px 0 2px;font-family:'Jua',sans-serif;}
  .intensity-fold>summary{cursor:pointer;list-style:none;font-size:13px;color:var(--ink-2);opacity:.9;}
  .intensity-fold>summary::-webkit-details-marker{display:none;}
  .intensity-fold>summary::after{content:" ▾";opacity:.7;}
  .intensity-fold[open]>summary::after{content:" ▴";}
  .intensity-fold[open]>summary{margin-bottom:8px;opacity:1;}
  .intensity-fold>summary b{color:var(--coral-text);}
  .intensity-fold .int-seg{margin:0 auto;}
  .intensity-fold .int-hint{margin-top:5px;}
  .int-cap{font-family:'Jua',sans-serif;font-size:14px;color:var(--ink-2);opacity:.95;}
  .int-seg{display:inline-flex;background:var(--surface-3);border-radius:var(--r-pill);padding:4px;gap:2px;}
  .int-btn{font-family:'Jua',sans-serif;font-size:14px;border:none;cursor:pointer;background:transparent;color:var(--ink-2);
    padding:6px 18px;border-radius:var(--r-pill);transition:background .15s,color .15s,transform .1s;opacity:.8;}
  .int-btn:active{transform:scale(.95);}
  .int-btn.on{background:var(--coral);color:#fff;opacity:1;font-weight:700;}
  .int-hint{font-family:'Jua',sans-serif;font-size:12px;color:var(--ink-3);opacity:.95;min-height:1em;}

  /* generic card — 하드 오프셋 그림자는 강조(result/돌림판)에만, 일반 카드는 부드러운 단일 그림자 */
  .card{background:var(--paper);color:var(--deep);border-radius:var(--r-lg);padding:clamp(20px,5vw,28px);width:100%;
    box-shadow:var(--shadow-soft);margin-top:var(--s4);}
  .card h2{font-family:'Black Han Sans',sans-serif;font-size:22px;margin-bottom:4px;color:var(--deep);}
  .card .lead{font-size:14px;color:var(--ink-3);margin-bottom:16px;}
  .group-title{font-family:'Jua',sans-serif;font-size:16px;color:var(--sea-text);margin:var(--s5) 0 var(--s2);
    border-bottom:2px dashed var(--border);padding-bottom:4px;}
  .group-title:first-of-type{margin-top:var(--s2);}
  /* 1차 헤더(sec-head) 바로 아래 첫 2차 헤더는 위계상 밀착 — 두 구획 첫 항목 간격을 동일하게(:first-of-type 함정 보정) */
  .sec-head + .group-title{margin-top:var(--s2);}
  /* 보조 섹션 헤더(접기 등) — 1차보다 약하게 */
  .group-title.sub{font-size:14px;opacity:.9;border-bottom-style:dotted;}
  /* 카테고리 종속 보조 헤더(세부 항목 등) — 한 단계 들여 종속 표현 */
  .group-title.sub2{font-size:13px;color:var(--ink-3);margin-top:var(--s3);padding-left:var(--s3);border-bottom-style:dotted;opacity:.92;}
  /* 1차 섹션 헤더(예약/둘러보기) — group-title(2차)보다 위계 위 */
  .sec-head{font-family:'Black Han Sans',sans-serif;font-size:18px;color:var(--deep);margin:var(--s6) 0 var(--s2);
    padding:8px 14px;background:linear-gradient(var(--surface-warm),var(--surface-2));border-radius:var(--r-md);border-left:5px solid var(--coral);}
  .sec-head:first-of-type{margin-top:var(--s3);}
  .sec-head small{display:block;margin-top:2px;font-family:'Jua',sans-serif;font-size:12.5px;font-weight:normal;color:var(--ink-3);}  /* 캡션 줄 분리(제목과 baseline 섞임 방지) */
  .sec-head.browse{border-left-color:var(--sea-text);}

  .chips{display:flex;flex-wrap:wrap;gap:8px;}
  .chip{font-family:'Jua',sans-serif;font-size:14px;padding:9px 15px;border-radius:var(--r-pill);cursor:pointer;
    background:var(--surface-3);color:var(--ink-2);border:2px solid transparent;user-select:none;transition:.15s;}
  .chip:hover{transform:translateY(-1px);}
  .chip.bad{background:var(--rose);color:#fff;border-color:#b32030;}
  .chip.sel{background:var(--sea);color:#fff;}
  /* 장소추천 소항목 칩: 선택(기본)=초록 강조, 해제=흐린 회색 */
  .chip.inc{background:#3c8159;color:#fff;border-color:#2f6747;}
  .chip.inc.off{background:var(--surface-3);color:var(--ink-3);border-color:transparent;opacity:.75;}
  /* 담기 체크박스 */
  .pick-chk{display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0 4px;cursor:pointer;}
  .pick-chk input{width:20px;height:20px;accent-color:#7fb069;cursor:pointer;}
  /* 하단 장바구니 바 */
  .basket-bar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:9000;display:flex;align-items:center;gap:10px;
    background:#2b2b2b;color:#fff;padding:9px 12px 9px 16px;border-radius:var(--r-pill);box-shadow:var(--shadow-card);max-width:94vw;font-size:14px;}
  .basket-bar b{color:#ffd166;}
  .basket-bar .btn{padding:7px 13px;font-size:13px;margin:0;}
  /* 여행 선택 시트 */
  .basket-pick{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9500;display:flex;align-items:center;justify-content:center;padding:20px;}
  .bp-card{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:var(--r-card);padding:18px;max-width:420px;width:100%;max-height:80vh;overflow:auto;}
  .bp-card h3{margin:0 0 10px;font-size:16px;color:var(--ink);}
  .bp-item{display:block;width:100%;margin:6px 0;text-align:left;padding:11px 14px;font-size:14px;}
  /* 여행 계획 탭 */
  .plan-add{display:flex;gap:6px;margin:8px 0;}
  .plan-add input{flex:1;}
  .plan-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0;font-size:14px;}
  .plan-allwrap{display:flex;align-items:center;gap:6px;cursor:pointer;}
  .plan-list{display:flex;flex-direction:column;gap:4px;margin:6px 0;}
  .plan-row{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-warm);border-radius:var(--r-sm);}
  .plan-row .plan-cb{width:18px;height:18px;accent-color:#7fb069;flex:0 0 auto;}
  .plan-name{flex:1;font-size:14px;line-height:1.35;}
  .plan-day{display:inline-block;background:var(--sea);color:#fff;font-size:11px;font-weight:bold;padding:1px 7px;border-radius:10px;margin-right:2px;}
  .plan-go{flex:0 0 auto;color:var(--sea-text);text-decoration:none;font-weight:bold;}
  .plan-foot{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
  .plan-foot .btn{flex:1;min-width:140px;padding:11px;}
  @media(max-width:400px){.plan-foot .btn{min-width:0;flex-basis:calc(50% - 4px);}}  /* 좁은 화면: 2열 균등(140px 고정으로 인한 1열 강제 방지) */
  .tab-badge{display:inline-block;min-width:16px;height:16px;line-height:16px;background:var(--rose);color:#fff;border-radius:8px;font-size:10px;padding:0 4px;margin-left:3px;vertical-align:top;}
  /* 직접 고르기(룰렛 안 굴리고) */
  .manual-pick{text-align:center;margin:6px 0 2px;}
  .manual-toggle{background:none;border:none;color:var(--sea-text);font-family:'Jua',sans-serif;font-size:14px;cursor:pointer;text-decoration:underline;padding:6px;}
  .manual-toggle.on{font-weight:bold;}
  .manual-box{max-width:360px;margin:8px auto 0;background:var(--surface-warm);border-radius:var(--r-14);padding:14px;display:flex;flex-direction:column;gap:8px;}
  .mp-row{display:flex;align-items:center;gap:8px;}
  .mp-row label{flex:0 0 64px;text-align:right;font-size:13px;opacity:.8;}
  .mp-row select{flex:1;padding:9px;border-radius:10px;border:1px solid var(--border);background:var(--surface-input);color:var(--ink);font-family:'Jua',sans-serif;font-size:14px;}

  .opt{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--r-14);background:var(--surface-2);
    margin-bottom:8px;cursor:pointer;border:2px solid transparent;transition:.15s;}
  .opt:hover{background:var(--surface-3);}
  .opt.on{background:rgba(42,157,143,.14);border-color:var(--sea-text);}
  .opt .box{width:22px;height:22px;border-radius:6px;border:2px solid var(--ink-muted);flex:0 0 auto;
    display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;}
  .opt.on .box{background:var(--sea);border-color:var(--sea-text);}
  .opt.radio .box{border-radius:50%;}
  .opt .txt{font-size:15px;}
  .opt .txt small{display:block;color:var(--ink-muted);font-size:12px;}

  .summary{background:var(--surface-warm);border:1px solid var(--border);border-left:3px solid var(--coral);border-radius:var(--r-14);padding:14px 16px;font-size:14px;margin-bottom:14px;line-height:1.7;color:var(--ink-2);}
  .summary:empty{display:none;}
  .summary b{color:var(--ink);}

  .link-row{display:flex;flex-direction:column;gap:10px;}
  .link-row:empty{display:none;}
  .linkbtn{display:flex;align-items:center;gap:12px;text-decoration:none;background:var(--deep);color:var(--paper);
    border-radius:var(--r-14);padding:14px 16px;font-family:'Jua',sans-serif;font-size:15px;transition:.15s;box-shadow:0 4px 10px rgba(0,0,0,.2);}
  .linkbtn:hover{transform:translateY(-2px);filter:brightness(1.08);}
  .linkbtn .ico{font-size:22px;flex:0 0 auto;}
  .linkbtn .meta{flex:1;min-width:0;}
  .linkbtn .lb-title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .linkbtn .meta small{display:block;opacity:.7;font-size:12px;font-family:'Gowun Dodum';word-break:keep-all;overflow-wrap:anywhere;}  /* 한글 부제 음절 단위 줄넘김 방지(어절 단위로) */
  .linkbtn .go{font-size:18px;opacity:.6;}
  .pill{display:inline-block;background:var(--sea);color:#fff;font-size:11px;padding:2px 9px;border-radius:20px;margin-left:6px;}
  .filter-tip{font-size:13px;color:var(--ink-3);background:var(--surface-2);border-radius:var(--r-sm);padding:10px 12px;margin-top:6px;line-height:1.6;}
  .filter-tip:empty{display:none;}
  .tip-fold>summary{cursor:pointer;color:var(--sea-text);font-weight:bold;list-style:none;}
  .tip-fold>summary::-webkit-details-marker{display:none;}
  .tip-fold>summary::before{content:"▸ ";} .tip-fold[open]>summary::before{content:"▾ ";}
  .tip-fold[open]>summary{margin-bottom:6px;}
  /* 옵션 접이식 '추천받기'(항공·숙소·코스) — 준비물 화면 하단, 기본 접힘 */
  .reco-fold{margin-top:var(--s5);border-top:1px solid var(--border);padding-top:var(--s4);}
  .reco-fold>summary{cursor:pointer;list-style:none;font-family:'Jua',sans-serif;font-size:16px;color:var(--ink);
    background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:13px 16px;
    display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .reco-fold>summary::-webkit-details-marker{display:none;}
  .reco-fold>summary::after{content:"▾";margin-left:auto;color:var(--ink-3);font-size:14px;}
  .reco-fold[open]>summary::after{content:"▴";}
  .reco-fold>summary small{font-weight:normal;font-size:12px;color:var(--ink-muted);}
  .reco-body{margin-top:var(--s3);}

  .check-list{list-style:none;}
  .check-list li{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--border);font-size:15px;}
  .check-list li:last-child{border-bottom:none;}
  .check-list .ic{font-size:18px;flex:0 0 auto;}
  .check-list small{color:var(--ink-muted);display:block;font-size:12px;}
  .warn{background:rgba(251,111,86,.12);border:1px solid rgba(251,111,86,.45);border-left:3px solid var(--coral);color:var(--ink);border-radius:var(--r-12);padding:12px 14px;font-size:13px;line-height:1.6;margin-top:14px;}
  .nav-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px;}
  .foot-note{font-size:12px;opacity:.6;margin-top:26px;text-align:center;max-width:600px;line-height:1.6;}

  /* tabs */
  .tabbar{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;width:100%;max-width:720px;margin:22px auto 0;background:var(--surface-2);border:1px solid var(--border);padding:6px;border-radius:var(--r-lg);box-shadow:var(--shadow-soft);}
  .tabbtn{font-family:'Jua',sans-serif;font-size:15px;border:none;cursor:pointer;padding:10px 22px;border-radius:var(--r-pill);
    background:transparent;color:var(--ink-3);transition:.15s;display:flex;align-items:center;gap:7px;white-space:nowrap;}
  .tabbtn.on{background:var(--coral);color:#fff;}
  .tab-badge{background:var(--coral);color:#fff;font-size:12px;border-radius:var(--r-pill);padding:1px 8px;min-width:20px;text-align:center;}
  .tabbtn.on .tab-badge{background:#fff;color:var(--coral-text);}
  /* 좁은 화면 보정: 탭(4개)/강도 세그/프록시 입력 가로 압박 완화 — 4탭이 한 줄에 들도록 단계적 축소 */
  @media(max-width:480px){ .tabbtn{padding:9px 12px;font-size:14px;} }
  @media(max-width:390px){
    .tabbtn{padding:8px 9px;font-size:13px;}
    .int-btn{padding:6px 13px;}
    .scope-btn{padding:8px 12px;font-size:14px;}
    #proxyInput{min-width:0;}
  }
  .tab{display:none;width:100%;max-width:720px;flex-direction:column;align-items:center;}
  .tab.active{display:flex;}
  /* 국내/해외/전체 — 룰렛 전에 고르는 1차 선택(눈에 띄게) */
  .scope-seg{display:inline-flex;gap:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-pill);padding:4px;margin:2px auto 10px;}
  .scope-btn{font-family:'Jua',sans-serif;font-size:15px;min-height:42px;padding:8px 18px;border:none;border-radius:var(--r-pill);cursor:pointer;background:transparent;color:var(--ink-2);transition:background .15s,color .15s;}
  .scope-btn:hover{color:var(--ink);}
  .scope-btn.on{background:var(--coral);color:#fff;font-weight:bold;}

  /* trips tab */
  .trips-toolbar{display:flex;justify-content:space-between;align-items:center;width:100%;margin:14px 0 6px;gap:10px;flex-wrap:wrap;}
  .tt-left,.tt-right{display:flex;align-items:center;gap:10px;}
  .mini-check{font-family:'Jua',sans-serif;font-size:14px;display:flex;align-items:center;gap:6px;cursor:pointer;}
  .mini-check input{width:17px;height:17px;}
  .sel-count{font-size:13px;opacity:.75;}
  .btn-mini{font-family:'Jua',sans-serif;font-size:13px;border:none;cursor:pointer;padding:9px 15px;border-radius:var(--r-pill);
    background:var(--surface);color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow-soft);}
  .btn-mini.danger{background:var(--rose);color:#fff;border-color:var(--rose);box-shadow:var(--shadow-soft);}
  .btn-mini:active{transform:translateY(2px);box-shadow:none;}
  .trips-empty{margin-top:40px;text-align:center;font-size:15px;line-height:1.9;opacity:.8;}
  .store-badge{width:100%;font-size:12.5px;border-radius:var(--r-12);padding:9px 13px;margin-top:4px;line-height:1.5;}
  .store-badge.ok{background:rgba(42,157,143,.16);border-left:3px solid var(--sea);color:var(--ink-2);}
  .store-badge.warnbar{background:rgba(251,111,86,.16);border-left:3px solid var(--coral);color:var(--ink-2);}

  /* places tab */
  .loc-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
  .pc-input{flex:1;min-width:200px;font-family:'Gowun Dodum';font-size:14px;padding:11px 13px;border-radius:var(--r-12);border:1px solid var(--border);background:var(--surface-input);color:var(--ink);}
  .locmsg{font-size:12.5px;margin-top:6px;min-height:16px;color:var(--ink-3);line-height:1.6;}
  .locmsg a{color:var(--sea-text);font-weight:bold;text-decoration:underline;}
  .locmsg.ok{color:#1e7a6f;}
  .locmsg.warn{color:#b3502f;}
  /* 상태 텍스트색: 다크에서 너무 어두워 가독 저하 → 밝게 보정 */
  html[data-theme="dark"] .locmsg.ok,html[data-theme="dark"] .up-ok{color:#54cdb9;}
  html[data-theme="dark"] .locmsg.warn{color:#ff9b7a;}
  html[data-theme="dark"] .rec-row .rdel{color:#ff7a6c;}
  .cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
  @media(max-width:520px){.cat-grid{grid-template-columns:repeat(2,1fr);}}
  .cat-btn{font-family:'Jua',sans-serif;font-size:14px;border:2px solid transparent;cursor:pointer;border-radius:var(--r-14);
    padding:13px 6px;background:var(--surface-3);color:var(--ink-2);display:flex;flex-direction:column;align-items:center;gap:4px;transition:.12s;white-space:nowrap;overflow:hidden;}
  .cat-btn .ce{font-size:22px;}
  .cat-btn:hover{transform:translateY(-2px);}
  .cat-btn.on{background:var(--sea);color:#fff;border-color:#1e7a6f;}
  .range-row{display:flex;gap:8px;}
  .range-btn{flex:1;font-family:'Jua',sans-serif;font-size:14px;border:2px solid transparent;cursor:pointer;border-radius:var(--r-14);padding:10px 8px;background:var(--surface-2);color:var(--ink-2);display:flex;flex-direction:column;align-items:center;gap:2px;transition:.15s;}
  .range-btn small{font-size:11px;opacity:.7;}
  .range-btn:hover{transform:translateY(-2px);}
  .range-btn.on{background:var(--sea);color:#fff;border-color:#1e7a6f;}
  .range-btn.on small{opacity:.85;}
  .pc-results{display:flex;flex-direction:column;gap:12px;width:100%;margin-top:18px;}
  .pc-card{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:var(--r-card);padding:15px 17px;box-shadow:var(--shadow-card);}
  .pc-card .pc-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:18px;}
  .pc-card .pc-num{font-family:'Black Han Sans';font-size:1em;color:var(--coral-text);flex:0 0 auto;}
  .pc-card .pc-title{font-family:'Jua';font-size:.9em;overflow:hidden;text-overflow:ellipsis;min-width:0;}
  .pc-card .pc-cat{font-size:.62em;background:var(--sea);color:#fff;padding:2px 9px;border-radius:20px;flex:0 0 auto;white-space:nowrap;}
  .pc-award{display:inline-block;font-family:'Jua',sans-serif;font-size:11px;padding:2px 8px;border-radius:20px;margin-left:6px;vertical-align:middle;color:#fff;white-space:nowrap;}
  .pc-award.mich{background:#c8102e;}
  .pc-award.bib{background:#e8731c;}
  .pc-award.blue{background:#2456b8;}
  .pc-award.cur{background:#7a6a3a;}
  .pc-card{position:relative;}
  .pc-vote{display:inline-flex;align-items:center;gap:3px;margin-left:auto;flex:0 0 auto;position:relative;}
  .vfloat{position:absolute;left:50%;top:-4px;transform:translateX(-50%);font-size:13px;font-weight:bold;pointer-events:none;animation:vfloat .7s ease-out forwards;}
  @keyframes vfloat{from{opacity:1;transform:translate(-50%,0);}to{opacity:0;transform:translate(-50%,-18px);}}
  .pc-vote button{border:none;cursor:pointer;border-radius:var(--r-12);padding:2px 7px;font-size:14px;background:var(--surface-3);color:var(--ink-2);line-height:1.3;}
  .pc-vote button.up.on{background:#2ec27e;color:#fff;}
  .pc-vote button.down.on{background:#e06a52;color:#fff;}
  .pc-blurb{font-size:13px;color:var(--ink-3);margin:0 0 var(--s1);line-height:1.5;}
  .pc-addr{font-size:12px;color:var(--ink-3);}
  .pc-foot{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:var(--s3);padding-top:var(--s2);border-top:1px solid var(--border);}
  .pc-foot .pc-vote{margin-left:0;}
  .pc-osm{font-size:12px;color:var(--ink-3);text-decoration:none;margin-left:auto;}
  @media(max-width:420px){.pc-osm{margin-left:0;}}  /* 좁은 화면: 풋바 wrap 시 OSM이 혼자 우측에 뜨는 어색함 방지 */
  .pc-osm:hover{color:var(--sea-text);text-decoration:underline;}
  .pc-vote .vc{font-size:11px;color:var(--ink-muted);min-width:14px;text-align:center;}
  .pc-vote .vcount{font-size:11px;color:var(--ink-muted);min-width:10px;text-align:center;}
  .pc-card .pc-cat{font-size:11px;}
  .act-row{display:flex;gap:6px;align-items:center;margin-bottom:6px;}
  .act-row .linkbtn{flex:1;min-width:0;}
  .pc-card .pc-sub{font-size:13px;color:var(--ink-3);margin:7px 0 var(--s2);line-height:1.6;}
  .pc-links{display:flex;flex-direction:column;gap:8px;}
  .pc-empty{text-align:center;opacity:.75;font-size:14px;margin-top:30px;line-height:1.8;}
  .trips-group{width:100%;margin-top:18px;}
  .grp-title{font-family:'Jua',sans-serif;font-size:17px;margin-bottom:10px;opacity:.95;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .grp-title small{font-size:13px;opacity:.7;}
  .trip-list{display:flex;flex-direction:column;gap:12px;width:100%;}

  /* trip card — frame color by STATUS */
  .trip-card{display:flex;gap:0;border-radius:var(--r-card);overflow:hidden;cursor:pointer;position:relative;
    box-shadow:var(--shadow-card);transition:transform .12s;border:3px solid transparent;}
  .trip-card:hover{transform:translateY(-2px);}
  .trip-card.st-booked{background:#ffffff;color:#23303a;border-color:#d8e6e2;}
  .trip-card.st-pre{background:#c7ccd1;color:#2b343b;border-color:#c7ccd1;}
  .trip-card.st-closed{background:#1c2329;color:#e8e8e8;border-color:#0c1013;}
  /* 다크 모드: 흰/회색 카드가 눈부심 → 같은 의미(예약=초록/대기=중립/마감=어둠)를 다크 톤으로 */
  html[data-theme="dark"] .trip-card.st-booked{background:#15302b;color:#dff3ee;border-color:#2a9d8f;}
  html[data-theme="dark"] .trip-card.st-pre{background:#2a2f37;color:#cdd2d9;border-color:#3a414b;}
  html[data-theme="dark"] .trip-card.st-closed{background:#101216;color:#9aa0a8;border-color:#2a2e34;}
  .tc-sel{position:absolute;top:10px;left:10px;width:20px;height:20px;z-index:3;cursor:pointer;}
  .tc-photo{width:104px;flex:0 0 104px;display:flex;align-items:center;justify-content:center;font-size:40px;}
  @media(max-width:520px){.tc-photo{width:78px;flex-basis:78px;font-size:30px;}}
  .tc-body{flex:1;padding:12px 14px 12px 12px;min-width:0;}
  .tc-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:20px;}
  .tc-city{font-family:'Black Han Sans',sans-serif;font-size:1em;font-weight:bold;overflow:hidden;text-overflow:ellipsis;min-width:0;}
  .tc-dates{font-size:.62em;opacity:.85;flex:0 0 auto;}
  .tc-info{margin-top:7px;display:flex;flex-direction:column;gap:3px;font-size:13px;}
  .tc-info .row{display:flex;gap:6px;align-items:center;white-space:nowrap;overflow:hidden;}
  .tc-badge{font-size:.55em;padding:1px 8px;border-radius:20px;font-family:'Jua';flex:0 0 auto;white-space:nowrap;}
  .st-booked .tc-statusbadge{background:#2a9d8f;color:#fff;}
  .st-pre .tc-statusbadge{background:#6b747c;color:#fff;}
  .st-closed .tc-statusbadge{background:#000;color:#ff8b7a;border:1px solid #ff8b7a;}
  /* deactivated (마감/변경) item = red text + tooltip */
  .dead{color:#ff3b30;font-weight:bold;position:relative;cursor:help;text-decoration:underline dotted;}
  .st-closed .dead{color:#ff6b5e;}
  .dead .tip{display:none;position:absolute;left:0;bottom:130%;z-index:10;background:#111;color:#fff;
    font-weight:normal;padding:8px 10px;border-radius:8px;font-size:12px;width:210px;line-height:1.5;box-shadow:0 4px 12px rgba(0,0,0,.5);}
  .dead:hover .tip,.dead.show .tip{display:block;}

  /* detail overlay */
  .detail-overlay{display:none;position:fixed;inset:0;background:rgba(15,22,28,.72);z-index:50;
    align-items:flex-start;justify-content:center;padding:24px 12px;overflow-y:auto;}
  .detail-overlay.open{display:flex;}
  .detail-sheet{background:var(--paper);color:var(--deep);border-radius:var(--r-lg);max-width:640px;width:100%;
    padding:20px 20px 30px;box-shadow:0 16px 40px rgba(0,0,0,.5);}
  .d-close{float:right;border:none;background:var(--surface-3);color:var(--ink-2);font-size:18px;width:36px;height:36px;border-radius:50%;cursor:pointer;}
  .d-city{font-family:'Black Han Sans',sans-serif;font-size:26px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .d-dates{font-size:14px;color:var(--ink-3);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  /* 상세 5탭: 줄바꿈 대신 가로 스크롤 1줄(좁은 화면에서 2~3줄 비대칭 방지) */
  .d-tabs{display:flex;gap:6px;margin:14px 0;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .d-tabs::-webkit-scrollbar{display:none;}
  .d-tab{flex:0 0 auto;font-family:'Jua',sans-serif;font-size:13px;border:none;cursor:pointer;padding:8px 14px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--ink-2);white-space:nowrap;}
  .d-tab.on{background:var(--sea);color:#fff;}
  .d-pane{display:none;}
  .d-pane.on{display:block;}
  .d-row{background:var(--surface-2);border-radius:var(--r-14);padding:13px 15px;margin-bottom:10px;}
  .d-row h4{font-family:'Jua',sans-serif;font-size:15px;margin-bottom:5px;display:flex;align-items:center;gap:7px;justify-content:space-between;}
  .d-row .sub{font-size:13px;color:var(--ink-3);line-height:1.6;}
  .stat-pill{font-size:12px;padding:2px 10px;border-radius:20px;font-family:'Jua';}
  .stat-booked{background:#2a9d8f;color:#fff;}
  .stat-pre{background:#9aa0a6;color:#fff;}
  .stat-dead{background:#ff3b30;color:#fff;}
  .d-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
  .d-btn{font-family:'Jua',sans-serif;font-size:13px;border:none;cursor:pointer;padding:9px 14px;border-radius:var(--r-12);background:var(--deep);color:var(--paper);}
  .d-btn.ghost{background:var(--surface-3);color:var(--ink-2);}
  .d-btn.warn{background:var(--coral);color:#fff;}
  .d-btn:disabled{opacity:.45;cursor:not-allowed;}
  .up-field{font-size:13px;margin:8px 0;}
  .up-field input[type=file]{display:block;margin-top:4px;font-size:12px;}
  .up-ok{color:#1e7a6f;font-weight:bold;}
  .rec-form{display:flex;flex-direction:column;gap:7px;background:var(--surface-warm);border:1px solid var(--border);border-left:3px solid var(--coral);border-radius:var(--r-14);padding:12px;margin-bottom:12px;}
  .rec-form input,.rec-form textarea,.rec-form select{font-family:'Gowun Dodum';font-size:13px;padding:8px;border-radius:8px;border:1px solid var(--border);background:var(--surface-input);color:var(--ink);width:100%;}
  .rec-row{background:var(--surface-2);border-radius:var(--r-14);padding:12px 14px;margin-bottom:9px;}
  .rec-row .rh{display:flex;justify-content:space-between;align-items:center;font-family:'Jua';font-size:14px;white-space:nowrap;overflow:hidden;gap:8px;}
  .rec-row .rh span:first-child{overflow:hidden;text-overflow:ellipsis;min-width:0;}
  .rec-row .rdel{flex:0 0 auto;}
  .rec-row .rmeta{font-size:12px;color:var(--ink-3);margin-top:3px;line-height:1.5;}
  .rec-row .rdel{border:none;background:transparent;color:#c0392b;cursor:pointer;font-size:13px;}
  .stars{color:#f4a261;letter-spacing:1px;}
