/* ================================================================
   hihildaflora style.css
   ================================================================ */
/* ================================================================
   테마 변수 — 아침(morning) / 낮(day) / 밤(night)
   :root = 낮(day) 기준값. data-theme 속성으로 전환.
   (이전 버전 0_1_3 팔레트 이식)
   ================================================================ */
:root{
  --cream:#fbfaf7; --warm:#fefdfa; --dark:#2c2416; --mid:#6b5c45;
  --light:#a89880; --accent:#c8956c; --accent-dk:#a0704a; --line:#ece6db;
  --card:#ffffff; --shadow:0 2px 10px rgba(44,36,22,.06); --radius:12px;
  --serif:'Noto Serif KR', Georgia, serif; --sans:'Noto Sans KR', sans-serif;
  --cat-garden:#8a9a72; --cat-travel:#7c94a3; --cat-kids:#c98a8a;
  --cat-interior:#c8956c; --cat-cook:#c2a15a; --home-pin:#6b5c45; --tap:44px;
  /* 테마 확장 변수 */
  --nav-bg:rgba(251,250,247,.97);          /* 헤더 배경 */
  --bar-bg:rgba(251,250,247,.92);          /* 컨트롤바 배경 */
  --overlay:rgba(44,36,22,.5);             /* 모달 뒷배경 */
  --toast-bg:#2c2416; --toast-fg:#ffffff;  /* 토스트 */
  --danger:#c0392b; --danger-bg:#fdecea; --danger-line:#f5c6c2;
  --accent-glow:rgba(200,149,108,.18);     /* 강조 하이라이트 */
  --band-bg:rgba(200,149,108,.14);         /* 스크러버 구간 */
  --select-bg:rgba(160,112,74,.22);        /* 스크러버 드래그 */
  --fab-shadow:0 4px 16px rgba(160,112,74,.4);
  --hero-tint:rgba(251,250,247,.55);       /* 히어로 아트 위 덮개 */
}

/* 🌅 아침 — 톤다운된 따뜻한 베이지·로즈 (변경 없음) */
[data-theme="morning"]{
  --cream:#f0ebe2; --warm:#f8f3ec; --dark:#3a2e22; --mid:#7a6855;
  --light:#b0987c; --accent:#b8825a; --accent-dk:#9a6842; --line:#ddd0c0;
  --card:#faf6f0;
  --nav-bg:rgba(240,235,226,.97); --bar-bg:rgba(240,235,226,.92);
  --hero-tint:rgba(240,235,226,.55);
  --fab-shadow:0 4px 16px rgba(154,104,66,.4);
}

/* ☀️ 낮 — 가장 밝은 톤 (기본값, v5에서 밝기 상향) */
[data-theme="day"]{
  --cream:#fbfaf7; --warm:#fefdfa; --dark:#2c2416; --mid:#6b5c45;
  --light:#a89880; --accent:#c8956c; --accent-dk:#a0704a; --line:#ece6db;
  --card:#ffffff; --shadow:0 2px 10px rgba(44,36,22,.06);
  --nav-bg:rgba(251,250,247,.97); --bar-bg:rgba(251,250,247,.92);
  --hero-tint:rgba(251,250,247,.55);
}

/* 🌙 밤 — 흑색 + 파스텔 보라 다크 */
[data-theme="night"]{
  --cream:#0f0e14; --warm:#16151e; --dark:#e8e4f0; --mid:#b8b0cc;
  --light:#7a7290; --accent:#a98ece; --accent-dk:#8b6eb8; --line:#2a2638;
  --card:#1a1824;
  --shadow:0 2px 12px rgba(0,0,0,.4);
  --nav-bg:rgba(15,14,20,.97); --bar-bg:rgba(15,14,20,.92);
  --overlay:rgba(0,0,0,.65);
  --toast-bg:#3a3550; --toast-fg:#f0ecf8;
  --danger:#e07b6f; --danger-bg:#3a2028; --danger-line:#5a3038;
  --accent-glow:rgba(169,142,206,.22);
  --band-bg:rgba(169,142,206,.16);
  --select-bg:rgba(139,110,184,.28);
  --fab-shadow:0 4px 16px rgba(139,110,184,.45);
  --hero-tint:rgba(15,14,20,.62);
  /* 카테고리 색 살짝 밝게 (다크 배경 대비 확보) */
  --cat-garden:#9db383; --cat-travel:#8fa9ba; --cat-kids:#d99e9e;
  --cat-interior:#d3a67e; --cat-cook:#d4b46e;
}

/* 테마 전환 시 부드러운 색 전환 */
*,*::before,*::after{transition:background-color .25s,border-color .25s,color .2s;}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;}
body{background:var(--cream);color:var(--dark);font-family:var(--sans);
  padding-bottom:env(safe-area-inset-bottom);}
h1,h2,h3,h4{font-family:var(--serif);margin:0;}
button{font-family:var(--sans);}
a{color:inherit;}
.hidden{display:none !important;}

/* ============ 헤더 ============ */
.site-header{position:sticky;top:0;z-index:40;background:var(--nav-bg);
  backdrop-filter:blur(8px);border-bottom:1px solid var(--line);}
.brand-row{max-width:1080px;margin:0 auto;padding:12px 16px 0;display:flex;align-items:center;gap:8px;}
.brand-row .word{font-family:var(--serif);font-size:19px;color:var(--dark);}
.brand-row .accent{color:var(--accent-dk);font-weight:600;}
.brand-row .spacer{flex:1;}
.admin-tag{font-size:11px;background:var(--accent-dk);color:#fff;padding:2px 8px;border-radius:12px;}
.user-badge{font-size:12px;color:var(--mid);white-space:nowrap;}
.header-link{font-size:13px;color:var(--accent-dk);text-decoration:none;padding:8px 10px;white-space:nowrap;}
.header-link:hover{text-decoration:underline;}
.linkbtn{background:none;border:none;cursor:pointer;}
.write-top{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#fff;
  border:none;border-radius:22px;padding:9px 16px;font-size:13.5px;font-weight:500;cursor:pointer;
  box-shadow:var(--shadow);transition:.15s;min-height:var(--tap);}
.write-top:hover{background:var(--accent-dk);}
.main-nav{max-width:1080px;margin:0 auto;padding:8px 8px 0;display:flex;gap:2px;overflow-x:auto;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;}
.main-nav::-webkit-scrollbar{display:none;}
.nav-btn{flex:0 0 auto;font-size:13.5px;color:var(--mid);background:none;border:none;
  padding:10px 16px 12px;cursor:pointer;border-bottom:2px solid transparent;transition:.15s;white-space:nowrap;}
.nav-btn:hover{color:var(--dark);}
.nav-btn.active{color:var(--accent-dk);border-bottom-color:var(--accent);font-weight:500;}

/* ============ 컨트롤 ============ */
.control-bar{background:var(--bar-bg);border-bottom:1px solid var(--line);}
.control-inner{max-width:1080px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.seg{display:flex;background:var(--card);border:1px solid var(--line);border-radius:26px;padding:3px;box-shadow:var(--shadow);}
.seg button{font-size:12.5px;color:var(--mid);background:none;border:none;padding:7px 13px;border-radius:22px;cursor:pointer;transition:.15s;min-height:38px;}
.seg button.active{background:var(--accent);color:#fff;}
.zoom-widget{display:flex;align-items:center;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:26px;padding:4px 6px;box-shadow:var(--shadow);}
.zoom-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--warm);color:var(--accent-dk);font-size:17px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s;}
.zoom-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent);}
.zoom-btn:disabled{opacity:.35;cursor:default;background:var(--warm);color:var(--light);}
.zoom-label{font-size:12px;color:var(--mid);padding:0 4px;white-space:nowrap;}
.zoom-label b{color:var(--accent-dk);font-family:var(--serif);}
.year-chips{display:flex;gap:6px;flex-wrap:wrap;}
.year-chip{font-size:12px;padding:7px 13px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--mid);cursor:pointer;transition:.15s;min-height:36px;}
.year-chip.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--mid);margin-left:auto;}
.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle;}

/* ============ 구간 도구 ============ */
.range-bar{background:var(--warm);border-bottom:1px solid var(--line);}
.range-inner{max-width:1080px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--mid);}
.range-inner select{font-family:var(--sans);font-size:12.5px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);min-height:38px;}
.range-inner input[type=text]{font-family:var(--sans);font-size:12.5px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);min-height:38px;width:150px;}
.range-select-btn{font-size:12.5px;color:var(--mid);background:var(--card);border:1px solid var(--line);padding:7px 13px;border-radius:22px;cursor:pointer;min-height:38px;box-shadow:var(--shadow);}
.range-select-btn.on{background:var(--accent);color:#fff;border-color:var(--accent);}
.save-range{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 14px;cursor:pointer;font-size:12.5px;min-height:38px;}
.save-range:hover{background:var(--accent-dk);}
.saved-row{max-width:1080px;margin:0 auto;padding:0 16px 10px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.saved-label{font-size:11.5px;color:var(--light);}
.saved-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:6px 8px 6px 12px;border-radius:20px;border:1px solid var(--accent);background:var(--card);color:var(--accent-dk);cursor:pointer;}
.saved-chip.active{background:var(--accent);color:#fff;}
.saved-chip .del{width:18px;height:18px;border-radius:50%;background:rgba(0,0,0,.08);border:none;color:inherit;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.clear-range{font-size:11.5px;color:var(--mid);background:none;border:1px dashed var(--line);border-radius:20px;padding:6px 12px;cursor:pointer;}

/* ============ 스크러버 ============ */
.scrubber-wrap{max-width:1080px;margin:0 auto;padding:10px 16px 12px;}
.scrubber-hint{font-size:11px;color:var(--light);margin-bottom:6px;}
.scrubber{position:relative;height:44px;background:var(--warm);border:1px solid var(--line);border-radius:8px;cursor:pointer;overflow:hidden;touch-action:none;}
.scrubber.selecting{cursor:crosshair;}
.scrub-tick{position:absolute;bottom:0;width:2px;border-radius:1px;background:var(--cat-color,var(--accent));}
.scrub-tick.rich{opacity:.95;}
.scrub-year{position:absolute;bottom:3px;font-size:9.5px;color:var(--light);transform:translateX(-50%);}
.scrub-yearline{position:absolute;top:0;bottom:0;width:1px;background:var(--line);}
.scrub-band{position:absolute;top:0;bottom:0;background:var(--band-bg);border-left:1px solid var(--accent);border-right:1px solid var(--accent);pointer-events:none;}
.scrub-select{position:absolute;top:0;bottom:0;background:var(--select-bg);border-left:2px solid var(--accent-dk);border-right:2px solid var(--accent-dk);pointer-events:none;}

.stage{max-width:1080px;margin:0 auto;padding:18px 16px 100px;}
.hint{font-size:12px;color:var(--light);margin:2px 0 16px;line-height:1.5;}
.sec-title{font-size:19px;margin-bottom:8px;}
.section-intro{font-size:13px;color:var(--mid);margin-bottom:16px;line-height:1.6;}
.empty-msg{color:var(--light);font-size:13px;padding:20px 0;}
.section{padding:22px 0;}

/* ============ 카드 ============ */
.cat-badge{display:inline-block;font-size:11px;color:#fff;background:var(--cat-color,var(--accent));padding:2px 9px;border-radius:20px;font-weight:500;}
.insight-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
.insight-chip{font-size:11.5px;color:var(--mid);background:var(--warm);border:1px solid var(--line);padding:6px 10px;border-radius:20px;text-decoration:none;transition:.15s;}
.insight-chip:hover{border-color:var(--accent);color:var(--accent-dk);}
.tag-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px;}
.tag-chip{font-size:11px;color:var(--accent-dk);background:var(--warm);border:1px solid var(--line);padding:3px 9px;border-radius:14px;}
.tag-chip.small{font-size:10.5px;padding:2px 7px;}
.tag-chip.big{font-size:13px;padding:7px 13px;cursor:pointer;transition:.15s;}
.tag-chip.big b{color:var(--accent);}
.tag-chip.big.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.tag-chip.big.active b{color:#fff;}

.day-item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:18px;cursor:pointer;transition:box-shadow .3s,outline .3s,transform .15s;}
.day-item:hover{transform:translateY(-2px);}
.day-item.flash{outline:2px solid var(--accent);box-shadow:0 0 0 5px var(--accent-glow);}
.thumb{height:170px;background-size:cover;background-position:center;}
.body{padding:15px 16px 16px;}
.date{font-size:12px;color:var(--accent-dk);font-weight:500;margin-bottom:8px;}
.body h3{font-size:16.5px;margin:8px 0 6px;line-height:1.3;}
p.desc{font-size:13.5px;color:var(--mid);line-height:1.7;margin:0 0 8px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.card-foot{margin-top:10px;font-size:11.5px;color:var(--light);}
.mapthumb{height:170px;position:relative;overflow:hidden;
  background:repeating-linear-gradient(0deg, rgba(168,152,128,.14) 0 1px, transparent 1px 34px),
    repeating-linear-gradient(90deg, rgba(168,152,128,.14) 0 1px, transparent 1px 34px),
    linear-gradient(135deg,#eef1e7,#e3e8da);}
.mapthumb .road{position:absolute;background:#fff;box-shadow:0 0 0 1px var(--line);}
.mapthumb .road.h{height:10px;left:0;right:0;top:46%;}
.mapthumb .road.v{width:10px;top:0;bottom:0;left:38%;}
.mapthumb .pin{position:absolute;left:38%;top:46%;transform:translate(-50%,-100%);width:22px;height:22px;border-radius:50% 50% 50% 0;background:var(--accent-dk);box-shadow:0 2px 6px rgba(44,36,22,.3);}
.mapthumb .pin::after{content:"";position:absolute;inset:6px;background:#fff;border-radius:50%;}
.mapthumb .place{position:absolute;left:12px;bottom:12px;background:#fff;padding:4px 10px;border-radius:20px;font-size:11.5px;color:var(--dark);box-shadow:var(--shadow);}
.articlehead{height:56px;display:flex;align-items:center;padding:0 18px;background:var(--warm);border-bottom:1px solid var(--line);}
.articlehead span{font-family:var(--serif);font-size:26px;color:var(--light);}

/* 월/년 단위 */
.month-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.group-head{font-family:var(--serif);color:var(--accent-dk);font-size:15px;margin:26px 0 12px;display:flex;align-items:center;gap:8px;}
.group-head:first-child{margin-top:0;}
.group-head .line{flex:1;height:1px;background:var(--line);}
.group-head.clickable{cursor:pointer;}
.group-head .gh-sub{font-size:11px;color:var(--light);}
.m-item{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;transition:.15s;}
.m-item:hover{border-color:var(--accent);transform:translateY(-2px);}
.m-thumb{height:84px;background-size:cover;background-position:center;position:relative;}
.m-body{padding:8px 10px 10px;}
.m-body .cat-badge{font-size:9.5px;padding:1px 6px;}
.m-body h4{font-size:12px;margin:6px 0 0;font-weight:500;line-height:1.35;font-family:var(--sans);}
.m-date{font-size:10px;color:var(--light);margin-top:3px;}
.m-typeicon{position:absolute;top:6px;right:6px;background:rgba(255,255,255,.85);width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;}
.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:6px;}
.y-tile{aspect-ratio:1;border-radius:6px;background-size:cover;background-position:center;cursor:pointer;position:relative;border:1px solid var(--line);transition:.15s;}
.y-tile:hover{outline:2px solid var(--accent);transform:scale(1.06);z-index:2;}
.y-tile .dot{position:absolute;top:3px;left:3px;width:6px;height:6px;border-radius:50%;background:var(--cat-color,var(--accent));box-shadow:0 0 0 1px #fff;}

/* ============ 세로형 ============ */
.vtimeline{position:relative;padding-left:30px;}
.vtimeline::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--line);}
.v-yeardiv{position:relative;margin:6px 0 14px;}
.v-yeardiv span{display:inline-block;font-family:var(--serif);font-size:15px;color:#fff;background:var(--accent-dk);padding:3px 14px;border-radius:16px;position:relative;left:-30px;}
.v-yeardiv span.drill{cursor:pointer;}
.v-divider{position:relative;margin:4px 0 12px;}
.v-divider span{display:inline-block;font-size:12px;color:var(--accent-dk);background:var(--warm);border:1px solid var(--line);padding:3px 12px;border-radius:14px;position:relative;left:-30px;cursor:pointer;}
.v-divider span:hover{border-color:var(--accent);}
.v-item{position:relative;padding-bottom:16px;}
.v-node{position:absolute;left:-29px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--cat-color,var(--accent));border:3px solid var(--cream);box-shadow:0 0 0 1px var(--cat-color,var(--accent));z-index:1;}
.v-card{margin-bottom:0 !important;}
.v-monthrow{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:0 0 18px;}
.v-yeargrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:6px;margin:0 0 20px;}
@media(min-width:760px){
  .vtimeline{padding-left:0;}
  .vtimeline::before{left:50%;margin-left:-1px;}
  .v-yeardiv,.v-divider{text-align:center;}
  .v-yeardiv span,.v-divider span{left:0;}
  .v-item{width:calc(50% - 34px);}
  .v-item.left{margin-right:auto;text-align:right;}
  .v-item.right{margin-left:auto;}
  .v-item.left .v-node{right:-42px;left:auto;}
  .v-item.right .v-node{left:-42px;}
  .v-item.left .insight-row,.v-item.left .tag-row{justify-content:flex-end;}
  .v-monthrow,.v-yeargrid{width:100%;}
}

/* ============ 사진첩 ============ */
.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;}
.a-tile{aspect-ratio:1;border-radius:8px;background-size:cover;background-position:center;position:relative;overflow:hidden;border:1px solid var(--line);cursor:pointer;transition:.15s;}
.a-tile:hover{transform:scale(1.03);}
.a-tile .a-date{position:absolute;left:0;right:0;bottom:0;padding:5px 7px;font-size:10px;color:#fff;background:linear-gradient(to top, rgba(0,0,0,.45), transparent);}

/* ============ 게시판 ============ */
.board-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--card);}
.board-row{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line);font-size:13.5px;cursor:pointer;transition:.12s;}
.board-row:hover{background:var(--warm);}
.board-row:last-child{border-bottom:none;}
.board-row .b-date{color:var(--light);font-size:12px;width:88px;flex-shrink:0;}
.board-row .b-title{flex:1;color:var(--dark);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.board-row .b-cmt{font-size:11.5px;color:var(--light);flex-shrink:0;}
.tag-cloud{display:flex;gap:8px;flex-wrap:wrap;}

/* ============ FAB ============ */
.fab{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:45;width:58px;height:58px;border-radius:50%;background:var(--accent);color:#fff;border:none;font-size:28px;line-height:1;box-shadow:var(--fab-shadow);cursor:pointer;display:none;}
.fab:active{transform:scale(.94);}

/* ============ 모달 ============ */
.modal-back{position:fixed;inset:0;background:var(--overlay);z-index:60;display:none;align-items:center;justify-content:center;padding:16px;}
.modal-back.open{display:flex;}
.modal{background:var(--card);border-radius:16px;width:100%;max-width:560px;max-height:92vh;overflow-y:auto;box-shadow:0 12px 40px rgba(44,36,22,.28);}
.modal-head{position:sticky;top:0;background:var(--card);padding:18px 20px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;z-index:2;}
.modal-head h2{font-size:18px;}
.modal-head .close{margin-left:auto;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--warm);font-size:18px;cursor:pointer;color:var(--mid);}
.modal-body{padding:16px 20px 20px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:12.5px;color:var(--mid);margin-bottom:6px;font-weight:500;}
.field input[type=text],.field input[type=password],.field input[type=date],.field textarea,.field select{width:100%;font-family:var(--sans);font-size:14px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--warm);color:var(--dark);}
.field textarea{min-height:88px;resize:vertical;line-height:1.6;}
.field input[type=file]{width:100%;font-size:13px;}
.type-seg{display:flex;gap:6px;}
.type-seg button{flex:1;padding:10px;border:1px solid var(--line);background:var(--warm);border-radius:9px;font-size:13px;color:var(--mid);cursor:pointer;min-height:var(--tap);}
.type-seg button.active{border-color:var(--accent);background:var(--accent);color:#fff;}
.cat-seg{display:flex;gap:6px;flex-wrap:wrap;}
.cat-seg button{padding:8px 12px;border:1px solid var(--line);background:var(--warm);border-radius:20px;font-size:12.5px;color:var(--mid);cursor:pointer;min-height:38px;}
.img-preview{margin-top:8px;height:140px;border-radius:9px;background-size:cover;background-position:center;background-color:var(--warm);border:1px dashed var(--line);}
.insight-fields .irow{display:flex;gap:6px;margin-bottom:6px;}
.insight-fields .irow input{flex:1;}
.add-insight{font-size:12px;color:var(--accent-dk);background:none;border:1px dashed var(--line);border-radius:8px;padding:8px 12px;cursor:pointer;}
.modal-actions{display:flex;gap:8px;margin-top:8px;}
.modal-actions .submit{flex:1;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:14px;font-size:15px;font-weight:500;cursor:pointer;min-height:var(--tap);}
.modal-actions .submit:hover{background:var(--accent-dk);}
.modal-actions .submit:disabled{opacity:.5;}
.modal-actions .cancel{background:var(--warm);color:var(--mid);border:1px solid var(--line);border-radius:10px;padding:14px 18px;font-size:14px;cursor:pointer;min-height:var(--tap);}
.pw-note{font-size:11.5px;color:var(--light);margin-top:5px;}

/* ---- 상세 모달 ---- */
.detail-photo{height:220px;border-radius:10px;background-size:cover;background-position:center;margin-bottom:14px;}
.detail-map{background:var(--warm);border:1px solid var(--line);border-radius:10px;padding:14px;font-size:14px;margin-bottom:14px;}
.detail-meta{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.detail-date{font-size:12.5px;color:var(--mid);}
.detail-content{font-size:14.5px;line-height:1.8;color:var(--dark);white-space:pre-wrap;margin:0 0 12px;}
.detail-actions{display:flex;gap:6px;margin:14px 0;}
.mini-btn{font-size:12px;color:var(--mid);background:var(--warm);border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer;}
.mini-btn:hover{border-color:var(--accent);color:var(--accent-dk);}
.mini-btn.danger:hover{border-color:var(--danger);color:var(--danger);}

/* ---- 댓글 ---- */
.comments-section{margin-top:18px;border-top:1px solid var(--line);padding-top:16px;}
.comments-title{font-size:15px;margin-bottom:12px;}
.comment-item{padding:10px 0;border-bottom:1px solid var(--line);}
.comment-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mid);margin-bottom:5px;flex-wrap:wrap;}
.comment-head b{color:var(--dark);font-size:13px;}
.comment-role{font-size:10.5px;background:var(--warm);border:1px solid var(--line);color:var(--light);padding:1px 7px;border-radius:10px;}
.comment-date{color:var(--light);}
.comment-del{margin-left:auto;font-size:11px;color:var(--light);background:none;border:none;cursor:pointer;text-decoration:underline;}
.comment-body{font-size:13.5px;color:var(--dark);line-height:1.6;white-space:pre-wrap;}
.comment-form{margin-top:12px;}
.comment-form textarea{width:100%;font-family:var(--sans);font-size:14px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--warm);min-height:64px;resize:vertical;}
.comment-submit{margin-top:8px;background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px 18px;font-size:13.5px;cursor:pointer;}
.comment-submit:hover{background:var(--accent-dk);}
.comment-login-note{font-size:13px;color:var(--mid);background:var(--warm);border:1px solid var(--line);border-radius:9px;padding:12px;text-align:center;}
.comment-login-note a{color:var(--accent-dk);font-weight:500;}

/* ============ 로그인 페이지 ============ */
.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;}
.login-box{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:36px 30px;width:100%;max-width:380px;text-align:center;}
.login-brand{font-family:var(--serif);font-size:26px;margin-bottom:6px;}
.login-brand .accent{color:var(--accent-dk);}
.login-sub{font-size:13px;color:var(--light);margin:0 0 24px;}
.login-error{background:var(--danger-bg);border:1px solid var(--danger-line);color:var(--danger);font-size:13px;padding:10px;border-radius:8px;margin-bottom:16px;}
.login-form .field{text-align:left;margin-bottom:14px;}
.login-form input{width:100%;font-family:var(--sans);font-size:15px;padding:12px 13px;border:1px solid var(--line);border-radius:9px;background:var(--warm);}
.login-submit{width:100%;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:14px;font-size:15px;font-weight:500;cursor:pointer;margin-top:4px;}
.login-submit:hover{background:var(--accent-dk);}
.login-guest{display:inline-block;margin-top:16px;font-size:13px;color:var(--mid);text-decoration:none;}
.login-guest:hover{color:var(--accent-dk);}
.login-hint{margin-top:20px;font-size:11.5px;color:var(--light);line-height:1.7;border-top:1px solid var(--line);padding-top:14px;}

/* ============ 관리자 테이블 ============ */
.admin-section .stage{padding-top:24px;}
.admin-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.admin-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);}
.admin-table{width:100%;border-collapse:collapse;font-size:13px;min-width:600px;}
.admin-table th{background:var(--warm);color:var(--mid);font-weight:500;text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap;}
.admin-table td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle;}
.admin-table tr:last-child td{border-bottom:none;}
.admin-table .muted{color:var(--light);font-size:12px;}
.row-actions{display:flex;gap:6px;white-space:nowrap;}
.role-badge{font-size:11px;padding:2px 9px;border-radius:12px;color:#fff;}
.role-admin{background:var(--accent-dk);}
.role-user{background:var(--cat-garden);}
.role-visitor{background:var(--light);}

/* ============ 토스트 ============ */
.hf-toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%) translateY(20px);background:var(--toast-bg);color:var(--toast-fg);font-size:13.5px;padding:12px 20px;border-radius:24px;box-shadow:0 6px 24px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:.25s;z-index:100;max-width:90vw;text-align:center;}
.hf-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.hf-toast.error{background:var(--danger);}

/* ============ 모바일 ============ */
@media(max-width:759px){
  .fab{display:flex;align-items:center;justify-content:center;}
  .write-top{display:none;}
  .user-badge{display:none;}
  .legend{width:100%;margin-left:0;order:5;}
  .thumb,.mapthumb{height:150px;}
  .modal-back{padding:0;align-items:flex-end;}
  .modal{max-width:none;max-height:96vh;border-radius:16px 16px 0 0;}
  .stage{padding-bottom:120px;}
  .board-row{flex-wrap:wrap;gap:6px 10px;}
  .board-row .b-date{width:auto;}
  .range-inner input[type=text]{width:100%;}
}

/* ================================================================
   [v2 추가] 테마 순환 버튼 — 🌅 아침 → ☀️ 낮 → 🌙 밤
   ================================================================ */
.theme-cycle-btn{width:38px;height:38px;border-radius:50%;font-size:17px;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  background:var(--card);border:1px solid var(--line);cursor:pointer;
  box-shadow:var(--shadow);transition:all .2s;padding:0;line-height:1;}
.theme-cycle-btn:hover{border-color:var(--accent);transform:scale(1.08);}
.theme-cycle-btn:active{transform:scale(.95);}
/* 로그인 페이지에선 우상단 고정 */
.login-page .theme-cycle-btn{position:fixed;top:14px;right:14px;z-index:50;}

/* ================================================================
   [v2 추가] 히어로 배너 — 아몬드 블라썸 원화 배경 + 타이포 로고
   ================================================================ */
.hero-banner{position:relative;height:190px;overflow:hidden;
  border-bottom:1px solid var(--line);}
.hero-banner .hero-art{position:absolute;inset:0;background-size:cover;
  background-position:center 38%;transform:scale(1.02);}
.hero-banner .hero-tint{position:absolute;inset:0;background:var(--hero-tint);}
.hero-banner .hero-text{position:relative;z-index:1;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;}
.hero-logo{font-family:var(--serif);font-size:34px;color:var(--dark);
  letter-spacing:.01em;text-shadow:0 1px 8px var(--cream);}
.hero-logo b{color:var(--accent-dk);font-weight:600;}
.hero-sub{font-size:13px;color:var(--mid);letter-spacing:.14em;
  text-shadow:0 1px 6px var(--cream);}
@media(max-width:759px){
  .hero-banner{height:140px;}
  .hero-logo{font-size:26px;}
  .hero-sub{font-size:11.5px;letter-spacing:.1em;}
}

/* 로그인 박스 상단 아트 */
.login-art{height:120px;border-radius:12px;background-size:cover;
  background-position:center 40%;margin:-6px 0 20px;border:1px solid var(--line);}

/* ================================================================
   [v2 추가] 밤 테마 미세 보정
   ================================================================ */
[data-theme="night"] .modal{box-shadow:0 12px 40px rgba(0,0,0,.6);}
[data-theme="night"] .m-typeicon{background:rgba(26,24,36,.85);color:var(--dark);}
[data-theme="night"] .y-tile .dot{box-shadow:0 0 0 1px var(--card);}
[data-theme="night"] .mapthumb{
  background:repeating-linear-gradient(0deg, rgba(122,114,144,.18) 0 1px, transparent 1px 34px),
    repeating-linear-gradient(90deg, rgba(122,114,144,.18) 0 1px, transparent 1px 34px),
    linear-gradient(135deg,#232030,#1c1a28);}
[data-theme="night"] .mapthumb .road{background:#2e2a40;box-shadow:0 0 0 1px var(--line);}
[data-theme="night"] .mapthumb .place{background:var(--card);color:var(--dark);}
[data-theme="night"] .articlehead span{color:var(--mid);}
[data-theme="night"] .hero-banner .hero-art{opacity:.85;}

/* ================================================================
   [v3 추가] 여행 지도 탭
   ================================================================ */
.travel-map{height:440px;border-radius:var(--radius);border:1px solid var(--line);
  background:var(--warm);overflow:hidden;}
.travel-map:empty::before{content:"지도를 불러오는 중…";display:flex;height:100%;
  align-items:center;justify-content:center;color:var(--light);font-size:13px;}
.map-notice{background:var(--warm);border:1px dashed var(--accent);border-radius:var(--radius);
  padding:14px 16px;font-size:13px;color:var(--mid);line-height:1.7;margin-bottom:14px;}
.map-notice code{background:var(--cream);border:1px solid var(--line);border-radius:5px;
  padding:1px 6px;font-size:12px;color:var(--accent-dk);}
/* 구글 인포윈도우 내부 (구글 흰 프레임 안이므로 항상 밝은 톤 고정) */
.map-info{padding:8px 10px;font-family:var(--sans);min-width:170px;max-width:230px;}
.map-info b{display:block;font-size:13px;color:#2c2416;margin-bottom:2px;}
.map-info span{display:block;font-size:11.5px;color:#6b5c45;margin-bottom:6px;}
.map-info button{font-size:12px;color:#fff;background:#c8956c;border:none;border-radius:7px;
  padding:6px 10px;cursor:pointer;}
.map-info button:hover{background:#a0704a;}

/* ================================================================
   [v3 추가] 상품 탭
   ================================================================ */
.product-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
.pf-chip{font-size:12.5px;color:var(--mid);background:var(--card);border:1px solid var(--line);
  border-radius:20px;padding:8px 14px;cursor:pointer;min-height:38px;}
.pf-chip:hover{border-color:var(--accent);}
.pf-chip.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;}
.product-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:16px;display:flex;flex-direction:column;gap:9px;}
.p-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.p-label{font-size:11px;color:var(--accent-dk);background:var(--warm);
  border:1px solid var(--line);border-radius:11px;padding:2px 9px;}
.p-cat{font-size:10.5px;color:#fff;background:var(--cat-color,var(--accent));
  border-radius:10px;padding:2px 8px;margin-left:auto;}
.p-name{font-family:var(--serif);font-size:15.5px;color:var(--dark);line-height:1.45;}
.p-note{font-size:12.5px;color:var(--mid);line-height:1.6;background:var(--warm);
  border-radius:8px;padding:8px 10px;}
.p-actions{margin-top:auto;display:flex;flex-direction:column;gap:6px;}
.p-link{display:block;text-align:center;font-size:13px;color:#fff;background:var(--accent);
  border-radius:9px;padding:10px;text-decoration:none;}
.p-link:hover{background:var(--accent-dk);}
.p-src{font-size:11.5px;color:var(--light);background:none;border:none;cursor:pointer;
  text-align:left;padding:0;text-decoration:underline;text-underline-offset:2px;}
.p-src:hover{color:var(--accent-dk);}

/* ================================================================
   [v3 추가] 글쓰기 — 위치 선택기
   ================================================================ */
.geo-search{display:flex;gap:6px;margin-bottom:6px;}
.geo-search input{flex:1;font-family:var(--sans);font-size:14px;padding:11px 12px;
  border:1px solid var(--line);border-radius:9px;background:var(--warm);color:var(--dark);}
.geo-search-btn{font-size:13px;color:#fff;background:var(--accent);border:none;
  border-radius:9px;padding:0 16px;cursor:pointer;flex-shrink:0;}
.geo-search-btn:hover{background:var(--accent-dk);}
.geo-results{display:flex;flex-direction:column;gap:4px;margin-bottom:6px;}
.geo-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;
  background:var(--warm);border:1px solid var(--line);border-radius:8px;padding:8px 11px;cursor:pointer;}
.geo-item:hover{border-color:var(--accent);}
.geo-item b{font-size:13px;color:var(--dark);}
.geo-item span{font-size:11.5px;color:var(--light);}
.geo-hint{font-size:12px;color:var(--light);padding:6px 2px;}
.write-map{height:220px;border-radius:9px;border:1px solid var(--line);background:var(--warm);
  margin-bottom:6px;overflow:hidden;}
.geo-status{font-size:12px;color:var(--mid);padding:2px 1px;}
.geo-clear{font-size:12px;color:var(--danger);background:none;border:1px dashed var(--danger-line);
  border-radius:8px;padding:7px 12px;cursor:pointer;margin-top:6px;}

/* ================================================================
   [v3 추가] 인사이트 편집기 (종류·구분·내용·링크·메모)
   ================================================================ */
.ins-help{font-size:11.5px;color:var(--light);margin:0 0 8px;line-height:1.6;}
.ins-item{border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;
  background:var(--warm);}
.ins-item[data-kind="product"]{border-color:var(--accent);}
.ins-item .irow{display:flex;gap:6px;margin-bottom:6px;}
.ins-item .irow:last-child{margin-bottom:0;}
.ins-item input,.ins-item select{font-family:var(--sans);font-size:13px;padding:9px 10px;
  border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);}
.ins-item input{flex:1;min-width:0;}
.ins-kind{flex-shrink:0;cursor:pointer;}
.ins-del{width:34px;flex-shrink:0;border:1px solid var(--line);background:var(--card);
  border-radius:8px;color:var(--light);cursor:pointer;font-size:13px;}
.ins-del:hover{color:var(--danger);border-color:var(--danger-line);}

/* ================================================================
   [v3 추가] 상세 모달 — 인사이트 보기 + 지도
   ================================================================ */
.detail-kmap{height:240px;border-radius:10px;border:1px solid var(--line);
  margin:-6px 0 14px;overflow:hidden;background:var(--warm);}
.ins-view-wrap{border:1px solid var(--line);border-radius:10px;padding:12px 14px;
  margin:0 0 12px;background:var(--warm);}
.ins-view-title{font-size:12px;color:var(--light);margin-bottom:8px;letter-spacing:.06em;}
.ins-view{padding:7px 0;border-bottom:1px dashed var(--line);}
.ins-view:last-child{border-bottom:none;}
.ins-view-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.ins-icon{font-size:13px;}
.ins-label-chip{font-size:10.5px;color:var(--accent-dk);background:var(--card);
  border:1px solid var(--line);border-radius:10px;padding:1px 8px;}
.ins-name{font-size:13.5px;color:var(--dark);}
.ins-link{font-size:13.5px;color:var(--accent-dk);font-weight:500;text-decoration:underline;
  text-underline-offset:2px;}
.ins-view.product .ins-name,.ins-view.product .ins-link{font-weight:600;}
.ins-note-view{font-size:12px;color:var(--mid);line-height:1.6;margin:4px 0 0 20px;}

/* 모바일 보정 */
@media(max-width:759px){
  .travel-map{height:320px;}
  .product-grid{grid-template-columns:1fr 1fr;}
  .ins-item .irow{flex-wrap:wrap;}
  .ins-item .irow .ins-kind{width:100%;}
}
@media(max-width:430px){
  .product-grid{grid-template-columns:1fr;}
}

/* ================================================================
   [v5 추가] 연대기 간단/상세 컨트롤
   ================================================================ */
.tl-detail-btn{font-size:12.5px;color:var(--mid);background:var(--card);
  border:1px solid var(--line);border-radius:20px;padding:8px 15px;cursor:pointer;
  min-height:38px;flex-shrink:0;transition:all .15s;}
.tl-detail-btn:hover{border-color:var(--accent);color:var(--accent-dk);}
.tl-detail-btn.open{background:var(--accent);border-color:var(--accent);color:#fff;}
.tl-detail{animation:tlSlide .18s ease-out;}
@keyframes tlSlide{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.control-bar.tl-sub{border-top:1px dashed var(--line);}
@media(max-width:759px){
  .tl-detail-btn{padding:8px 12px;}
}

/* ================================================================
   [v6 추가] 인사이트 편집기 — 간단/상세 2단
   ================================================================ */
.ins-toggle{flex-shrink:0;font-size:11.5px;color:var(--accent-dk);background:var(--card);
  border:1px solid var(--line);border-radius:8px;padding:0 10px;cursor:pointer;white-space:nowrap;}
.ins-toggle:hover{border-color:var(--accent);}
.ins-item.expanded{border-color:var(--accent);}
.ins-detail{border-top:1px dashed var(--line);margin-top:8px;padding-top:8px;}
.ins-photo{display:flex;align-items:center;gap:8px;margin-top:2px;}
.ins-thumb{width:52px;height:52px;border-radius:8px;background-size:cover;background-position:center;
  border:1px solid var(--line);flex-shrink:0;}
.ins-photo-btn,.ins-photo-del{font-size:12px;padding:8px 12px;border-radius:8px;cursor:pointer;
  background:var(--card);border:1px solid var(--line);color:var(--mid);}
.ins-photo-btn:hover{border-color:var(--accent);color:var(--accent-dk);}
.ins-photo-del{color:var(--danger);}
.ins-photo-btn:disabled{opacity:.6;cursor:wait;}

/* ================================================================
   [v6 추가] 상세 모달 — 상품 미니 카드
   ================================================================ */
.ins-prod-card{display:flex;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:10px;padding:11px;margin:7px 0;}
.ipc-thumb{width:76px;height:76px;border-radius:8px;background-size:cover;background-position:center;
  flex-shrink:0;border:1px solid var(--line);}
.ipc-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;}
.ipc-head{font-size:13.5px;color:var(--dark);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.ipc-head b{font-weight:600;}
.ipc-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.ipc-price{font-size:13px;font-weight:700;color:var(--accent-dk);}
.ipc-seller{font-size:11.5px;color:var(--light);background:var(--warm);
  border:1px solid var(--line);border-radius:9px;padding:1px 8px;}
.ipc-link{align-self:flex-start;font-size:12.5px;color:#fff;background:var(--accent);
  border-radius:8px;padding:7px 12px;text-decoration:none;margin-top:2px;}
.ipc-link:hover{background:var(--accent-dk);}

/* ================================================================
   [v6 추가] 상품 탭 카드 — 쇼핑몰형 (썸네일·가격·판매처·클릭수)
   ================================================================ */
.product-card{padding:0;overflow:hidden;}
.product-card .p-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:9px;flex:1;}
.p-thumb{height:150px;background-size:cover;background-position:center;
  border-bottom:1px solid var(--line);}
.p-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-height:0;}
.p-meta:empty{display:none;}
.p-price{font-size:15px;font-weight:700;color:var(--accent-dk);}
.p-seller{font-size:11.5px;color:var(--light);background:var(--warm);
  border:1px solid var(--line);border-radius:10px;padding:2px 9px;}
.p-clicks{display:block;font-size:10.5px;font-style:normal;opacity:.85;margin-top:2px;}
@media(max-width:759px){
  .p-thumb{height:120px;}
}

/* ================================================================
   [v7 추가] 사진첩 — 크기 5단 툴바 + 필터
   ================================================================ */
.album-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:10px 14px;box-shadow:var(--shadow);}
.al-size{display:flex;align-items:center;gap:4px;}
.al-size-label{font-size:12px;color:var(--light);margin-right:4px;}
.al-size button{width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  background:none;border:1px solid transparent;border-radius:8px;cursor:pointer;padding:0;}
.al-size button i{display:block;background:var(--light);border-radius:2.5px;transition:background .15s;}
.al-size button:hover i{background:var(--accent);}
.al-size button.active{border-color:var(--accent);background:var(--warm);}
.al-size button.active i{background:var(--accent-dk);}
.al-filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.al-filters select{font-family:var(--sans);font-size:12.5px;color:var(--mid);
  background:var(--warm);border:1px solid var(--line);border-radius:9px;
  padding:8px 10px;cursor:pointer;max-width:150px;min-height:38px;}
.al-filters select:focus{outline:none;border-color:var(--accent);}
.al-reset{font-size:12px;color:var(--light);background:none;border:1px dashed var(--line);
  border-radius:9px;padding:8px 12px;cursor:pointer;min-height:38px;}
.al-reset:hover{color:var(--accent-dk);border-color:var(--accent);}
.al-count{font-size:12px;color:var(--light);margin-left:auto;}
/* 타일 인물 뱃지 */
.a-tile{position:relative;}
.a-people{position:absolute;top:6px;left:6px;right:6px;font-size:10px;color:#fff;
  background:rgba(0,0,0,.38);border-radius:7px;padding:2px 7px;width:fit-content;max-width:calc(100% - 12px);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;backdrop-filter:blur(2px);}
/* 글쓰기 — 인물 칩 */
.label-hint{font-weight:400;font-size:11px;color:var(--light);}
.people-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px;}
.pp-chip{font-size:12px;color:var(--mid);background:var(--warm);border:1px solid var(--line);
  border-radius:16px;padding:6px 12px;cursor:pointer;transition:all .12s;}
.pp-chip:hover{border-color:var(--accent);}
.pp-chip.on{background:var(--accent);border-color:var(--accent);color:#fff;}
@media(max-width:759px){
  .album-toolbar{gap:9px;padding:9px 11px;}
  .al-filters select{max-width:110px;font-size:12px;}
  .al-count{display:none;}
}
.detail-people{font-size:12.5px;color:var(--mid);background:var(--warm);
  border:1px solid var(--line);border-radius:9px;padding:8px 12px;margin:0 0 12px;width:fit-content;}

/* ================================================================
   [v8 추가] 상품 카드 정보 확장 · 크기 5단 대응
   ================================================================ */
.p-search{font-family:var(--sans);font-size:12.5px;color:var(--mid);background:var(--warm);
  border:1px solid var(--line);border-radius:9px;padding:8px 11px;min-height:38px;width:150px;}
.p-search:focus{outline:none;border-color:var(--accent);}
.p-thumb{position:relative;}
.p-status{font-size:10.5px;border-radius:9px;padding:2px 9px;white-space:nowrap;
  border:1px solid var(--line);background:var(--card);color:var(--mid);}
.p-thumb .p-status{position:absolute;top:8px;left:8px;backdrop-filter:blur(3px);}
.p-status.owned{color:#fff;background:var(--cat-garden);border-color:transparent;}
.p-status.wish{color:#fff;background:var(--cat-travel);border-color:transparent;}
.p-status.repeat{color:#fff;background:var(--accent-dk);border-color:transparent;}
.p-statusline{padding:12px 16px 0;}
.p-price.empty{font-size:12px;font-weight:400;color:var(--light);font-style:italic;}
.p-foot{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--light);}
.p-date{letter-spacing:.02em;}
.p-clicks{margin-left:auto;font-style:normal;}
.p-edit{font-size:12.5px;color:var(--accent-dk);background:var(--warm);
  border:1px solid var(--line);border-radius:9px;padding:9px;cursor:pointer;width:100%;}
.p-edit:hover{border-color:var(--accent);background:var(--card);}
.p-src{font-size:11px;}
/* 크기 1~2단: 좁은 카드에서는 부가 정보를 접어 가독성 유지 */
.product-grid[data-size="1"] .p-note,.product-grid[data-size="2"] .p-note,
.product-grid[data-size="1"] .p-foot,
.product-grid[data-size="1"] .p-src{display:none;}
.product-grid[data-size="1"] .p-thumb{height:92px;}
.product-grid[data-size="2"] .p-thumb{height:110px;}
.product-grid[data-size="3"] .p-thumb{height:150px;}
.product-grid[data-size="4"] .p-thumb{height:190px;}
.product-grid[data-size="5"] .p-thumb{height:240px;}
.product-grid[data-size="1"] .p-body{padding:10px 11px 12px;gap:6px;}
.product-grid[data-size="1"] .p-name{font-size:13px;}
.product-grid[data-size="2"] .p-body{padding:12px 13px 14px;gap:7px;}
.product-grid[data-size="5"] .p-name{font-size:17px;}
/* 인사이트 편집기 안내문 */
.ins-tip{font-size:11.5px;color:var(--light);line-height:1.6;margin:8px 0 0;
  background:var(--warm);border-radius:7px;padding:7px 10px;}
#pfSource{margin:4px 0 12px;}
@media(max-width:759px){
  .p-search{width:130px;}
}


/* ================================================================
   [v9] 인사이트 편집기 재설계 — 종류별 필드, 항상 표시
   ================================================================ */
.ins-item{border:1px solid var(--line);border-radius:10px;padding:11px;margin-bottom:9px;background:var(--warm);}
.ins-item.kind-product{border-color:var(--accent);}
.ins-row-head{display:flex;gap:6px;align-items:center;margin-bottom:8px;}
.ins-row-head .ins-kind{flex-shrink:0;font-family:var(--sans);font-size:13px;padding:9px 8px;
  border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);cursor:pointer;}
.ins-row-head .ins-text{flex:1;min-width:0;font-family:var(--sans);font-size:14px;padding:10px 11px;
  border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);}
.ins-row-head .ins-del{width:34px;height:38px;flex-shrink:0;border:1px solid var(--line);
  background:var(--card);border-radius:8px;color:var(--light);cursor:pointer;font-size:13px;}
.ins-row-head .ins-del:hover{color:var(--danger);border-color:var(--danger-line);}
.ins-body{display:flex;flex-direction:column;gap:8px;}
.ins-body .ins-note{font-family:var(--sans);font-size:13.5px;padding:10px 11px;resize:vertical;
  border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);line-height:1.5;}
.ins-prod-only{display:flex;flex-direction:column;gap:8px;}
.ins-prod-only .ins-url{font-family:var(--sans);font-size:13px;padding:10px 11px;
  border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--dark);}
/* 상품 정보 모달 — 필수/참고 라벨 */
.req{color:var(--danger);font-weight:700;}
.opt{font-size:11px;font-weight:400;color:var(--light);background:var(--warm);
  border:1px solid var(--line);border-radius:8px;padding:1px 7px;margin-left:2px;}
.prod-extra-head{margin-top:6px;padding-top:10px;border-top:1px dashed var(--line);}
.prod-extra-head label{color:var(--light);}
