/* 방탈로그 — 미래적 HUD 디자인 시스템 (v2 비주얼 언어 계승) */
/* 셀프호스트 폰트 — 아카이브(팬텀) 전용. PNG 내보내기가 dataURL 로 임베드할 수 있게 동일 출처로 서빙 */
@font-face{font-family:'Black Han Sans';src:url('/fonts/BlackHanSans.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'Bebas Neue';src:url('/fonts/BebasNeue.ttf') format('truetype');font-weight:400;font-display:swap}
:root{
  --bg:#08090B;--bg2:#0C0E11;--surface:#101317;--surface2:#161A1F;--surface3:#1D232B;
  --border:#252B33;--hairline:rgba(146,164,184,.14);--grid:rgba(146,164,184,.08);
  --text:#E7ECF2;--muted:#9BA8B6;--faint:#7C8A99;
  --accent:#3FE0D0;--accentDim:#1E5F58;--apricot:#E9A18B;--gold:#FFCF5C;--goldDeep:#C99A2E;--dhot:#FF8A3C;
  --life-star-bright:#FFCF5C;--life-star:var(--life-star-bright); /* 달력의 밝은 별과 목록의 모드별 별 색을 분리 */
  --p5:#E4032B;--p5deep:#9C0620;--ink:#08090B;--paper:#F3EFE6;
  --success:#4CBE7E;--danger:#FF6B5E;--warning:#E0A12E;--info:#7FB2FF;
  --fb:"Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo",sans-serif;
  --fe:"Archivo Narrow","Helvetica Neue",sans-serif;
  --fn:"IBM Plex Mono","SF Mono",ui-monospace,monospace;
  --shadow:0 30px 70px rgba(0,0,0,.6);
  /* 재질 토큰 (2026-09-28 리디자인 확장) — 유리 = 누르는 것, 렌즈 = 지금 선택된 것, 무광 = 읽는 것.
     루트에서 계산되므로 html[data-theme=light] 의 표면색 교체를 그대로 따른다. 곡률 6단계는 안쪽 = 바깥 − 여백 규칙으로 쓴다 */
  --glass-bg:linear-gradient(180deg,color-mix(in srgb,var(--surface3) 70%,transparent),color-mix(in srgb,var(--surface2) 82%,transparent));
  --glass-line:color-mix(in srgb,var(--text) 10%,transparent);--glass-line-hi:color-mix(in srgb,var(--text) 20%,transparent);
  --glass-hi:inset 0 1px 0 rgba(255,255,255,.05),inset 0 -1px 0 rgba(0,0,0,.14);
  --lens:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,0) 55%),linear-gradient(180deg,color-mix(in srgb,var(--p5) 92%,#fff),color-mix(in srgb,var(--p5) 94%,#000));
  --lens-sh:inset 0 1px 0 rgba(255,255,255,.2),0 2px 6px -2px color-mix(in srgb,var(--p5) 32%,transparent);
  /* 스위치 켜짐 — 맑은 청록 렌즈 트랙 + 흰 구슬 손잡이. 어두운 회청록(--accentDim) 트랙에 청록 손잡이를 얹으면 탁해 보여서
     트랙은 --accent 를 살짝만 눌러 쓰고 손잡이는 흰색으로 대비를 준다(라이트는 아래 라이트 토큰에서 한 톤 밝게) */
  --sw-lens:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,0) 60%),linear-gradient(180deg,color-mix(in srgb,var(--accent) 86%,#000),color-mix(in srgb,var(--accent) 74%,#000));
  --sw-lens-sh:inset 0 1px 0 rgba(255,255,255,.2);
  --sw-knob:linear-gradient(180deg,#fff,color-mix(in srgb,var(--accent) 7%,#F1F4F6));--sw-knob-sh:0 1px 3px rgba(0,0,0,.3);
  --matte:var(--surface);--matte-line:var(--border);--matte-tint:color-mix(in srgb,var(--text) 5%,var(--surface));
  --tag-bg:color-mix(in srgb,var(--text) 7%,transparent);
  --r-tag:6px;--r-sm:8px;--r-field:12px;--r-card:16px;--r-island:22px;--r-pill:999px;
  --ease-out:cubic-bezier(.25,1,.5,1);--ease-press:cubic-bezier(.3,.7,.4,1);
  --focus:color-mix(in srgb,var(--text) 72%,transparent);
}
*{box-sizing:border-box;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
html{color-scheme:dark}
html,body{margin:0;height:100%}
body{
  background:#050608;color:var(--text);font-family:var(--fb);
  background-image:radial-gradient(1100px 640px at 16% -6%,#0d1014,#050608 60%);
  min-height:100%;overflow-x:hidden;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea{font-family:inherit}
::selection{background:rgba(63,224,208,.3)}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--surface3);border-radius:8px}
::-webkit-scrollbar-track{background:transparent}

/* ===== 공용 세그먼트 (2026-09-28 리디자인 마무리) — 둘~다섯 중 하나를 고르는 묶음.
   유리 트랙 + 선택된 칸만 붉은 렌즈. 선택 표시는 .on·aria-pressed·aria-checked·aria-selected 어느 쪽이든 받는다.
   칸 아래 보조 줄은 <small>. 결과처럼 의미 색이 필요한 칸은 data-tone(success·danger) 으로 렌즈 색만 바꾼다 ===== */
.segctl{display:flex;gap:2px;padding:4px;min-width:0;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.segctl>:is(button,label,[role=radio],[role=tab]){flex:1 1 0;min-width:0;min-height:38px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 10px;border:0;border-radius:999px;background:transparent;box-shadow:none;color:var(--muted);font-size:13px;font-weight:800;letter-spacing:-.01em;line-height:1.2;text-align:center;white-space:nowrap;transition:color .18s var(--ease-out),background .18s var(--ease-out),scale .18s var(--ease-press)}
.segctl>:is(button,label,[role=radio],[role=tab]) small{font-size:11px;font-weight:600;opacity:.78;letter-spacing:0}
@media(hover:hover){.segctl>:is(button,label,[role=radio],[role=tab]):not(.on):not([aria-pressed=true]):not([aria-checked=true]):not([aria-selected=true]):hover{color:var(--text)}}
.segctl>:is(button,label,[role=radio],[role=tab]):active{scale:.97}
.segctl>:is(.on,[aria-pressed=true],[aria-checked=true],[aria-selected=true]){color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}
.segctl>:is(.on,[aria-pressed=true],[aria-checked=true],[aria-selected=true])[data-tone=success]{background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 60%),var(--success);box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
.segctl>:is(.on,[aria-pressed=true],[aria-checked=true],[aria-selected=true])[data-tone=danger]{background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 60%),var(--danger);box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
.segctl>:is(.on,[aria-pressed=true],[aria-checked=true],[aria-selected=true])[data-tone=neutral]{color:var(--text);background:linear-gradient(180deg,color-mix(in srgb,#fff 11%,var(--surface3)),color-mix(in srgb,#fff 5%,var(--surface3)));box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 4px rgba(0,0,0,.22)}
html[data-theme=light] .segctl>:is(.on,[aria-pressed=true],[aria-checked=true],[aria-selected=true])[data-tone=neutral]{background:#fff;box-shadow:0 1px 4px rgba(30,45,60,.16)}
.segctl>:is(button,label,[role=radio],[role=tab]):disabled{opacity:.4}
.segctl>:is(button,label,[role=radio],[role=tab]):focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.segctl.wrap{flex-wrap:wrap;border-radius:18px}.segctl.wrap>*{flex:1 1 calc(33% - 2px)}
.segctl[hidden],.segctl>[hidden]{display:none}
.segctl.sm{padding:3px}.segctl.sm>:is(button,label,[role=radio],[role=tab]){min-height:30px;padding:2px 12px;font-size:12px}
/* ===== 무광 배너 — 안내·권유 한 줄. 좌측 색띠·사각 틀·발광 없이 둥근 무광 칸 + 아이콘 동그라미 ===== */
.mbanner{display:flex;align-items:center;gap:12px;min-width:0;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--text);text-align:left}
.mbanner>.mb-ic{flex:none;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--tag-bg);color:var(--muted)}
.mbanner>.mb-ic svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9}
.mbanner>.mb-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.mbanner>.mb-tx b{font-size:13.5px;font-weight:800;letter-spacing:-.01em;word-break:keep-all}
.mbanner>.mb-tx small{font-size:12px;color:var(--muted);line-height:1.45;word-break:keep-all}
.mbanner.gold>.mb-ic{background:color-mix(in srgb,var(--gold) 16%,transparent);color:var(--gold)}
.mbanner.info>.mb-ic{background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}
.mbanner.warn>.mb-ic{background:color-mix(in srgb,var(--warning) 16%,transparent);color:var(--warning)}
button.mbanner{width:100%;font:inherit;cursor:pointer}button.mbanner:active{scale:.99}
/* 스크린리더 전용 상태·경고 채널 — 시각 토스트와 분리해 중복 낭독을 막는다. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* ===== APP SHELL — phone frame on desktop, fullbleed on mobile ===== */
#app{position:relative;z-index:1}
.frame{
  width:min(440px,100vw);height:100vh;height:100dvh;height:var(--app-h,100dvh);margin:0 auto;position:relative;
  background:var(--bg);display:flex;flex-direction:column-reverse;overflow:hidden;
  box-shadow:0 0 0 1px #14181d, 0 0 80px rgba(0,0,0,.5);
  padding-top:env(safe-area-inset-top); /* iOS standalone(black-translucent) — 상태바 아래로 뷰포트가 확장되므로 그만큼 내림. 브라우저·APK·데스크탑에선 0 */
}
/* 위로 밀어 숨기면 iOS 상단 안전 영역이 이동량을 상쇄한다. 클리핑으로 그림자·터치 영역까지 숨기고 접근성 포커스는 유지한다. */
.skip-link{position:absolute;z-index:90;top:max(8px,env(safe-area-inset-top));left:12px;padding:10px 13px;border:2px solid var(--focus);border-radius:8px;background:var(--surface);color:var(--text);font-size:13px;font-weight:850;box-shadow:var(--shadow);clip-path:inset(50%);pointer-events:none}
.skip-link:focus{clip-path:none;pointer-events:auto;outline:2px solid var(--focus);outline-offset:2px}
@media(min-width:480px){
  body{padding:24px 0;display:flex;align-items:flex-start;justify-content:center}
  .frame{height:calc(100vh - 48px);height:calc(100dvh - 48px);border-radius:30px;border:1px solid #1b2026}
}
/* iOS 홈 화면 웹앱 — standalone 은 dvh 는 물론 %(ICB) 높이까지 상태바만큼 짧게 계산하는
   WebKit 버그가 있어 탭바 아래에 빈 띠가 남는다 → app.js 가 실측 innerHeight 를 --app-h 로
   주입하고(키보드는 innerHeight 불변), 여기서 그 값을 소비한다. 미주입 시 100% 폴백.
   %-높이는 부모 체인 전체(html→body→#app→.frame)에 명시 높이가 있어야 한다 — #app 이 빠지면
   .frame 높이가 auto 로 붕괴해 프레임이 내용만큼 늘어나고, 탭바가 문서 맨 끝으로 밀리며
   내부 .scroll 대신 body 가 스크롤된다(홈 화면 웹앱에서 메뉴·스크롤 고장의 원인).
   overflow·overscroll 잠금 — 문서 자체의 고무줄 바운스를 막아 내부 .scroll 만 스크롤(앱 감). */
@media(display-mode:standalone){
  html,body{overflow:hidden;overscroll-behavior:none;height:var(--app-h,100%)}
  #app,.frame{height:100%} /* body 하위는 %-상속 — 480px+ 목업의 body 상하 패딩(48px)이 자연 차감됨 */
}
/* Capacitor iOS 앱 — 위 standalone 블록과 동일 처치. 미디어쿼리가 웹뷰에서 false 라 app.js 가 붙이는 html.ios-app 으로 발동.
   %-체인(html→body→#app→.frame)은 한 단계도 빠지면 안 된다(위 주석 참고). */
html.ios-app,html.ios-app body{overflow:hidden;overscroll-behavior:none;height:var(--app-h,100%)}
html.ios-app #app,html.ios-app .frame{height:100%}
/* 테스트 런타임 표식 — 앱 조작면과 분리된 읽기 전용 HUD. */
.runtime-badge{position:fixed;left:0;top:50%;z-index:76;display:flex;align-items:center;gap:5px;
  padding:10px 4px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);
  color:var(--accent);background:linear-gradient(180deg,rgba(14,22,26,.94),rgba(8,11,14,.9));
  border:1px solid color-mix(in srgb,var(--accent) 42%,var(--border));border-left:2px solid var(--accent);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%);
  font-family:var(--fn);font-size:8px;font-weight:700;letter-spacing:.12em;line-height:1;
  box-shadow:0 0 18px rgba(63,224,208,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  pointer-events:none;user-select:none}
.runtime-badge::before{content:"";width:3px;height:3px;border-radius:50%;background:var(--success);box-shadow:0 0 8px var(--success)}
.runtime-badge i{font-style:normal;color:var(--faint)}
.runtime-badge b{color:var(--gold);font-weight:800}
@media(min-width:480px) and (max-width:999px){
  .runtime-badge{left:calc(50% - 226px);transform:translate(-100%,-50%)}
}
/* scanline grid overlay */
.frame::before{content:none} /* 격자 줄무늬 제거(1차 확장안) */
/* 프로필 화면에선 배경 스캔라인 제거 — 여백이 많아 선이 도드라져 거슬린다는 피드백 [fb:1994ac1c] */
.frame:has(.view-me)::before{display:none}
.view{flex:1;position:relative;z-index:1;display:flex;flex-direction:column;min-height:0}
.scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}
.scroll::-webkit-scrollbar{width:0}
/* 모임 일정 — 활동 칩(방탈출/일반)·자유 일시 입력 */
.evt-acts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.evt-acts:empty{display:none}
.evt-act{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:9px;background:color-mix(in srgb,var(--accent) 10%,transparent);font-size:12.5px;font-weight:600}
.evt-act i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--faint);letter-spacing:.02em}
.evt-act.escape i{color:var(--accent)}
.evt-act button{display:grid;place-items:center;width:16px;height:16px;padding:0;border:0;background:none;color:var(--faint)}
.evt-act button svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.evt-etc-row{display:flex;gap:6px;margin-top:6px}
.evt-etc-row[hidden]{display:none!important}
.evt-etc-row .input{flex:1;min-width:0}
.evt-when{display:flex;align-items:center;gap:6px}
.evt-when + .evt-when{margin-top:6px}
.evt-when .input{flex:1;min-width:0}
.evt-date-mode{margin-bottom:8px}
.evt-date-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin-bottom:7px}.evt-date-fields[hidden],.evt-end-date[hidden]{display:none}.evt-date-fields:has(.evt-end-date:not([hidden])){grid-template-columns:repeat(2,minmax(0,1fr))}.evt-date-fields>label{display:flex;min-width:0;flex-direction:column;gap:5px}.evt-date-fields>label>span{color:var(--muted);font-size:10px;font-weight:800}.evt-date-fields .input{width:100%;min-width:0}
.evt-dash{color:var(--faint)}
.evt-tbd{flex:none;min-height:40px;color:var(--muted)}
.evt-tbd.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
.evt-tbd:disabled{opacity:.4}
.evd-acts{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 2px}
/* 일정 타임라인 빌더 — 세로 레일·블록·간격·삽입점 (A안+삽입점) */
.evtl{display:grid;grid-template-columns:minmax(0,1fr);min-width:0}
.evtl-row{display:grid;grid-template-columns:48px minmax(0,1fr);min-width:0}
.evtl-time{padding:14px 8px 0 0;text-align:right;font-size:11.5px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;line-height:1.35}
.evtl-time small{display:block;color:var(--faint);font-weight:600}
.evtl-time.off{color:var(--faint)}
.evtl-main{position:relative;min-width:0;padding-left:15px}
.evtl-main::before{content:'';position:absolute;left:3px;top:0;bottom:-4px;width:2px;background:color-mix(in srgb,var(--accent) 22%,transparent)}
.evtl-row:first-child .evtl-main::before{top:18px}
.evtl-row:last-of-type .evtl-main::before{height:22px}
.evtl-dot{position:absolute;left:-1px;top:17px;width:10px;height:10px;border-radius:50%;background:var(--accent)}
.evtl-dot.etc{background:var(--gold,#f5c542)}
.evtl-card{min-width:0;background:color-mix(in srgb,var(--faint) 8%,transparent);border:1px solid color-mix(in srgb,var(--faint) 18%,transparent);border-radius:12px;padding:9px 11px;margin:5px 0;display:grid;gap:6px}
.evtl-top{display:flex;min-width:0;align-items:center;gap:7px}
.evtl-type{flex:none;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:6px;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.evtl-type.etc{color:var(--gold,#f5c542);background:color-mix(in srgb,var(--gold,#f5c542) 12%,transparent)}
.evtl-top b{flex:1;font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evtl-btns{display:flex;gap:1px}
.evtl-btns button{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;border:0;background:none;color:var(--faint);font-size:14px;padding:0}
.evtl-btns button:disabled{opacity:.25}
.evtl-btns button svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.evtl-meta{display:flex;gap:6px}
.evtl-chip{border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);background:none;color:var(--accent);border-radius:8px;padding:4px 9px;font-size:11.5px;font-weight:700;font-family:inherit}
.evtl-dayhead{display:flex;align-items:baseline;gap:8px;margin:10px 0 1px;padding:0 4px 0 63px}.evtl-dayhead:first-child{margin-top:2px}.evtl-dayhead>span{flex:none;padding:3px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 11%,var(--surface2));color:var(--accent);font-family:var(--fn);font-size:9px;font-weight:850}.evtl-dayhead>b{min-width:0;color:var(--text);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.evtl-dayhead.invalid>span{background:color-mix(in srgb,var(--danger) 10%,var(--surface2));color:var(--danger)}
.evtl-chip.day{color:var(--text);border-color:var(--border);background:var(--surface2)}.evtl-chip.day.invalid{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 55%,var(--border))}
.evtl-daterow{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;padding:8px 9px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface2)}.evtl-daterow>span{color:var(--muted);font-size:10px;font-weight:750}.evtl-daterow .input{height:38px;min-width:0;padding:7px 9px;font-size:12px}
.evtl-chip.anchored{color:var(--gold,#f5c542);border-color:color-mix(in srgb,var(--gold,#f5c542) 55%,transparent)}
.evtl-card.sel{border-color:var(--accent)}
.evtl-card.invalid{border-color:color-mix(in srgb,var(--danger) 55%,var(--border))}
.evtl-time.warn,.evtl-warn,.plan-apply-day .evtl-warn{color:var(--danger)}
.evtl-warn{font-size:11px;font-weight:700;align-self:center}
.evtl-atrow{display:flex;gap:6px;align-items:center}
.evtl-atrow .input{flex:1;min-width:0;padding:8px 10px}
.evtl-gapfix{font-size:11px;font-weight:700;color:var(--gold,#f5c542)}
/* 활동 소요시간 — 타임라인을 유지한 채 슬라이더·직접 입력 팝업으로 조정 */
.evt-duration-layer[hidden]{display:none}
.evt-duration-layer{position:absolute;inset:0;z-index:5;display:grid;place-items:center;padding:18px;background:color-mix(in srgb,var(--bg) 76%,transparent);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.evt-duration-dialog{width:min(100%,350px);overflow:hidden;border:1px solid var(--border);border-radius:17px;background:var(--surface);box-shadow:0 22px 58px rgba(0,0,0,.34);outline:none}
.evt-duration-head{min-height:68px;display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:center;gap:10px;padding:11px 13px 10px 17px;border-bottom:1px solid var(--hairline)}
.evt-duration-head>span{min-width:0;display:flex;flex-direction:column;gap:3px}.evt-duration-head small{color:var(--accent);font-family:var(--fe);font-size:8px;font-weight:900;letter-spacing:.13em}.evt-duration-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}
.evt-duration-body{padding:20px 18px 18px}.evt-duration-body output{display:block;margin-bottom:20px;color:var(--text);font-family:var(--fn);font-size:30px;font-weight:900;line-height:1;text-align:center;font-variant-numeric:tabular-nums}
.evt-duration-body input[type=range]{width:100%;height:28px;margin:0;accent-color:var(--accent);cursor:pointer}
.evt-duration-scale{display:flex;justify-content:space-between;margin-top:-2px;color:var(--faint);font-size:9px;font-variant-numeric:tabular-nums}
.evt-duration-input{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;margin-top:20px}.evt-duration-input>span:first-child{font-size:12px;font-weight:800}.evt-duration-input>span:last-child{display:grid;grid-template-columns:minmax(0,1fr) 22px;align-items:center}.evt-duration-input .input{height:44px;padding-right:8px;text-align:right;font-family:var(--fn);font-size:17px;font-weight:850;font-variant-numeric:tabular-nums}.evt-duration-input i{color:var(--muted);font-size:11px;font-style:normal;text-align:right}
.evt-duration-hint,.evt-duration-error{margin:8px 0 0;font-size:9.5px;line-height:1.45}.evt-duration-hint{color:var(--faint)}.evt-duration-error{color:var(--danger)}.evt-duration-error:not([hidden])+.evt-duration-actions{margin-top:13px}
.evt-duration-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:8px;margin-top:18px}.evt-duration-actions .btn{width:100%;height:44px}
/* 모임 일정 불러오기 — 작성 폼 위 독립 선택 화면. 기록은 월→날짜→항목 순서로 좁힌다. [fb:4457b511] */
.group-event-sheet{position:relative;overflow:hidden}.group-event-sheet .sh-body{min-width:0;overflow-x:clip}.group-event-sheet .grp-field{min-width:0}
.evt-import-layer[hidden]{display:none}
.evt-import-layer{position:absolute;inset:0;z-index:4;display:flex;min-height:0;flex-direction:column;border-radius:inherit;background:var(--bg2)}
.evt-import-layer svg{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.evt-import-head{min-height:64px;display:grid;grid-template-columns:38px minmax(0,1fr) 38px;align-items:center;gap:8px;padding:10px 16px 8px;border-bottom:1px solid var(--hairline)}
.evt-import-head>span{width:38px}.evt-import-head>div{min-width:0;display:flex;flex-direction:column;gap:2px;text-align:center}.evt-import-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.evt-import-head small{color:var(--faint);font-size:10.5px;line-height:1.35;word-break:keep-all}
.evt-import-body{flex:1;min-height:0;overflow-y:auto;padding:14px 16px calc(18px + env(safe-area-inset-bottom));overscroll-behavior-y:contain}
.evt-import-sources{display:grid;gap:10px}.evt-import-sources>button{min-width:0;display:grid;grid-template-columns:44px minmax(0,1fr) 18px;align-items:center;gap:11px;padding:14px 12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text);font-family:inherit;text-align:left}.evt-import-sources>button>i{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:color-mix(in srgb,var(--accent) 10%,var(--surface2));color:var(--accent);font-style:normal}.evt-import-sources>button>i svg{width:21px;height:21px}.evt-import-sources>button>span{min-width:0}.evt-import-sources b,.evt-import-sources small{display:block}.evt-import-sources b{font-size:14px}.evt-import-sources small{margin-top:4px;color:var(--muted);font-size:11px;line-height:1.45;word-break:keep-all}.evt-import-sources>button>svg{width:16px;color:var(--faint)}
.evt-import-month{display:grid;grid-template-columns:36px minmax(0,1fr) 36px;align-items:center;margin-bottom:10px}.evt-import-month>b{text-align:center;font-size:15px}.evt-import-month>button{width:36px;height:36px;display:grid;place-items:center;padding:0;border:1px solid var(--border);border-radius:10px;background:var(--surface2);color:var(--muted)}.evt-import-month>button:disabled{opacity:.25}.evt-import-month svg{width:16px;height:16px}
.evt-import-calendar{padding:10px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.evt-import-dow,.evt-import-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.evt-import-dow{margin-bottom:5px}.evt-import-dow>span{padding:3px 0;color:var(--faint);font-size:10px;font-weight:750;text-align:center}.evt-import-dow .sun,.evt-import-days .sun{color:var(--danger)}.evt-import-dow .sat,.evt-import-days .sat{color:#74A8E8}.evt-import-days>button,.evt-import-days>.pad{min-width:0;min-height:42px}.evt-import-days>button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--faint);font-family:inherit}.evt-import-days>button b{font-size:12px}.evt-import-days>button small{font-size:8px}.evt-import-days>button.has{border-color:var(--border);background:var(--surface2);color:var(--text)}.evt-import-days>button.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface2));color:var(--accent)}.evt-import-days>button:disabled{opacity:.42}
.evt-import-picked{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:14px 2px 8px}.evt-import-picked b{font-size:13px}.evt-import-picked span{color:var(--faint);font-size:10px;text-align:right}.evt-import-guide{margin:12px 0 0;color:var(--faint);font-size:11px;text-align:center}
.evt-import-rows{display:grid;gap:7px}.evt-import-row{min-width:0;width:100%;display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:9px;padding:10px 11px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:var(--text);font-family:inherit;text-align:left}.evt-import-row>span:last-child{min-width:0}.evt-import-row b,.evt-import-row small{display:block;overflow:hidden;text-overflow:ellipsis}.evt-import-row b{font-size:12.5px;white-space:nowrap}.evt-import-row small{margin-top:3px;color:var(--faint);font-size:10.5px;line-height:1.35;white-space:normal;overflow-wrap:anywhere}.evt-import-row .ck{width:21px;height:21px;display:grid;place-items:center;border:1.5px solid var(--faint);border-radius:6px;color:#08110f;font-size:11px;font-weight:900}.evt-import-row.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.evt-import-row.on .ck{border-color:var(--accent);background:var(--accent)}.evt-import-row.plan{grid-template-columns:31px minmax(0,1fr) 17px;padding:12px}.evt-import-row.plan>i{width:31px;height:31px;display:grid;place-items:center;border-radius:9px;background:var(--surface2);color:var(--accent);font-style:normal}.evt-import-row.plan>i svg,.evt-import-row.plan>svg{width:15px;height:15px}.evt-import-row.plan>svg{color:var(--faint)}
.evt-import-go{position:sticky;bottom:0;width:100%;margin-top:12px}.evt-import-empty{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:20px;text-align:center;border:1px dashed var(--border);border-radius:14px}.evt-import-empty b{font-size:13px}.evt-import-empty span{color:var(--faint);font-size:10.5px;line-height:1.45;word-break:keep-all}
@media(max-width:359px){.evt-date-fields:has(.evt-end-date:not([hidden])){grid-template-columns:minmax(0,1fr)}.evtl-meta{flex-wrap:wrap}.evtl-daterow{grid-template-columns:minmax(0,1fr)}.evtl-dayhead{padding-left:55px}.evt-duration-layer{padding:12px}.evt-duration-body{padding-left:15px;padding-right:15px}.evt-import-body{padding-left:12px;padding-right:12px}.evt-import-calendar{padding:7px}.evt-import-dow,.evt-import-days{gap:2px}.evt-import-days>button,.evt-import-days>.pad{min-height:38px}.evt-import-head small{font-size:9.5px}}
.evtl-gap{display:flex;min-width:0;align-items:center;gap:8px;padding:2px 0 2px 63px}
.evtl-gap button{border:1px dashed color-mix(in srgb,var(--faint) 45%,transparent);background:none;color:var(--faint);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:700;font-family:inherit}
.evtl-gap button.hot{color:var(--gold,#f5c542);border-color:color-mix(in srgb,var(--gold,#f5c542) 55%,transparent)}
.evtl-gap .evtl-ins:hover{color:var(--accent);border-color:var(--accent)}
.evtl-sum{min-width:0;padding:8px 0 0 63px;color:var(--faint);font-size:12px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.evtl-add{display:flex;gap:8px;margin-top:6px}
.evtl-add button{flex:1;min-width:0;min-height:40px;padding:0 8px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:13px;font-weight:700;font-family:inherit;white-space:nowrap;transition:color .14s,scale .2s var(--ease-press)}.evtl-add button:active{scale:.97}
.evtl-add button.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
/* 일정 상세 — 활동 타임라인 행 */
.evd-tl{display:grid;min-width:0;gap:5px;margin:12px 0 2px}
.evd-tlday{display:grid;min-width:0;gap:7px;padding:10px 11px 9px;border:1px solid var(--hairline);border-radius:12px;background:color-mix(in srgb,var(--surface2) 76%,transparent)}.evd-tlday+.evd-tlday{margin-top:5px}
.evd-tlday>h3{display:flex;min-width:0;align-items:center;gap:8px;margin:0;padding-bottom:7px;border-bottom:1px solid var(--hairline);color:var(--text)}.evd-tlday>h3::before{content:'';width:3px;height:13px;flex:none;border-radius:2px;background:var(--accent)}.evd-tlday>h3>span{flex:none;padding:3px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--surface2));color:var(--accent);font-family:var(--fn);font-size:8.5px;font-weight:850}.evd-tlday>h3>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:850}.evd-tlday>div{display:grid;min-width:0;gap:6px}
.evd-tlrow{display:grid;grid-template-columns:44px max-content minmax(0,1fr) auto;min-width:0;align-items:center;gap:7px;padding:4px 0;font-size:13px}
.evd-tlrow time{min-width:0;text-align:center;font-size:11.5px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.evd-tlrow time.range{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1}
.evd-tlrow time.range>span{white-space:nowrap}
.evd-tlrow time.range .evd-tlarrow{width:0;height:0;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:4px solid var(--accent);opacity:.85;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--accent) 55%,transparent))}
.evd-tlrow time.range>small{font-size:9.5px;font-weight:700;color:var(--faint);white-space:nowrap}
.evd-tlrow i{flex:none;font-style:normal;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:6px;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.evd-tlrow time .evd-tlarrow{padding:0;border-radius:0;background:transparent}
.evd-tlrow i.etc{color:var(--gold,#f5c542);background:color-mix(in srgb,var(--gold,#f5c542) 12%,transparent)}
.evd-tlrow b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evd-tlrow small{color:var(--faint)}
.evd-tlrow .evd-duration{white-space:nowrap;font-size:10px}

/* ===== TYPO ===== */
.kicker{font-family:var(--fe);text-transform:uppercase;letter-spacing:.18em;font-size:10px;color:var(--faint);font-weight:600}
.ul{height:2px;width:54px;margin-top:8px;background:var(--gold);box-shadow:0 0 12px rgba(255,207,92,.5);transform:skewX(-7deg)}
/* 키홀 로고 마크 — 워드마크 대체 (인증 화면 · 탐색 앱바) */
.logomark{display:inline-flex;align-items:center}
.logomark svg{display:block}
.logomark.bar{margin-left:-2px}
.mono{font-family:var(--fn);font-variant-numeric:tabular-nums}

/* cut corners */
/* 패널 모서리 챔퍼 — 우상+좌하 45° 대칭 베벨(코너 브래킷은 좌상·우하). 구 상단 전체 사선(사다리꼴)을 대체 */
.cutT{border-radius:16px} /* 깎은 모서리(HUD) 대신 무광 16px */
.cutBR{clip-path:polygon(0 0,100% 0,100% calc(100% - 20px),calc(100% - 20px) 100%,0 100%)}

/* ===== STATUS / HEADER BAR ===== */
.appbar{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 10px;position:relative;z-index:3}
.availability-appbar{justify-content:flex-start;gap:6px}.availability-appbar .logomark{flex:0 0 auto}.appbar.availability-appbar .ddaybar{margin-left:4px;margin-right:4px}.availability-appbar .avsearchbtn{width:0;max-width:0;min-width:0;padding:0;margin-left:auto;margin-right:-6px;overflow:hidden;opacity:0;pointer-events:none;border-width:0;border-color:transparent;transform:scale(.82);transition:width .24s cubic-bezier(.22,.82,.2,1),max-width .24s cubic-bezier(.22,.82,.2,1),margin-right .24s cubic-bezier(.22,.82,.2,1),opacity .18s ease,transform .24s cubic-bezier(.22,.82,.2,1),border-width .18s ease,border-color .18s ease}.availability-appbar .avsearchbtn,.availability-appbar .notifbtn{flex:0 0 auto}.availability-appbar .notifbtn{width:38px;max-width:38px;min-width:0;padding:0;opacity:1;transition:width .24s cubic-bezier(.22,.82,.2,1),max-width .24s cubic-bezier(.22,.82,.2,1),margin-left .24s cubic-bezier(.22,.82,.2,1),opacity .18s ease,transform .24s cubic-bezier(.22,.82,.2,1),border-width .18s ease,border-color .18s ease}.avsearchbtn svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2}.view-explore.avhead-collapsed .availability-appbar .avsearchbtn{width:38px;max-width:38px;margin-right:0;opacity:1;pointer-events:auto;border-width:1px;border-color:var(--glass-line);transform:none}.view-explore.avhead-collapsed .availability-appbar .notifbtn{width:0;max-width:0;margin-left:-6px;overflow:hidden;opacity:0;pointer-events:none;border-width:0;border-color:transparent;transform:scale(.82)}
.appbar.subview-appbar{justify-content:flex-start;gap:12px}.appbar.subview-appbar>div{min-width:0}
/* 하위 화면 제목은 두 줄까지 — 뉴스 글처럼 제목이 길어도 앱바가 무한정 높아지지 않게 */
.appbar.subview-appbar .title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 큰 표시용 글자(제목·숫자)는 clamp 로 유동 — 폭 좁은 폰에서 잘림/어색함 방지. 앵커: 440px(설계 기준폭·프레임 상한)에서 기존 px 그대로, 그 이하 폰에서만 완만히 축소(≥440·데스크탑 불변) [fb:e2ce6b25] */
.appbar .title{font-weight:900;font-size:clamp(18px,4.8vw,21px);letter-spacing:-.03em}
.appbar .sub{font-family:var(--fe);text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--faint);margin-top:2px}
.iconbtn{width:38px;height:38px;border-radius:9px;background:var(--surface2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted);transition:.16s}
.iconbtn:hover{color:var(--text);border-color:var(--accentDim)}
.iconbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9}
/* 그룹 채팅 상단 알림·초대 버튼 구분 */
.view-chat .appbar>[data-act="chat-invite"]{margin-left:8px}
/* 앱바 우측 액션 묶음 (fb:0734af5e, fb:01d17026, fb:7816eb48) */
.appbar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto} /* 액션은 줄어들지 않는다 — 긴 제목이 밀어내 버튼이 화면 밖으로 잘리던 문제 */
@media(max-width:359px){.appbar-actions{gap:6px}}
@media(max-width:359px){.view-friends .appbar .friend-menu-btn{padding:0 10px;gap:0;font-size:11px}.view-friends .appbar .friend-menu-btn b{display:none}}

/* ===== BOTTOM TAB NAV ===== */
.tabbar{display:flex;background:rgba(10,12,14,.92);backdrop-filter:blur(14px);border-top:1px solid var(--border);position:relative;z-index:5}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;padding:10px 0 calc(8px + env(safe-area-inset-bottom));color:var(--faint);transition:.16s;position:relative}
.tab svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8}
.tab .lb{font-size:10px;font-weight:700;letter-spacing:.02em}
/* 선택 탭 — 붉은 채움 대신 붉은 아이콘·라벨 + 윗변의 짧은 막대, 막대에서 옅게 번지는 빛 [fb:e2a4b19e] */
.tab.on{color:color-mix(in srgb,var(--p5) 86%,var(--text));background:radial-gradient(60% 62% at 50% 0,color-mix(in srgb,var(--p5) 13%,transparent),transparent)}.tab>svg{position:relative;z-index:1}.tab.on>svg{stroke-width:2.1}.tab.on .lb{font-weight:800}
.tab.on::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:22px;height:3px;border-radius:0 0 3px 3px;background:currentColor}
.tab .fab{width:48px;height:48px;border-radius:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--p5) 90%,#fff),var(--p5));color:var(--paper);display:flex;align-items:center;justify-content:center;margin-top:-12px;box-shadow:0 8px 18px -8px color-mix(in srgb,var(--p5) 60%,transparent),inset 0 1px 0 rgba(255,255,255,.22)}
.tab .fab svg{stroke:var(--paper);stroke-width:2.6}

/* ===== BUTTONS ===== */
.btn{height:50px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:800;font-size:clamp(12px,3.85vw,15px);transition:.16s;border:1px solid transparent}
/* 짧은 조작명은 한 줄 유지. 제목+설명이 있는 선택 버튼은 기존 줄바꿈을 보존한다. */
.btn:not(.hidechoice):not(:has(small,br)){white-space:nowrap}
.btn:active{transform:translateY(1px)}
.btn.p{background:var(--lens);box-shadow:var(--lens-sh);color:#fff;font-weight:900}
.btn.p:hover{box-shadow:var(--lens-sh),0 6px 18px -6px color-mix(in srgb,var(--p5) 55%,transparent)}
.btn.gold{background:var(--gold);color:#08090B}
.btn.g{border-color:var(--glass-line);color:var(--text);background:var(--glass-bg);box-shadow:var(--glass-hi)} /* 보조 버튼 — 조작부 유리 */
@media(hover:hover){.btn.g:hover{border-color:var(--glass-line-hi)}}
.btn.sm{height:40px;font-size:clamp(11px,3.34vw,13px);padding:0 16px;border-radius:10px}
.btn.danger{color:var(--danger);background:color-mix(in srgb,var(--danger) 13%,var(--surface2));border-color:color-mix(in srgb,var(--danger) 36%,transparent);box-shadow:none} /* 위험 버튼 한 종류 — .danger·.danger-solid·.g.danger 공통 */
.btn:disabled{opacity:.45;pointer-events:none}
.btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.qa-form-actions{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:8px;margin-top:6px}
/* 저장은 아래 고정 버튼 하나 — 스크롤 없이 저장하던 머리 체크는 이 시트에서 숨긴다 */
#qaForm .qa-form-actions{position:sticky;bottom:0;z-index:4;margin:6px -20px 0;padding:12px 20px calc(4px + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--bg2) 22%)}
.sheet:has(#qaForm) .sh-head .savecheck{display:none}
.qa-group{margin-top:12px;padding:14px 14px 6px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.qa-group:first-of-type{margin-top:2px}
.qa-group>.qa-gh{margin:0 0 12px 2px;font-size:13.5px;font-weight:800;letter-spacing:-.015em;color:var(--text)}.qa-group>.qa-gh small{margin-left:6px;font-size:11.5px;font-weight:600;color:var(--faint)}
.rv-submitbar{position:sticky;bottom:0;z-index:4;margin:12px -20px 0;padding:12px 20px calc(4px + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--bg2) 22%)}.rv-submitbar .btn{width:100%}
.qa-group>.toggle:last-child{padding-bottom:10px}
html[data-theme=light] .qa-group{background:#fff}
.qa-more{margin-top:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:0 14px}
.qa-more>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:50px;cursor:pointer;font-size:14px;font-weight:800}
.qa-more>summary::-webkit-details-marker{display:none}
.qa-more>summary small{font-size:12px;font-weight:600;color:var(--faint)}
.qa-more>summary svg{margin-left:auto;width:16px;height:16px;fill:none;stroke:var(--faint);stroke-width:2;transition:rotate .26s var(--ease-out)}
.qa-more[open]>summary svg{rotate:180deg}
.qa-more[open]{padding-bottom:6px}
.qa-more>.field:first-of-type{margin-top:2px}.qa-form-actions .btn{min-width:0;width:100%;padding:0 10px;font-size:clamp(11px,3.47vw,13.5px);white-space:nowrap}

/* ===== FORM ===== */
.field{margin:0 0 14px}
.field label{display:block;font-size:12.5px;letter-spacing:-.01em;color:var(--muted);font-weight:700;margin:0 0 7px 2px}
.input{width:100%;height:50px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:0 14px;color:var(--text);font-size:15px;transition:.16s;outline:none}
/* 기록·리뷰 방문일 — iOS/iPadOS 네이티브 date 의 intrinsic 폭·가운데 정렬을 제거해 공용 입력과 동일하게. [fb:6c9d8c2c] */
#qaForm input[type=date],#revDate{
  display:block;width:100%;min-width:0;max-width:100%;inline-size:100%;min-inline-size:0;max-inline-size:100%;
  -webkit-appearance:none;appearance:none;text-align:left;text-align-last:left
}
#qaForm input[type=date]::-webkit-date-and-time-value,#revDate::-webkit-date-and-time-value{
  display:flex;align-items:center;width:100%;height:100%;min-width:0;min-height:100%;text-align:inherit
}
#qaForm input[type=date]::-webkit-datetime-edit,#revDate::-webkit-datetime-edit{
  display:inline-flex;align-items:center;height:100%;min-width:0;padding:0;text-align:inherit
}
#qaForm input[type=date]::-webkit-datetime-edit-fields-wrapper,#revDate::-webkit-datetime-edit-fields-wrapper{padding:0}
.input:focus{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 9%,transparent)}
textarea.input{height:auto;min-height:160px;padding:14px;line-height:1.55;resize:vertical;font-family:var(--fb);font-size:14px}
#importText{font-family:var(--fn);font-size:13px} /* CSV 붙여넣기만 고정폭 — 열이 맞아 보이게. 나머지 글 입력은 본문 글꼴(모노 폴백은 한글 자간이 벌어진다) */
.input::placeholder{color:var(--faint)}
.formerr{color:var(--danger);font-size:13px;margin:2px 0 12px;min-height:18px}
.hint{color:var(--faint);font-size:12px;line-height:1.5}

/* ===== ONBOARD / AUTH ===== */
.auth{flex:1;position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:0 0 28px;overflow-y:auto;overflow-x:hidden} /* 키보드(adjustResize)로 줄어들면 스크롤 — 입력칸이 가려지지 않게 */
.auth .diag{position:absolute;inset:0;z-index:0;background:linear-gradient(115deg,transparent 52%,rgba(22,28,34,.55) 52%)}
.auth .keyhole{position:absolute;top:64px;left:50%;transform:translateX(-50%);z-index:0;opacity:.92}
.auth .glow{position:absolute;top:30px;left:50%;transform:translateX(-50%);width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(255,207,92,.14),transparent 65%);z-index:0;filter:blur(10px)}
.auth .top{position:relative;z-index:2;margin:0 22px 16px}
/* 브랜드 워드마크 — 로고(키홀 원 좌측 시각 엣지)와 텍스트·언더라인 좌측 정렬.
   svg viewBox(150×200)의 원 좌단 36.5 → h=72 스케일(0.36)에서 약 13px 내부 여백 보정 */
.kicker.brand{color:var(--gold);font-size:12px;letter-spacing:.3em;font-weight:800;margin-bottom:6px}
.auth .logomark svg{margin-left:-13px}
.authcard{position:relative;z-index:3;margin:18px 20px 0;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px 18px}
.authcard>.btn{width:100%}.authcard>.btn+.btn{margin-top:8px} /* 폼의 제출·보조 버튼은 카드 폭 전체 — <button> 은 기본이 내용 폭이라 명시 */
.authtabs{display:flex;gap:2px;margin:0 20px;padding:4px;position:relative;z-index:3;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.authtabs button{flex:1;height:38px;border-radius:999px;font-weight:800;font-size:14px;color:var(--muted);position:relative;transition:.16s}
.authtabs button.on{color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}

.auth.signup,.auth.legal-gate{justify-content:flex-start;padding-top:96px}
.auth.signup{padding-top:54px;padding-bottom:38px}
.auth.recovery{justify-content:center;padding-top:40px;padding-bottom:40px}
.email-verify{margin:0 0 16px;padding:13px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.email-verify-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.email-verify-head b{font-size:13.5px}.email-verify-head span{font-size:11.5px;color:var(--faint)}
.email-send-row,.email-code-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.email-code-row{display:none;margin-top:8px}.email-code-row.show{display:grid}.email-send-row .btn,.email-code-row .btn{min-width:94px;padding:0 10px;white-space:nowrap}.email-code-row .mono{letter-spacing:.16em}
.email-verify-status{min-height:17px;margin-top:8px;font-size:11.5px;line-height:1.45;color:var(--faint)}.email-verify-status.ok{color:var(--success)}.email-verify-status.no{color:var(--danger)}
.auth-help{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}.auth-help button{min-height:44px;padding:0 4px;color:var(--muted);font-size:12.5px}.auth-help span{width:1px;height:12px;background:var(--border)}
.auth-flow-head{margin-bottom:16px}.auth-flow-head b{font-size:19px}.auth-flow-head p{margin:6px 0 0;color:var(--muted);font-size:12.5px;line-height:1.55}.auth-privacy-note{margin:-2px 1px 14px;color:var(--faint);font-size:11.5px;line-height:1.55}.formerr.ok{color:var(--success)}
.group-invite-auth-note{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--muted)}.group-invite-auth-note>div{display:flex;min-width:0;flex-direction:column;gap:3px}.group-invite-auth-note b{color:var(--text);font-size:13px}.group-invite-auth-note span{font-size:12px}.group-link-install{display:flex;min-width:72px;height:44px;flex:0 0 auto;align-items:center;justify-content:center;padding:0 12px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800;text-decoration:none}.group-link-install:active{scale:.97}
.account-email-current{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding:12px 13px;border:1px solid var(--hairline);background:var(--surface2)}.account-email-current b{font-size:13px}.account-email-current span{font-size:11px;color:var(--faint)}.account-email-current.on{border-left:2px solid var(--success)}

/* 가입·기존 회원 약관 확인 — 실제 선택 상태만 색으로 드러내고, 장식용 상태점·점멸은 쓰지 않는다. */
.legal-consent{position:relative;margin:2px 0 14px;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.legal-all{min-height:58px;display:flex;align-items:center;gap:11px;padding:10px 12px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface3) 70%,transparent);cursor:pointer}
.legal-all>span:last-child{display:flex;min-width:0;flex-direction:column;gap:3px}.legal-all b{color:var(--text);font-size:13px;line-height:1.25}.legal-all small{color:var(--faint);font-size:11.5px;line-height:1.3}
.legal-all input,.legal-choice input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
.legal-check{position:relative;width:20px;height:20px;flex:0 0 auto;border:1px solid var(--muted);border-radius:6px;background:var(--surface);transition:border-color .16s,background-color .16s,transform .16s}
.legal-check::after{content:"";position:absolute;left:6px;top:3px;width:5px;height:9px;border:solid var(--paper);border-width:0 2px 2px 0;opacity:0;transform:rotate(45deg) scale(.6);transition:opacity .14s,transform .14s}
.legal-all input:checked+.legal-check,.legal-choice input:checked+.legal-check{border-color:var(--p5);background:var(--p5)}
.legal-all input:checked+.legal-check::after,.legal-choice input:checked+.legal-check::after{opacity:1;transform:rotate(45deg) scale(1)}
.legal-all input:indeterminate+.legal-check{border-color:var(--p5);background:color-mix(in srgb,var(--p5) 22%,var(--surface))}
.legal-all input:indeterminate+.legal-check::after{left:5px;top:8px;width:8px;height:0;border-width:0 0 2px;opacity:1;transform:none}
.legal-all input:focus-visible+.legal-check,.legal-choice input:focus-visible+.legal-check{outline:2px solid var(--focus);outline-offset:2px}
.legal-lines{padding:4px 0}.legal-line{min-height:46px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:0 8px 0 12px}.legal-line+.legal-line{border-top:1px solid var(--hairline)}
.legal-choice{min-width:0;display:flex;align-items:center;gap:10px;padding:8px 0;color:var(--muted);font-size:12.5px;line-height:1.35;cursor:pointer}.legal-choice>span:last-child{min-width:0}.legal-choice em{display:inline-block;margin-left:4px;color:var(--faint);font-size:11px;font-style:normal;font-weight:700;vertical-align:0}
.legal-choice:has(input:checked){color:var(--text)}
.legal-open{min-width:58px;height:36px;padding:0 6px;color:var(--muted);font-size:11px;font-weight:700;text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}.legal-open:hover{color:var(--text);text-decoration-color:var(--p5)}.legal-open:focus-visible{outline:2px solid var(--focus);outline-offset:-2px;border-radius:6px}
.legal-load-state{margin:0;padding:8px 12px 10px;border-top:1px solid var(--border);color:var(--danger);font-size:11px;line-height:1.45}
.legal-gate-card{width:auto}.legal-gate-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}.legal-gate-head h1{margin:1px 0 5px;color:var(--text);font-size:21px;line-height:1.2;letter-spacing:-.03em}.legal-gate-head p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.5}.legal-mini-key{width:40px;height:40px;display:grid;flex:0 0 auto;place-items:center;border-radius:50%;background:var(--tag-bg)}.legal-mini-key svg{display:block}
.legal-gate-actions{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}.legal-gate-actions span{width:1px;height:11px;background:var(--border)}.legal-gate-actions button{min-height:44px;padding:0 8px;color:var(--faint);font-size:12px}.legal-gate-actions button:hover{color:var(--text)}.legal-gate-actions button:last-child:hover{color:var(--danger)}

/* 약관 내용 시트 — 모바일은 바텀시트, 데스크탑은 공용 규칙으로 중앙 모달. */
.legal-sheet .sh-head{align-items:flex-start}.legal-sheet-date{margin-top:4px;color:var(--faint);font-size:11.5px}.legal-sheet .sh-body{padding-top:8px}.legal-doc-wrap{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:#08090B}.legal-doc-frame{display:block;width:100%;height:min(68dvh,680px);border:0;background:#08090B}
.legal-facts{display:flex;flex-direction:column;gap:9px}.legal-facts>div{padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.legal-facts b{display:block;margin-bottom:5px;color:var(--text);font-size:12px}.legal-facts p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.55}.legal-facts .legal-plain-note{padding:2px 3px;color:var(--faint);font-size:11.5px}.legal-full-link{height:44px;display:flex;align-items:center;justify-content:center;margin-top:2px;border:1px solid var(--glass-line);border-radius:12px;color:var(--text);font-size:12.5px;font-weight:750;background:var(--glass-bg);box-shadow:var(--glass-hi)}.legal-full-link:hover{border-color:var(--glass-line-hi)}

/* ===== SEARCH / EXPLORE ===== */
/* HUD 레티클 검색바 — 대칭 코너 브래킷(패널 HUD 언어 계승), 포커스 시 브래킷 확장 + 틸 발광 */
.searchbar{margin:8px 18px 0;height:52px;position:relative;z-index:2;display:flex;align-items:center;gap:10px;padding:0 12px 0 15px;
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  transition:border-color .18s,box-shadow .18s}
.searchbar:focus-within{border-color:color-mix(in srgb,var(--text) 34%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 9%,transparent)}
.searchbar svg{width:18px;height:18px;stroke:var(--muted);fill:none;stroke-width:2;flex:0 0 auto}
/* min-width:0 — flex 의 min-width:auto 기본값이 WebView 폰트 부스팅 시 input 고유폭을 지켜
   X(지우기) 버튼을 검색창 밖으로 밀어내는 것 방지 (APK 에서 X 잘림) */
.searchbar input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--text);font-size:15px;caret-color:var(--p5)}
.searchbar input::placeholder{color:var(--faint)}
.searchbar .clr{color:var(--faint);font-size:18px;padding:4px}
/* 친구 검색 전용 — 아이디 정확 일치를 '검색' 버튼/Enter 로만 실행 */
.searchbar .findbtn{flex:0 0 auto;height:34px;padding:0 15px;margin-right:-4px;color:var(--text);font-size:12.5px;font-weight:800;letter-spacing:-.01em;cursor:pointer;transition:scale .2s cubic-bezier(.3,.7,.4,1)} /* 유리는 보기 도구 공용 규칙 */
.searchbar .findbtn:active{scale:.96}
.searchbar .findbtn:disabled{cursor:wait;opacity:.55;scale:1}
.searchbar .findbtn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* 검색어 입력 중엔 전체 지역 스캔 → 지역 필터 행만 조용히 디밍 (별도 배너 없음) */
/* 재검색 중 — 결과를 갈아엎지 않고 디밍만 */
#results.searching{opacity:.45;pointer-events:none;transition:opacity .18s}

.toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px 6px;position:relative;z-index:2}
.sortsel{min-width:0;max-width:136px;font-family:var(--fe);letter-spacing:.04em;font-size:11px;color:var(--text);font-weight:700;display:flex;align-items:center;gap:5px;background:none;min-height:32px;text-align:left}.sortsel>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 탐색 필터 칩 [fb:36ecc8e7] — 기록 탭 보기 도구와 같은 유리 캡슐(.filtrow, 글래스 공용 규칙은 .vt-acts 옆) 하나에 아이콘 칸을 모으고,
   켜진 칸은 의미색(--fc)으로 옅게 물든 유리 렌즈가 된다. 필터·일행·안 한 테마=크림슨(선택) · 일정=파랑 · 찜=골드 · 한 테마=그린(.playedcycle).
   예약 가능 보기는 화면 전환이라 꽉 찬 그린 렌즈(.fchip.availability.on). 상시 글로우·점멸 없이 정지 상태로만 구분한다 */
.filtrow{display:flex;gap:2px;align-items:center;padding:2px}
.fchip{--fc:var(--p5);position:relative;font-size:11.5px;color:var(--muted);border:0;border-radius:999px;padding:5px 10px;display:flex;gap:5px;align-items:center;background:transparent;transition:color .2s,background .2s,box-shadow .2s,scale .2s cubic-bezier(.3,.7,.4,1);white-space:nowrap}
.fchip::before{content:"";position:absolute;inset:-6px 0} /* 보이는 크기는 그대로, 누르는 영역만 위아래로 넓힘 */
@media(hover:hover){.fchip:hover{color:var(--text);background:color-mix(in srgb,var(--text) 6%,transparent)}}
.fchip:active{scale:.94}
.fchip:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.fchip.on,.playedcycle:not(.st-all){color:var(--fc);
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,0) 60%),color-mix(in srgb,var(--fc) 15%,var(--surface3));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--fc) 42%,transparent),inset 0 1px 0 rgba(255,255,255,.1),0 2px 6px -2px color-mix(in srgb,var(--fc) 35%,transparent)}
html[data-theme=light] .fchip.on,html[data-theme=light] .playedcycle:not(.st-all){
  background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,0) 60%),color-mix(in srgb,var(--fc) 11%,var(--surface));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--fc) 38%,transparent),0 1px 3px rgba(20,27,35,.12)}
.fchip b{color:var(--gold);font-family:var(--fn)}
/* 아이콘 칩 — 상태 필터 간소화 (미플레이=자물쇠 · 플레이함=열린 자물쇠 · 찜=하트 · 일행=친구+) */
.fchip.ic{height:32px;min-width:38px;padding:0 10px;justify-content:center;gap:3px}
.fchip.ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.9;vertical-align:middle}
.fchip.wish{--fc:var(--gold)}
.fchip.ic.wish.on svg{fill:var(--gold);stroke:var(--gold)}
.fchip.party{--fc:var(--p5)}.fchip.plan{--fc:var(--info)}
.fchip.ic b{font-size:10px}

.results{padding:2px 0 16px}
.countline{padding:6px 18px 2px;font-family:var(--fn);font-size:11px;color:var(--faint)}
.countline.explore-countline{position:sticky;top:0;z-index:4;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 18px;background:var(--bg);border-bottom:1px solid var(--hairline);font-size:12px}.explore-countline>span{min-width:0;white-space:nowrap}.explore-countline .count-sort{flex:none;max-width:160px}
/* 정렬 칩 — 기록 탭 정렬 칩(.vt-chip)과 같은 유리 알약. 결과 머리줄(모바일)·툴바 끝(데스크탑) 공용 */
.explore-countline .count-sort,.toolbar .em-sort{height:32px;min-height:32px;padding:0 11px 0 13px;gap:5px;color:var(--muted);font-family:inherit;font-size:12px;font-weight:800;letter-spacing:-.01em;transition:color .14s,border-color .14s}
@media(hover:hover){.explore-countline .count-sort:hover,.toolbar .em-sort:hover{color:var(--text);border-color:var(--glass-line-hi)}}
.explore-countline .count-sort:focus-visible,.toolbar .em-sort:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
/* 지역 0건→전국 자동 확장 안내 (accent=탐색 계열) */
.widenote{display:flex;flex-direction:column;gap:3px;margin:8px 14px 2px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.widenote .wn-code{font-family:var(--fn);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--accentDim)}
.widenote .wn-tx{font-size:12.5px;color:var(--muted);line-height:1.5;word-break:keep-all}
.widenote .wn-tx b{color:var(--text);font-weight:700}
.trow{display:flex;gap:12px;padding:13px 18px;align-items:center;border-top:1px solid var(--hairline);position:relative;transition:.14s;width:100%;text-align:left;color:inherit;font:inherit;margin:0;appearance:none;-webkit-appearance:none}
.trow:hover{background:var(--surface)}
.trow:active{background:var(--surface2)}
.th{width:52px;height:68px;border-radius:8px;background-size:cover;background-position:center;flex:0 0 auto;border:1px solid var(--border);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}
.th .ph{font-weight:900;font-size:22px;color:rgba(231,236,242,.5)}
.trow .mid{flex:1;min-width:0}
.trow .mid .tline{display:flex;align-items:center;gap:6px;min-width:0}
/* 이머시브·크라임씬·야외 — 목록은 제목 앞 아이콘, 상세는 같은 아이콘과 한국어 분류명. */
.theme-category{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:0 0 auto;padding:3px 8px;border:1px solid color-mix(in srgb,var(--muted) 35%,var(--border));border-radius:6px;background:var(--surface2);color:var(--text);font-size:11px;font-weight:700;line-height:18px;white-space:nowrap}
.theme-category svg{display:block;width:17px;height:17px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.theme-category.compact{width:22px;height:22px;padding:0;border-radius:5px;color:var(--muted)}
.avtitleline{display:flex;align-items:center;gap:6px;min-width:0}.avtitleline .avtitle{min-width:0}
.trow .mid .t{display:block;flex:0 1 auto;min-width:0;font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 탐색 제목은 최대 두 줄, 분류 아이콘은 첫 줄에 정렬. 매장명·정보 행은 별도로 유지한다. */
.view-explore .trow .mid .t,.view-explore .avtitle{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere;line-height:24px}
.view-explore .trow .mid .tline,.view-explore .avtitleline{align-items:flex-start}
/* 탐색 플레이 시간 — 크로노 다이얼 칩. 120분 한 바퀴 기준으로 부채꼴이 차고, 구간색은 익숙한 단계색(초록·파랑·주황·빨강)을 살짝 눅여 쓴다 */
.tdur{--tdc:#5CCB8A;height:21px;display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;padding:0 6px 0 3px;color:var(--tdc);border:1px solid color-mix(in srgb,var(--tdc) 42%,transparent);border-radius:6px;background:linear-gradient(180deg,color-mix(in srgb,var(--tdc) 20%,transparent),color-mix(in srgb,var(--tdc) 9%,transparent));box-shadow:inset 0 1px rgba(255,255,255,.08);white-space:nowrap;line-height:1}
.tdur.standard{--tdc:#5AA9F0}
.tdur.long{--tdc:#F5A04A}
.tdur.epic{--tdc:#EF6461}
.tdial{width:15px;height:15px;display:block;flex:0 0 auto;overflow:visible}
.tdial .tdial-rim{fill:color-mix(in srgb,var(--tdc) 10%,transparent);stroke:var(--tdc);stroke-width:1.2}
.tdial .tdial-ticks{stroke:var(--tdc);stroke-width:1.1;stroke-linecap:round}
.tdial .tdial-sweep{fill:color-mix(in srgb,var(--tdc) 68%,transparent);stroke:none}
.tdial .tdial-hand{stroke:var(--tdc);stroke-width:1.6;stroke-linecap:round}
.tdial .tdial-hub{fill:var(--tdc);stroke:none}
.tdial.full .tdial-sweep{fill:var(--tdc)}.tdial.full .tdial-hand{stroke:var(--bg);stroke-width:1.5}.tdial.full .tdial-hub{fill:var(--bg)}
.tdur.epic .tdial-rim{stroke-width:1.6}
.tdur-value{display:inline-flex;align-items:baseline;gap:1px;min-width:0}
.tdur-value b{font-family:var(--fn);font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:800;line-height:1;letter-spacing:-.03em;color:var(--text)}
.tdur-value small{font-family:var(--fb);font-size:9.5px;font-weight:700;line-height:1;letter-spacing:0;color:var(--tdc)}
.trow .mid .s{display:block;font-size:11.5px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trow .mid .tags2{display:flex;width:max-content;max-width:calc(100% + 58px);gap:3px;margin-top:6px;align-items:center;flex-wrap:nowrap;overflow:hidden} /* 평점 아래까지 확장하되 우측 플레이 수 영역은 보호 */
.trow .tags2 .pmeter{flex:0 1 auto;min-width:0;gap:4px;padding:3px 7px}
.trow .tags2 .pmeter .pml{font-size:10.5px}
.trow .tags2 .pmeter .pms{gap:1.5px}
.trow .tags2 .pmeter .pms i{width:3px;height:8px}
.trow .end{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex:0 0 auto}
/* 평점 배지 — 글래스 칩 + 크림슨 그라디언트 언더라인 (구 솔리드 사다리꼴 대체) */
.trow .end .ratebadge{display:flex;align-items:center;gap:5px;padding:0;background:none;border:0;position:relative}
.trow .rt{font-family:var(--fn);font-weight:800;font-size:16px;color:var(--text)}
.trow .tplays{font-size:11px;font-weight:600;color:var(--faint);white-space:nowrap}
/* 탐색 평점 스텁 — 행 오른쪽 끝 고정 칸(데스크탑 카드와 같은 배치, 점선 구분은 데스크탑만 — desktop.css 가 덮음).
   행 위·아래·오른쪽 가장자리까지 채워 모든 행에서 같은 자리에 선다. --gc(등급색, app.js themeRow)는 옅은 바탕에만 */
.view-explore .tlist .trow .mid .tags2{max-width:100%} /* 스텁이 행 높이를 다 쓰므로 평점 아래 확장 해제 */
.view-explore .tlist .trow .end{align-self:stretch;justify-content:center;align-items:center;gap:5px;width:66px;margin:-13px -18px -13px -2px;padding:0 2px;
  background:radial-gradient(110% 80% at 50% 40%,color-mix(in srgb,var(--gc,transparent) 13%,transparent),transparent 74%)}
.view-explore .tlist .trow .end .ratebadge{gap:4px}
.view-explore .tlist .trow .end .ratebadge svg{flex:0 0 auto;width:16px;height:16px}
.view-explore .tlist .trow .end .rt{font-size:18px;font-weight:700;line-height:1;letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.view-explore .tlist .trow .end .ratebadge.norating{background:none}
.view-explore .tlist .trow .end .ratebadge.norating .rt{font-weight:500}
.view-explore .tlist .trow .end .tplays{font-size:10px;letter-spacing:.01em;line-height:1}
.view-explore .tlist .trow .tags2>*{flex-shrink:0} /* 칩은 찌그러뜨리지 않는다(라벨 줄바꿈 방지) — 모자라면 끝에서 잘림 */
@media(max-width:359px){.view-explore .tlist .trow .end{width:56px;padding:0 1px}.view-explore .tlist .trow .end .ratebadge svg{width:14px;height:14px}.view-explore .tlist .trow .end .rt{font-size:16px}.view-explore .tlist .trow .end .tplays{font-size:9.5px}
  .view-explore .tlist .trow .mid .tags2{gap:2px}.view-explore .tlist .trow .tags2 .pmeter{gap:3px;padding-left:5px;padding-right:5px}.view-explore .tlist .trow .tags2 .pmeter .pml{font-size:10px}.view-explore .tlist .trow .tags2 .pmeter .pms{gap:1px}
  .view-explore .tdur{gap:2px;padding:0 4px 0 2px}.view-explore .tdur-value b{font-size:11px;letter-spacing:-.05em}.view-explore .tdur-value small{font-size:9px}}
/* 결과 행 스태거 진입(게임 화면 느낌) — 뷰 '진입'(.view-enter)일 때만. 검색/필터 갱신마다 재생하지 않음.
   기본 딜레이(.58s)는 열거된 스태거의 '다음 순번' — 15번째 이후 행이 딜레이 0으로 먼저 튀지 않고
   꼬리에 함께 등장 (데스크탑 그리드는 8개 넘게 보이므로 14개까지 열거). 전체 종료 ≤ .92s < view-enter 해제 1.2s */
@keyframes rowInX{from{opacity:0;transform:translateX(-26px)}to{opacity:1;transform:none}}
.view-enter .tlist .trow{animation:rowInX .34s cubic-bezier(.2,.9,.3,1) .58s both}
.tlist .trow:nth-child(1){animation-delay:.02s}.tlist .trow:nth-child(2){animation-delay:.06s}
.tlist .trow:nth-child(3){animation-delay:.10s}.tlist .trow:nth-child(4){animation-delay:.14s}
.tlist .trow:nth-child(5){animation-delay:.18s}.tlist .trow:nth-child(6){animation-delay:.22s}
.tlist .trow:nth-child(7){animation-delay:.26s}.tlist .trow:nth-child(8){animation-delay:.30s}
.tlist .trow:nth-child(9){animation-delay:.34s}.tlist .trow:nth-child(10){animation-delay:.38s}
.tlist .trow:nth-child(11){animation-delay:.42s}.tlist .trow:nth-child(12){animation-delay:.46s}
.tlist .trow:nth-child(13){animation-delay:.50s}.tlist .trow:nth-child(14){animation-delay:.54s}
@media(prefers-reduced-motion:reduce){.tlist .trow{animation:none}}
.played{font-size:9px;font-family:var(--fe);letter-spacing:.08em;color:var(--success);border:1px solid rgba(76,190,126,.4);border-radius:4px;padding:1px 5px}
.played.related{color:var(--info);border-color:color-mix(in srgb,var(--info) 45%,transparent);background:color-mix(in srgb,var(--info) 7%,transparent)}
/* 탐색 행 체감 게이지 칩 — 컷 코너 패럴렐로그램 + 라벨 + 슬랜트 세그먼트만 (난이도 상시 · 공포는 '무서움' 이상만) */
.pmeter{display:inline-flex;align-items:center;gap:5px;height:21px;padding:0 8px;border:0;border-radius:6px;background:var(--tag-bg);line-height:1;flex:0 0 auto}
.pmeter .pml{font-size:10.5px;font-weight:700;color:var(--muted);letter-spacing:-.01em;font-style:normal}
.pmeter .pms{display:inline-flex;gap:2px;align-items:center}
.pmeter .pms i{width:3px;height:9px;border-radius:1px;background:color-mix(in srgb,var(--text) 16%,transparent)}
.pmeter.fear{background:color-mix(in srgb,var(--dhot) 13%,transparent)}.pmeter.fear .pml{color:var(--dhot)}
/* 포스터 상태 마크 — WISHLIST(상단 골드 스트립) · PLAYED(하단 틸 스트립). 태그 줄 대신 포스터에 부착 */
.trow .th .thwishlist,.avposter .thwishlist{position:absolute;left:0;right:0;top:0;text-align:center;font-family:var(--fe);font-size:7px;font-weight:700;letter-spacing:.1em;color:var(--gold);background:linear-gradient(0deg,transparent,rgba(4,6,10,.82) 46%);padding:2.5px 0 6px;text-shadow:0 0 6px rgba(255,207,92,.5)}
.trow .th .thwishlist.related,.avposter .thwishlist.related{color:var(--info);text-shadow:0 0 6px color-mix(in srgb,var(--info) 68%,transparent)}
.trow .th .thplayed,.avposter .thplayed{position:absolute;left:0;right:0;bottom:0;text-align:center;font-family:var(--fe);font-size:7.5px;font-weight:700;letter-spacing:.16em;color:var(--accent);background:linear-gradient(180deg,transparent,rgba(4,6,10,.82) 46%);padding:6px 0 2.5px;text-shadow:0 0 6px rgba(63,224,208,.5)}
.trow .th .thplayed.related,.avposter .thplayed.related{color:var(--info);text-shadow:0 0 6px color-mix(in srgb,var(--info) 68%,transparent)}
/* 탐색·예약 가능 시간 보기 공용 디데이 딱지 — 기존 탐색 planbadge를 PLAYED 자리 안쪽에 고정해 작은 포스터에서도 테두리와 글자가 잘리지 않는다. [fb:499983f0] */
.trow .th .posterplan,.avposter .posterplan{position:absolute;left:4px;right:4px;bottom:4px;display:block;min-width:0;margin-left:0;padding-left:2px;padding-right:2px;text-align:center;white-space:nowrap;background:rgba(4,7,11,.88)}
/* 미오픈 — 아직 오픈 전 테마 배지(앰버 솔리드 필, 하단 슬롯을 PLAYED 대신 차지) [fb:ed624d2c] */
.trow .th .thpreopen{position:absolute;left:5px;bottom:5px;font-family:var(--fe);font-size:8px;font-weight:800;letter-spacing:.06em;color:#1a1205;background:var(--gold);padding:2px 6px;border-radius:5px;box-shadow:0 1px 5px rgba(0,0,0,.45)}
/* 폐업 — 붉은 솔리드 필 배지. 상단에 붙여 하단 PLAYED 바와 겹치지 않게(폐업+플레이 동시 표시) [fb:43659dbe] */
.trow .th .thclosed{position:absolute;left:5px;top:5px;font-family:var(--fe);font-size:8px;font-weight:800;letter-spacing:.06em;color:#fff;background:var(--p5);padding:2px 6px;border-radius:5px;box-shadow:0 1px 5px rgba(0,0,0,.45)}

/* ===== DETAIL ===== */
.dhero{position:relative;height:300px;flex:0 0 auto}
.dhero .bg{position:absolute;inset:0;background-size:cover;background-position:center}
.dhero .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:90px;color:rgba(231,236,242,.08)}
.dhero .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,11,.2) 0%,rgba(8,9,11,.2) 38%,rgba(8,9,11,.98) 100%)}
.dhero .diag{position:absolute;inset:0;background:linear-gradient(108deg,transparent 62%,rgba(8,9,11,.5) 62%)}
.dtop{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;padding:14px}
.dhead{position:absolute;left:18px;right:18px;bottom:16px;z-index:3}
.dhead .rn{writing-mode:vertical-rl;font-family:var(--fn);font-size:10px;letter-spacing:.18em;color:var(--faint);font-weight:700;position:absolute;right:0;bottom:0}
.dhead .ttl{font-weight:900;font-size:clamp(23px,6.6vw,29px);letter-spacing:-.04em;line-height:1.05;transform:scaleY(1.03);transform-origin:left}
.dcategory{display:flex;align-items:flex-start;gap:6px;margin-bottom:8px}
.dhead .meta{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted);margin-top:9px;flex-wrap:wrap}
.dhead .storelink{min-width:0;max-width:100%;display:inline-flex;align-items:center;gap:3px;padding:2px 0;border:0;background:none;color:inherit;font:inherit;text-align:left}.dhead .storelink>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dhead .storelink>svg{width:12px;height:12px;flex:none;fill:none;stroke:currentColor;stroke-width:2}.dhead .storelink:hover{color:var(--text)}.dhead .storelink:active{color:var(--accent)}
.dot{width:3px;height:3px;border-radius:50%;background:#6b7884}
/* ---- 컬랩싱 히어로 — 본문 스크롤(--dclps 0→1, app.js bind 주입)에 따라 포스터 축소·디밍, 제목만 잔류. ≥1000px 은 desktop.css 가 원복 ---- */
.view-detail .dhero{height:calc(300px - 172px*var(--dclps,0))}
.view-detail .dhero .scrim{background-color:rgba(8,9,11,calc(.58*var(--dclps,0)))}
.view-detail .dhead .ttl{font-size:calc(clamp(23px,6.6vw,29px) - 8px*var(--dclps,0))}
.view-detail .dhead .rn,.view-detail .dhead .meta,.view-detail .dplan{opacity:calc(1 - 1.6*var(--dclps,0))}
.view-detail .dhead .meta{max-height:calc(60px*(1 - var(--dclps,0)));margin-top:calc(9px*(1 - var(--dclps,0)));overflow:hidden}
.view-detail .dcategory{max-height:calc(26px*(1 - var(--dclps,0)));margin-bottom:calc(8px*(1 - var(--dclps,0)));opacity:calc(1 - 1.6*var(--dclps,0));overflow:hidden}
.view-detail .dplan{max-height:calc(52px*(1 - var(--dclps,0)));margin:calc(-4px*(1 - var(--dclps,0))) -10px calc(-8px*(1 - var(--dclps,0)));overflow:hidden}
/* 히어로가 내준 높이를 상단 패딩으로 되돌려 본문 시각 이동량 = scrollTop (손가락 1:1 — 안 그러면 축소분이 겹쳐 약 2배속).
   scrollHeight 도 같은 만큼 늘어 clientHeight 증가를 상쇄 → 짧은 본문 스크롤 한계 요동도 함께 해결(구 .dbody 하단 보정 대체).
   overflow-anchor — 패딩 변화를 Chromium 스크롤 앵커링이 scrollTop 으로 되보정해 떨리는 것 방지 */
.view-detail .scroll{padding-top:calc(172px*var(--dclps,0));overflow-anchor:none}
.factbar{background:var(--surface);border-bottom:1px solid var(--border);padding:15px 14px 16px;position:relative;z-index:2;display:flex}
/* 모바일 — 히어로 아래로 살짝 겹쳐 뜨는 무광 사실 카드 */
@media(max-width:999px){.view-detail .factbar{margin-top:0;padding:26px 18px 16px;border:0;background:var(--bg);isolation:isolate;z-index:6}.view-detail .factbar::before{content:"";position:absolute;z-index:-1;inset:14px 14px 4px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.view-detail .factbar::after{content:"";position:absolute;left:0;right:0;top:100%;height:14px;background:linear-gradient(var(--bg),transparent);pointer-events:none}}
.fact{flex:1;min-width:0;container-type:inline-size;text-align:center;border-right:1px solid var(--hairline)}
.fact:last-child{border-right:0}
.fact .k{font-size:11.5px;letter-spacing:-.01em;color:var(--faint);font-weight:700}
/* 작은 폰·좁은 데스크탑 컬럼에서도 다섯 글자 분류 문구를 한 줄로 표시 */
.fact .v{font-family:"IBM Plex Mono","Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo",sans-serif;word-spacing:-.28em;font-weight:700;font-size:11px;font-size:clamp(10px,17cqi,15px);white-space:nowrap;margin-top:5px}
/* cqi 미지원 모바일도 4등분한 정보 칸에 맞춰 축소하고, 여유가 있으면 기본 15px 유지 */
@supports not (font-size:1cqi){@media(max-width:479px){.fact .v{font-size:clamp(10px,calc(4.25vw - 1.36px),15px)}}}
.fact-player-cycle{position:relative;height:20px;overflow:hidden}.fact-player-track{position:relative;display:block;height:20px}.fact-player-slide{position:absolute;inset:0;height:20px;display:flex;align-items:center;justify-content:center;line-height:20px;white-space:nowrap}.fact-player-slide.capacity{animation:fact-player-capacity-swap 10s steps(1,end) infinite}.fact-player-slide.recommended{color:var(--gold);font-family:var(--fb);font-size:10.5px;font-weight:850;letter-spacing:-.02em;word-spacing:normal;animation:fact-player-recommended-swap 10s steps(1,end) infinite}
@keyframes fact-player-capacity-swap{0%,49.99%{opacity:1}50%,100%{opacity:0}}@keyframes fact-player-recommended-swap{0%,49.99%{opacity:0}50%,100%{opacity:1}}
@media (prefers-reduced-motion:reduce){.fact-player-slide.capacity,.fact-player-slide.recommended{animation:none}.fact-player-slide.capacity{opacity:1}.fact-player-slide.recommended{opacity:0}}
.dbody{padding:18px;position:relative;z-index:2}
.ratingrow{display:flex;align-items:center;gap:14px}
.view-detail .ratingrow{padding:14px 16px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.ratingrow .big{font-family:var(--fn);font-weight:700;font-size:clamp(29px,8.2vw,36px);line-height:1}
.ratingrow .big u{font-size:14px;color:var(--faint);text-decoration:none}
.ratingrow .dist{flex:1}
.ratingrow .dist .l{display:flex;align-items:center;gap:6px;margin:2px 0}
.ratingrow .dist .l .glab{display:flex;align-items:center;justify-content:center;flex:0 0 20px}
.ratingrow .dist .l .glab svg{flex:0 0 16px}
.ratingrow .dist .bar{flex:1;height:5px;border-radius:999px;background:var(--surface3);overflow:hidden}
.ratingrow .dist .bar i{display:block;height:100%;border-radius:999px;background:color-mix(in srgb,var(--text) 42%,transparent)}
.ratingrow .dist .n{font-family:var(--fn);font-size:11px;color:var(--faint);width:28px;text-align:right}
.ctarow{display:flex;gap:8px;margin-top:18px}
.ctarow .c{flex:1;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:6px;font-weight:800;font-size:clamp(11px,3.34vw,13px);border:1px solid var(--glass-line);color:var(--text);background:var(--glass-bg);box-shadow:var(--glass-hi);transition:.16s}
/* 리뷰 쓰기·수정 — 화면의 주 동작(붉은 렌즈). 쓰기=별, 수정=연필 아이콘으로 상태를 구분하고 색은 늘리지 않는다 */
.ctarow .c.primary{background:var(--lens);color:#fff;border-color:transparent;box-shadow:var(--lens-sh);font-weight:900;font-size:clamp(12px,3.6vw,14px);gap:7px;letter-spacing:-.01em}
.ctarow .c.primary>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.ctarow .c.primary svg{width:17px;height:17px;flex:0 0 auto;stroke-width:2}
.ctarow .c.primary.edit svg{stroke-width:2.1}
.ctarow .c:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.ctarow .c svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.9}
.ctarow .c.compact{flex:0 0 48px}
.ctarow .c.primary{flex:1 1 auto;min-width:0}
.ctarow .cta-pair{display:flex;flex:0 1 auto;min-width:0;height:48px;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);overflow:hidden}
.ctarow .cta-pair .c{flex:0 0 auto;height:100%;padding:0 15px;border:0;border-radius:0;background:transparent;box-shadow:none}
.ctarow .cta-pair .c+.c{border-left:1px solid var(--glass-line)}
.ctarow .cta-pair .c.compact{flex:0 0 auto;width:auto;padding:0 14px}
.ctarow .cta-pair .c.on{color:var(--gold)}
/* 좁은 폰(≤374px) — 리뷰 버튼 라벨이 잘리지 않게 옆 묶음을 줄인다: PNG 는 아이콘만(aria-label 유지), 칸 여백 축소 */
@media(max-width:374px){.ctarow .c.primary{min-width:94px;padding:0 10px}.ctarow .cta-pair .c,.ctarow .cta-pair .c.compact{padding:0 10px}.ctarow .c.export{flex-basis:auto}.ctarow .c.export span{display:none}}
.ctarow .c.export{flex-basis:62px;gap:4px;font-size:11px;letter-spacing:0}
.btn.review-entry-sm{height:40px;padding:0 18px;border-radius:999px;gap:6px;font-size:13px}
.btn.review-entry-sm svg{width:16px;height:16px;color:var(--muted)}
.sameplay-card{margin-top:12px;padding:12px;border:1px solid color-mix(in srgb,var(--info) 38%,var(--border));background:linear-gradient(115deg,color-mix(in srgb,var(--info) 8%,var(--surface2)),var(--surface) 72%);border-radius:14px}
.sameplay-head{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:11px}.sameplay-head>span{width:38px;height:38px;display:grid;place-items:center;color:var(--info);border:1px solid color-mix(in srgb,var(--info) 38%,var(--border));background:color-mix(in srgb,var(--info) 8%,var(--surface2));border-radius:50%}.sameplay-head svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8}.sameplay-head>div{min-width:0;display:flex;flex-direction:column;gap:2px}.sameplay-head b{font-size:13px;font-weight:900}.sameplay-head small{color:var(--muted);font-size:11.5px}
.sameplay-list{display:flex;flex-direction:column;margin-top:10px;border-top:1px solid var(--hairline)}.sameplay-row{width:100%;min-width:0;display:grid;grid-template-columns:36px minmax(0,1fr) 17px;align-items:center;gap:10px;padding:9px 2px;text-align:left;border-bottom:1px solid var(--hairline)}.sameplay-row:last-child{border-bottom:0;padding-bottom:1px}.sameplay-poster{width:36px;height:46px;display:grid;place-items:center;overflow:hidden;background-size:cover!important;background-position:center!important}.sameplay-poster .ph{font-size:12px;color:var(--faint)}.sameplay-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.sameplay-copy b,.sameplay-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sameplay-copy b{font-size:12px}.sameplay-copy small{color:var(--muted);font-size:11px}.sameplay-go{display:grid;place-items:center;color:var(--info)}.sameplay-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.sameplay-row:hover .sameplay-copy b{color:var(--info)}
.detail-memo-quick{width:100%;min-height:48px;display:grid;grid-template-columns:18px minmax(0,1fr) 16px;align-items:center;gap:10px;margin-top:8px;padding:7px 12px;border:1px solid var(--glass-line);border-radius:14px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);text-align:left;transition:border-color .15s,background-color .15s}
.detail-memo-quick>svg{width:17px;height:17px;fill:none;stroke:var(--muted);stroke-width:1.9}.detail-memo-quick>span{min-width:0;display:flex;align-items:baseline;gap:8px}.detail-memo-quick small{flex:none;color:var(--faint);font-size:11.5px;font-weight:700;white-space:nowrap}.detail-memo-quick b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:800}
@media(max-width:374px){.detail-memo-quick small{display:none}.detail-memo-share{padding:0 12px}}.detail-memo-quick>svg:last-child{width:14px;height:14px;stroke:var(--muted)}.detail-memo-quick:hover{border-color:var(--glass-line-hi)}.detail-memo-quick:active{transform:scale(.985)}
/* 키이스케이프 상세 진입 — 무광 카드 + 붉은 렌즈 아이콘, 상세 화면 밀도에 맞게 압축 */
.detail-keq-entry{width:100%;min-height:88px;display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:11px;margin-top:10px;padding:12px 12px 12px 13px;position:relative;isolation:isolate;overflow:hidden;color:var(--text);text-align:left;border:1px solid var(--border);background:var(--surface);transition:border-color .16s,transform .16s;border-radius:16px}
.detail-keq-icon{width:46px;height:46px;display:grid;place-items:center;color:#fff;background:var(--lens);box-shadow:var(--lens-sh);border-radius:14px}.detail-keq-icon svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8}
.detail-keq-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.detail-keq-copy small{font-size:11px;font-weight:800;color:var(--muted)}.detail-keq-copy b{font-size:15px;font-weight:900;letter-spacing:-.025em}.detail-keq-copy em{font-style:normal;font-size:11.5px;line-height:1.4;color:var(--muted);word-break:keep-all}
.detail-keq-go{display:flex;min-height:34px;align-items:center;gap:4px;padding:0 10px 0 12px;color:var(--text);border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);border-radius:999px}.detail-keq-go small{font-size:11.5px;font-weight:800;white-space:nowrap}.detail-keq-go svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.detail-keq-entry:hover{border-color:var(--glass-line-hi)}.detail-keq-entry:active{transform:scale(.988)}
/* 피드백 진입 — 테마 상세 히어로 툴바(편집·태그 옆). 히어로 아이콘 버튼과 같은 반투명 질감에 텍스트만 얹은 필 */
.iconbtn.hero.tfb-top{width:auto;border-radius:999px;gap:6px;padding:0 14px 0 12px;font-weight:700;font-size:12px;letter-spacing:-.01em;white-space:nowrap}
.iconbtn.hero.tfb-top svg{width:16px;height:16px}
.iconbtn.hero.tfb-top:active{transform:scale(.96)}
/* 테마 상세 운영자 코멘트 — 무광 카드. 운영자 표식(금색)만 표식·제목에 남긴다. 내용이 있을 때만 공개 화면에 나타난다. */
.admin-comment-card{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:start;gap:12px;margin-top:12px;padding:14px;border:1px solid color-mix(in srgb,var(--gold) 30%,var(--border));background:linear-gradient(115deg,color-mix(in srgb,var(--gold) 9%,transparent),transparent 70%),var(--surface);border-radius:16px}
.admin-comment-mark{width:38px;height:38px;display:grid;place-items:center;color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,transparent);border-radius:50%}.admin-comment-mark svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8}
.admin-comment-copy{min-width:0}.admin-comment-copy>div{display:flex;align-items:center;gap:9px;min-height:20px}.admin-comment-copy b{font-size:12px;font-weight:900;color:var(--gold)}.admin-comment-copy button{margin-left:auto;min-height:28px;padding:0 11px;color:var(--text);font-size:11.5px;font-weight:800;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi)}.admin-comment-copy p{margin:5px 0 0;color:var(--text);font-size:13px;line-height:1.65;white-space:normal;overflow-wrap:anywhere}
.admin-comment-sheet textarea.input{min-height:180px}.admin-comment-sheet-actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;margin-top:14px}.admin-comment-sheet-actions>.btn:only-child{grid-column:1/-1}.admin-comment-sheet-actions>.btn{width:100%}
.panel{margin-top:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:16px;position:relative}
.pcap{font-size:13.5px;letter-spacing:-.015em;color:var(--text);font-weight:800;margin-bottom:14px;display:flex;align-items:center;gap:8px}
/* 섹션 캡션 리더 — 스큐 액센트 틱(코너 브래킷과 같은 계열, HUD 섹션 라벨) */

.metric{display:flex;align-items:center;gap:12px;margin:11px 0}
.metric .ml{width:48px;font-size:12px;color:var(--muted)}
.metric .mv{margin-left:auto;font-family:var(--fn);font-size:10px;color:var(--faint);white-space:nowrap;flex:0 0 auto}
/* 상세 체감 지표 — 분류 문구 길이와 무관하게 같은 지름을 유지하고, 실제 점수만큼 테두리를 채우는 원형 링.
   무광 게이지 — 점수 색(hot)은 링에만, 안쪽은 평평한 면이고 발광·그림자는 쓰지 않는다. */
.sensepanel{overflow:hidden}
.sensegrid{display:grid;grid-template-columns:repeat(var(--sense-count),minmax(0,1fr));align-items:center;gap:8px;max-width:410px;margin:2px auto 0}
.sensegrid.count-4{grid-template-columns:repeat(2,minmax(0,108px));justify-content:center;row-gap:10px}
/* 5개(크라임씬 + 규모) — 3+2, 아랫줄 가운데 */
.sensegrid.count-5{grid-template-columns:repeat(6,minmax(0,1fr));row-gap:10px}.sensegrid.count-5>.senseorb{grid-column:span 2}.sensegrid.count-5>.senseorb:nth-child(4){grid-column:2/span 2}
.senseorb{display:flex;align-items:center;justify-content:center;min-width:0}
.sensering{position:relative;width:min(100%,108px);aspect-ratio:1;border-radius:50%;padding:4px;
  background:conic-gradient(from -90deg,var(--sense-color) 0 var(--sense-value),color-mix(in srgb,var(--sense-color) 13%,var(--surface3)) var(--sense-value) 100%)}
.sensering::before{content:"";position:absolute;inset:4px;border-radius:50%;
  background:var(--surface2);border:1px solid var(--border)}
.sensecore{position:absolute;z-index:1;inset:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;text-align:center;line-height:1}
.sensecore>span{font-size:clamp(10px,2.8vw,11px);font-weight:800;color:var(--muted);letter-spacing:.03em;white-space:nowrap}
.sensecore strong{display:flex;align-items:baseline;justify-content:center;margin:4px 0 3px;font-family:var(--fn);font-size:clamp(19px,6vw,28px);font-weight:850;letter-spacing:-.05em;color:var(--sense-color);white-space:nowrap}
.sensecore strong small{margin-left:2px;font-size:clamp(9px,2.4vw,10px);font-weight:700;letter-spacing:-.02em;color:var(--faint)}
.sensecore em{max-width:100%;font-size:clamp(10px,2.8vw,11px);font-weight:800;font-style:normal;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.view-enter .sensering{animation:senseRingIn .5s cubic-bezier(.2,.9,.3,1) both}
.view-enter .senseorb:nth-child(2) .sensering{animation-delay:.06s}.view-enter .senseorb:nth-child(3) .sensering{animation-delay:.12s}
@keyframes senseRingIn{from{opacity:0;transform:scale(.9) rotate(-5deg)}to{opacity:1;transform:none}}

/* ===== 장치:자물쇠 비율 — 체감 지표 패널 하단 스플릿 캡슐 (좌=장치 틸 / 우=자물쇠 골드) =====
   모바일·데스크탑 모두 아이콘+'장치·자물쇠' 텍스트+숫자.
   PNG 내보내기 경로엔 없음(달력·리뷰 내보내기 스타일과 무관) — box-shadow 사용 가능. */
.dlrcap{max-width:410px;margin:16px auto 10px} /* 하단 여백 — 패널 모서리와 바가 붙어 보이지 않게 */
.sensegrid+.dlrcap{margin-top:20px}
.dlr-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;padding:0 3px}
.dlr-side{display:inline-flex;align-items:center;gap:8px;min-width:0}
.dlr-side svg{width:18px;height:18px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.9}
.dlr-side.dev{color:var(--accent)} .dlr-side.lock{color:var(--gold)}
.dlr-side em{font-style:normal;font-size:11.5px;font-weight:800;letter-spacing:.01em}
.dlr-side b{font-family:var(--fn);font-size:21px;font-weight:800;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.dlr-bar{position:relative;height:14px;border-radius:999px;background:var(--surface3)}
/* 세그먼트 클래스는 dlrseg — 전역 .seg(세그먼트 버튼, padding·border)와 충돌하면 색 바만 22px로 커져 회색 트랙(14px)과 높이가 어긋난다 */
.dlr-bar .dlrseg{position:absolute;top:0;bottom:0;border-radius:999px}
.dlr-bar .dlrseg.dev{left:0;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 82%,#000),var(--accent))}
.dlr-bar .dlrseg.lock{right:0;background:linear-gradient(90deg,var(--gold),color-mix(in srgb,var(--gold) 80%,#7A5A10))}
/* 리뷰 시트 입력형 — 캡슐 슬라이더(노브 + 중앙 5:5 점선 눈금), 기본 미기록 */
.dlrrow{margin:13px 0 6px}
.dlr-input{display:flex;align-items:center;gap:10px;padding:6px 2px 2px}
.dlr-input .dlr-ic{display:inline-flex;flex:0 0 auto}
.dlr-input .dlr-ic svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9}
.dlr-input .dlr-ic.dev{color:var(--accent)} .dlr-input .dlr-ic.lock{color:var(--gold)}
.dlr-input .dlr-bar{flex:1;height:20px;touch-action:pan-y;cursor:pointer;user-select:none;-webkit-user-select:none} /* pan-y — .axbar 주석 참고 */
.dlr-bar .ctick{position:absolute;left:50%;top:-4px;bottom:-4px;border-left:1px dashed var(--border)}
.dlr-bar .knob{position:absolute;top:50%;width:26px;height:26px;border-radius:50%;background:var(--text);border:3px solid var(--surface);
  transform:translate(-50%,-50%);box-shadow:0 2px 10px rgba(0,0,0,.45),0 0 0 1px var(--border);z-index:1}
.dlr-bar .knob::after{content:"";position:absolute;inset:6px;border-radius:50%;background:conic-gradient(from 180deg,var(--accent) 0 50%,var(--gold) 50% 100%)}
.dlr-input:active .knob{box-shadow:0 2px 10px rgba(0,0,0,.45),0 0 0 6px color-mix(in srgb,var(--accent) 16%,transparent)}
.dlr-input.unset .dlr-bar::after{content:"눌러서 기록";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:10px;color:var(--faint);font-weight:700;letter-spacing:.06em}
/* ===== 상세 체감 지표·세부 평가 (2026-10-01 리디자인) — 시계 보조 다이얼처럼 가는 눈금 호 + 노브, 줄무늬 격자 오각형.
   색은 점수 색(--mc·good) 한 가지를 옅은 틴트로만, 발광·그림자 없이. 이전 디자인은 옛 마크업(.sensegrid·.radarsvg)이라 여기 규칙이 닿지 않는다.
   연출: mx-wait(시작 상태) → 화면에 들어오면 mx-play. 끝 상태는 클래스 없는 기본값이라 연출을 못 받아도 그대로 보인다. */
.mxpanel{--mx-ease:cubic-bezier(.22,1,.36,1)}
.mxpanel .pcap{margin-bottom:8px}
.mx-dials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:400px;margin:0 auto}
.mx-dials.count-1{grid-template-columns:minmax(0,118px);justify-content:center}
.mx-dials.count-2{grid-template-columns:repeat(2,minmax(0,118px));justify-content:center;gap:22px}
.mx-dials.count-4{grid-template-columns:repeat(2,minmax(0,108px));justify-content:center;gap:6px 26px}
.mx-dials.count-5{grid-template-columns:repeat(6,minmax(0,1fr))}.mx-dials.count-5>.mxdial{grid-column:span 2}.mx-dials.count-5>.mxdial:nth-child(4){grid-column:2/span 2} /* 3+2, 아랫줄 가운데 */
.mxdial{--mct:color-mix(in srgb,var(--mc) 82%,var(--text));min-width:0;display:flex;justify-content:center}
.mxdial svg{display:block;width:100%;max-width:118px;height:auto;overflow:visible}
.mx-track{fill:none;stroke:color-mix(in srgb,var(--mc) 16%,var(--surface3));stroke-width:5.5;stroke-linecap:round}
.mx-arc{fill:none;stroke:var(--mc);stroke-width:5.5;stroke-linecap:round;stroke-dasharray:var(--p) 100}
/* 끝점 — 값 자리에 그려 두고, 연출 때만 시작점에서 돌아 들어온다(--a = 시작점부터의 회전량) */
.mx-knob{transform-box:view-box;transform-origin:60px 60px}
.mx-knob circle{fill:var(--surface);stroke:var(--mc);stroke-width:2.4}
.mxdial text{font-family:var(--fb);text-anchor:middle}
.mx-k{font-size:10.5px;font-weight:600;fill:var(--muted);letter-spacing:.04em}
/* 숫자 — Sora Light, 소수는 한 단계 작게(유저 선택 2026-10-01) */
.mx-n{font-family:Sora,var(--fb);font-size:30px;font-weight:300;fill:var(--text);letter-spacing:-.04em}
.mx-nd{font-size:20px}
.mx-b{font-size:11px;font-weight:700;fill:var(--mct)}
/* 장치:자물쇠 — 다이얼 아래 가는 줄로 구분, 양끝에서 자라 비율 지점에서 만난다 */
.mxdlr{max-width:400px;margin:12px auto 2px;padding-top:13px;border-top:1px solid var(--hairline)}
.pcap+.mxdlr{margin-top:0;padding-top:0;border-top:0}
.mxdlr-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
.mxdlr-head span{display:inline-flex;align-items:center;gap:6px;min-width:0}
.mxdlr-head svg{width:16px;height:16px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.9}
.mxdlr-head .dev{color:var(--accent)}.mxdlr-head .lock{color:var(--gold)}
.mxdlr-head em{font-style:normal;font-size:12px;font-weight:650;color:var(--muted)}
.mxdlr-head b{font-family:Sora,var(--fb);font-size:19px;font-weight:300;line-height:1;font-variant-numeric:tabular-nums;color:var(--text)}
.mxdlr-bar{position:relative;height:6px;border-radius:999px;background:color-mix(in srgb,var(--text) 7%,transparent)}
.mxdlr-bar i{position:absolute;top:0;bottom:0;border-radius:999px}
.mxdlr-bar i.dev{left:0;width:calc(var(--v) * 10% - 2px);background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 50%,transparent),var(--accent));transform-origin:left center}
.mxdlr-bar i.lock{right:0;width:calc((10 - var(--v)) * 10% - 2px);background:linear-gradient(90deg,var(--gold),color-mix(in srgb,var(--gold) 50%,transparent));transform-origin:right center}
.mxdlr-bar[style*="--v:0"] i.lock,.mxdlr-bar[style*="--v:10"] i.dev{width:100%}
/* 세부 평가 — 가는 선 격자·옅은 단색 면·항목 이름만. 점수는 누르거나(모바일) 올리면(마우스) 그 축 말풍선으로 */
.mx-avg{margin-left:auto;display:inline-flex;align-items:baseline;gap:5px}
.mx-avg small{font-size:11.5px;font-weight:600;color:var(--faint)}
.mx-avg b{font-family:Sora,var(--fb);font-size:18px;font-weight:300;letter-spacing:-.02em;color:color-mix(in srgb,var(--vc) 75%,var(--text));font-variant-numeric:tabular-nums}
.mxradar-wrap{display:flex;justify-content:center;padding:2px 0 0}
.mxradar{display:block;width:100%;max-width:290px;height:auto;overflow:visible;touch-action:manipulation}
.mx-ring{fill:var(--surface);stroke:color-mix(in srgb,var(--text) 8%,transparent);stroke-width:.7;transform-box:view-box;transform-origin:0 0}
.mx-ring.alt{fill:color-mix(in srgb,var(--text) 2.5%,var(--surface))}
.mx-ring.out{stroke:color-mix(in srgb,var(--text) 14%,transparent)}
.mx-ax{stroke:color-mix(in srgb,var(--text) 7%,transparent);stroke-width:.7;transition:stroke .2s}
.mx-pg0{stop-color:var(--rcol);stop-opacity:.06}.mx-pg1{stop-color:var(--rcol);stop-opacity:.3}
.mx-poly{stroke:var(--rcol);stroke-width:1.5;stroke-linejoin:round;transform-box:view-box;transform-origin:0 0;transition:opacity .2s}
.mx-bead{fill:var(--bc,var(--rcol));stroke:var(--surface);stroke-width:1.6;transform-box:fill-box;transform-origin:center;transition:r .2s,opacity .2s}
.mx-pulse{fill:none;stroke:var(--bc,var(--rcol));stroke-width:1;opacity:0}
.mx-pulse.hot{animation:mxPulse .7s ease-out}
.mxradar text{font-family:var(--fb)}
.mx-lab{font-size:11.5px;font-weight:650;fill:var(--muted);transition:fill .2s,opacity .2s}
.mx-ls{font-size:8.5px;font-weight:500;fill:var(--faint)}
/* 점수 읽기 — 중심 판(무광) + 둘레 호 + 주행계 숫자 + 측정선 + 등고선. 모두 .hot(탭·호버)일 때만, 전이로 순서를 준다 */
.mx-val{pointer-events:none;visibility:hidden;transition:visibility 0s .25s}
.mx-val.hot{visibility:visible;transition:none}
.mx-iso{fill:none;stroke:color-mix(in srgb,var(--vc) 55%,transparent);stroke-width:.8;stroke-dasharray:1.6 2.6;opacity:0;transform-box:view-box;transform-origin:0 0;scale:.94;transition:opacity .25s,scale .25s}
.mx-val.hot .mx-iso{opacity:1;scale:1;transition:opacity .5s .25s,scale .7s var(--mx-ease) .2s}
.mx-meas{stroke:var(--vc);stroke-width:1.1;stroke-linecap:round;stroke-dasharray:100 100;stroke-dashoffset:100;transition:stroke-dashoffset .2s}
.mx-val.hot .mx-meas{stroke-dashoffset:0;transition:stroke-dashoffset .55s var(--mx-ease) .18s}
.mx-loupe{opacity:0;scale:.6;transform-box:view-box;transform-origin:0 0;transition:opacity .18s,scale .25s}
.mx-val.hot .mx-loupe{opacity:1;scale:1;transition:opacity .2s,scale .45s cubic-bezier(.3,1.45,.5,1)}
.mx-lp{fill:var(--surface);stroke:color-mix(in srgb,var(--text) 10%,transparent);stroke-width:.8}
.mx-lt{fill:none;stroke:color-mix(in srgb,var(--vc) 16%,transparent);stroke-width:2}
.mx-la{fill:none;stroke:var(--vc);stroke-width:2;stroke-linecap:round;stroke-dasharray:0 100;transition:stroke-dasharray .2s}
.mx-val.hot .mx-la{stroke-dasharray:var(--p) 100;transition:stroke-dasharray .9s var(--mx-ease) .12s}
.mx-odo text{font-family:Sora,var(--fb);font-size:17px;font-weight:400;fill:color-mix(in srgb,var(--vc) 55%,var(--text));text-anchor:middle;font-variant-numeric:tabular-nums}
.mx-col{transform:translateY(0);transition:transform .2s}
.mx-val.hot .mx-col{transform:translateY(calc(var(--n) * var(--st,18px) * -1));transition:transform calc(.7s + var(--k) * .18s) cubic-bezier(.16,1,.3,1) .1s}
.mx-lna{font-size:10.5px;font-weight:700;fill:var(--muted)}
html[data-theme=light] .mx-odo text{fill:color-mix(in srgb,var(--vc) 62%,#000)}
.mxradar .rhit{cursor:pointer;pointer-events:all}
.mxradar-wrap.has-hot .mx-lab:not(.hot),.mxradar-wrap.has-hot .mx-bead:not(.hot){opacity:.35}
.mx-ax.hot{stroke:color-mix(in srgb,var(--rcol) 70%,transparent)}
.mx-bead.hot{r:4.2}
.mx-lab.hot{fill:var(--text)}
.mxradar-wrap.has-hot .mx-poly{opacity:.5}
.mx-hint{margin:2px 0 0;text-align:center;font-size:11px;color:var(--faint)}
html[data-theme=light] .mxdial{--mct:color-mix(in srgb,var(--mc) 70%,#000)}
html[data-theme=light] .mx-avg b{color:color-mix(in srgb,var(--vc) 68%,#000)}
/* 리뷰 카드(작은 판) — 같은 도형을 좁은 칸에 맞게: 선·점·글자를 단위 안에서 키워 축소돼도 같은 무게로 보이게 */
.mxrv .mxradar-wrap{padding:0;flex:1;align-items:center}
.mxrv .rv-half:not(.sense){flex:1.3;display:flex;flex-direction:column;padding-left:6px;padding-right:6px}
.mxrv .rv-half:not(.sense) .rv-hcap{padding-left:4px}
.mxradar.compact{max-width:230px}
.mxradar.compact .mx-lab{font-size:14px}.mxradar.compact .mx-ls{font-size:10px}
.mxradar.compact .mx-poly{stroke-width:2.2}.mxradar.compact .mx-ring,.mxradar.compact .mx-ax{stroke-width:1}
.mxradar.compact .mx-bead{stroke-width:2.2}.mxradar.compact .mx-bead.hot{r:6}
.mxradar.compact .mx-odo text{font-size:20.5px}.mxradar.compact .mx-lna{font-size:14px}
.mxradar.compact .mx-lt,.mxradar.compact .mx-la{stroke-width:2.8}.mxradar.compact .mx-meas{stroke-width:1.6}
.mx-rvgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 4px;justify-items:center;align-items:center;height:calc(100% - 18px)}
.mx-rvgrid>:nth-child(5):last-child,.rv-sgrid>:nth-child(5):last-child{grid-column:1/-1} /* 지표 5칸(규모 추가) — 홀로 남는 마지막 칸은 가운데 */
.mx-rvgrid>.mxdial:nth-child(odd):has(+.mxhdlr),.rv-sgrid>.rv-ring:nth-child(odd):has(+.rv-hdlr){grid-column:1/-1} /* 장치:자물쇠 줄 바로 위에 홀로 남는 칸도 가운데 */
.mxdial.compact{flex-direction:column;align-items:center;gap:2px;width:100%}
.mxdial.compact svg{max-width:62px}
.mxdial.compact .mx-track,.mxdial.compact .mx-arc{stroke-width:8}
.mxdial.compact .mx-knob circle{stroke-width:3.4}
.mxdial.compact .mx-n{font-size:44px}
.mx-ck{font-size:10px;font-weight:600;color:var(--muted);line-height:1.2;white-space:nowrap}
.mx-cb{font-size:10px;font-weight:700;color:var(--mct);line-height:1.2;white-space:nowrap;letter-spacing:-.02em}
.mx-wait .mx-cb{opacity:0}.mx-play .mx-cb{animation:mxRise .5s var(--mx-ease) calc(var(--d) + .55s) both}
/* 320px 대 — 두 판을 위아래로: 오각형은 넓게, 체감 지표는 한 줄 4칸 */
@media(max-width:359px){.mxrv{flex-direction:column}.mxrv .mx-rvgrid{grid-template-columns:repeat(4,minmax(0,1fr));height:auto}.mxrv .mx-rvgrid>.mxdial:has(+.mxhdlr){grid-column:auto}}
/* 가로 장치:자물쇠 줄 — 다이얼 아래 한 줄 전체. 막대는 상세 .mxdlr-bar(연출 포함) 그대로 */
.mxhdlr{grid-column:1/-1;width:100%;max-width:240px;display:flex;align-items:center;gap:6px;min-width:0;margin-top:2px}
.mxhdlr .mxdlr-bar{flex:1;min-width:0}
.mxhdlr .n{display:flex;align-items:center;gap:3px;line-height:1;flex:0 0 auto}
.mxhdlr .n svg{width:12px;height:12px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2}
.mxhdlr .n.dev{color:var(--accent)}.mxhdlr .n.lock{color:var(--gold)}
.mxhdlr .n b{font-family:Sora,var(--fb);font-size:15px;font-weight:300;color:var(--text);font-variant-numeric:tabular-nums}
.mx-wait .mxhdlr .n b{opacity:0}.mx-play .mxhdlr .n b{animation:mxFade .35s ease both}
/* 시작 상태(화면 밖에서 대기) → 재생 */
.mx-wait .mx-arc{stroke-dasharray:0 100}
.mx-wait .mx-knob{transform:rotate(calc(var(--a) * -1));opacity:0}
.mx-wait .mx-n,.mx-wait .mx-b,.mx-wait .mx-lab,.mx-wait .mx-ring,.mx-wait .mx-bead,.mx-wait .mx-poly,.mx-wait .mxdlr-head b,.mx-wait .mx-avg b{opacity:0}
.mx-wait .mxdlr-bar i{transform:scaleX(0)}
.mx-play .mx-arc{animation:mxSweep 1s var(--mx-ease) var(--d) both}
.mx-play .mx-knob{animation:mxKnob 1s var(--mx-ease) var(--d) both}
.mx-play .mx-n{animation:mxFade .4s ease calc(var(--d) * .6) both}
.mx-play .mx-b{animation:mxRise .5s var(--mx-ease) calc(var(--d) + .55s) both}
.mx-play .mxdlr-head b,.mx-play .mx-avg b{animation:mxFade .35s ease both}
.mx-play .mxdlr-bar i{animation:mxGrow .9s var(--mx-ease) .3s both}
.mx-play .mx-ring{animation:mxRing .6s var(--mx-ease) calc((4 - var(--k)) * 60ms) both}
.mx-play .mx-poly{animation:mxBloom 1s var(--mx-ease) .2s both}
.mx-play .mx-bead{animation:mxPop .45s cubic-bezier(.3,1.5,.5,1) calc(.55s + var(--i) * 70ms) both}
.mx-play .mx-lab{animation:mxRise .5s var(--mx-ease) calc(.35s + var(--i) * 70ms) both}
@keyframes mxSweep{from{stroke-dasharray:0 100}to{stroke-dasharray:var(--p) 100}}
@keyframes mxKnob{from{transform:rotate(calc(var(--a) * -1));opacity:0}15%{opacity:1}to{transform:none;opacity:1}}
@keyframes mxRise{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes mxFade{from{opacity:0}to{opacity:1}}
@keyframes mxGrow{from{transform:scaleX(0)}to{transform:none}}
@keyframes mxRing{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
@keyframes mxBloom{from{opacity:0;transform:scale(.08)}35%{opacity:1}to{opacity:1;transform:none}}
@keyframes mxPop{from{opacity:0;transform:scale(0)}to{opacity:1;transform:none}}
@keyframes mxPulse{0%{opacity:.5;r:3}100%{opacity:0;r:12}}
@media (prefers-reduced-motion:reduce){.mx-pulse.hot{animation:none}.mx-val *,.mx-val.hot *{transition:none!important}}
/* ===== 리뷰 카드 리워크 — 픽토그램 메타라인 + 지표 패널(좌 레이더 ‖ 우 체감 2×2) =====
   클래스는 rv- 접두(전역 유틸 충돌 방지). 인원 픽토그램은 아카이브 archPplRow(.appl) 재사용 — 리뷰 카드 스코프 스타일. */
.revcard .appl,.rev-visit .appl{display:inline-flex;align-items:flex-end;gap:1.5px;color:var(--faint);vertical-align:-1px}
.revcard .appl b,.rev-visit .appl b{font-family:var(--fn);font-weight:400;font-size:10px;margin-left:1px;line-height:1;color:var(--faint)}
/* 헤더 우측 날짜 — 내 기록 .visitrow .vdate 와 동일한 모노 2단 스택.
   본 리뷰는 .revhead(닉네임·평점 두 줄)의 세로 가운데, 신고/PNG 버튼 왼쪽에 정렬. 재방문 행은 rv-head 우측. */
.rv-date{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;font-family:var(--fn);line-height:1.25;flex:0 0 auto;font-weight:400}
.rv-date i{font-style:normal;font-size:11px;color:var(--faint);letter-spacing:.02em}
.rv-date b{font-size:11.5px;font-weight:700;color:var(--muted)}
.rev-visit .rv-head .rv-date{margin-left:auto}
/* 지표 패널 */
.rv-ind{display:flex;gap:10px;margin-top:10px;align-items:stretch}
.rv-half{flex:1;min-width:0;border:1px solid var(--hairline);background:var(--surface2);border-radius:12px;padding:9px 10px 10px}
.rv-hcap{font-size:11px;color:var(--faint);font-weight:700;display:flex;align-items:center;gap:6px;margin-bottom:7px}
.rv-fig{display:flex;justify-content:center}
.rv-sgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 6px;justify-items:center;align-items:center;height:calc(100% - 16px)} /* 행 간격 — 오버랩 밴드 배지(-6px 돌출) 여유 */
/* 미니 체감 링 — 상세 sensering 의 축소판 */
.rv-ring{position:relative;width:60px;aspect-ratio:1;border-radius:50%;padding:3px;
  background:conic-gradient(from -90deg,var(--rc) 0 var(--rv),color-mix(in srgb,var(--rc) 14%,var(--surface3)) var(--rv) 100%)}
.rv-ring::before{content:"";position:absolute;inset:3px;border-radius:50%;
  background:var(--surface);border:1px solid var(--border)}
.rv-rc{position:absolute;inset:5px;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;line-height:1}
/* 분류 문구 배지 — 링 하단 테두리에 살짝 겹치는 알약(B3). 테두리 색은 링 색을 이어받는다. */
.rv-bpill{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);z-index:2;font-size:7.5px;font-weight:800;color:var(--text);
  background:var(--surface);border:1px solid color-mix(in srgb,var(--rc) 48%,transparent);border-radius:999px;padding:1.5px 7px;
  white-space:nowrap;line-height:1.3}
.rv-rc span{font-size:7.5px;font-weight:800;color:var(--muted);letter-spacing:.02em}
.rv-rc strong{font-family:var(--fn);font-size:17px;font-weight:800;letter-spacing:-.04em;color:var(--rc)}
/* 가로 장치:자물쇠 줄 — 링 아래 한 줄 전체(좌 장치 틸 ‖ 우 자물쇠 골드), 라벨 없이 아이콘+숫자. 막대는 상세 캡슐 .dlr-bar 공용 */
.rv-hdlr{grid-column:1/-1;width:100%;max-width:240px;display:flex;align-items:center;gap:6px;min-width:0}
.rv-hdlr .n{display:flex;align-items:center;gap:3px;font-family:var(--fn);font-weight:800;font-size:12px;line-height:1;flex:0 0 auto}
.rv-hdlr .n.dev{color:var(--accent)} .rv-hdlr .n.lock{color:var(--gold)}
.rv-hdlr .n svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2.2;flex:0 0 auto}
.rv-hdlr .dlr-bar{flex:1;min-width:0;height:10px}
/* 리뷰 푸터 — 좋아요(하트 필) 좌 · 신고 우. 헤어라인으로 본문과 구분 */
.rv-foot{display:flex;align-items:center;gap:8px;margin-top:11px;padding-top:9px;border-top:1px solid var(--hairline)}
.rv-likeb{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--glass-line);
  background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s,box-shadow .15s,transform .1s}
.rv-likeb svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.rv-likeb b{font-family:var(--fn);font-size:12px;font-weight:700;line-height:1}
.rv-likeb.on{color:#FF7B93;border-color:rgba(255,123,147,.5);background:rgba(255,123,147,.10);box-shadow:none}
.rv-likeb.on svg{fill:#FF7B93;stroke:#FF7B93;animation:rvlikepop .35s cubic-bezier(.2,.9,.3,1.4)}
.rv-likeb:not(.own):active{transform:scale(.94)}
.rv-likeb.own{cursor:default;color:var(--faint);border-style:dashed}
.rv-likeb.own svg{opacity:.8}
@keyframes rvlikepop{0%{transform:scale(.55)}55%{transform:scale(1.28)}100%{transform:scale(1)}}
html[data-theme=light] .rv-likeb.on{color:#D8446B;border-color:rgba(216,68,107,.45);background:rgba(216,68,107,.08);box-shadow:none}
html[data-theme=light] .rv-likeb.on svg{fill:#D8446B;stroke:#D8446B}
.rv-flagbtn{margin-left:auto;display:inline-flex;align-items:center;gap:4px;color:var(--faint);font-size:10px;font-weight:700;background:none;border:none;padding:4px 6px;cursor:pointer}
.rv-flagbtn svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:1.8}
.rv-flagbtn:hover{color:var(--muted)}
.rv-managebtn{display:inline-flex;align-items:center;gap:5px;padding:8px;border:1px solid var(--hairline);border-radius:8px;background:var(--surface);color:var(--muted);font-size:11px;cursor:pointer}
.rv-managebtn svg{width:14px;height:14px;fill:none;stroke:currentColor}
.review-manage-sheet .sh-head .hint{overflow-wrap:anywhere}
.review-manage-sheet .sh-head>div{min-width:0}
.review-manage-preview{padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface);max-height:240px;overflow:auto;overflow-wrap:anywhere}
.review-manage-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.review-manage-actions .btn{flex:1}
.review-manage-sheet .sh-body>.btn{width:100%;margin-bottom:12px}
/* 리뷰 정렬 — 섹션 헤더 우측 드롭다운 필(탐색 정렬 문법) + 옵션 시트 */
.section .h .rv-sortbtn{margin-left:auto;display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-family:var(--fb);font-size:12px;font-weight:800;letter-spacing:-.01em;text-transform:none;white-space:nowrap}
.rv-sortbtn svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2;flex:0 0 auto}
.rsort-opt{width:100%;display:flex;align-items:center;justify-content:space-between;min-height:50px;padding:0 6px;background:none;border:none;
  border-bottom:1px solid var(--hairline);color:var(--text);font-size:14.5px;font-weight:600;cursor:pointer;text-align:left}
.rsort-opt:last-child{border-bottom:none}
.rsort-opt.on{color:var(--accent);font-weight:800}
.rsort-opt svg{width:16px;height:16px;stroke:var(--accent);fill:none;stroke-width:2.2;flex:0 0 auto}

/* ===== 장르 분포 도넛 (프로필 — app.js genrePanelHTML) =====
   조각 색 토큰 — 라이트 테마 짝은 html[data-theme=light] 블록에. 어두운 surface 위에서 읽히는 중간 명도 8색 + 기타(회색) + 장르 없음(짙은 회색) */
:root{--gc1:#3FE0D0;--gc2:#E9A18B;--gc3:#FFCF5C;--gc4:#7EA6FF;--gc5:#C792EA;--gc6:#FF8A3C;--gc7:#6FE39B;--gc8:#F27EB2;--gcx:#5C6B7A;--gcn:#414E5B}
.gd-wrap{display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap;justify-content:center}
.gd-fig{position:relative;width:164px;height:164px;flex:0 0 auto}
.gd-fig svg{width:100%;height:100%;display:block;overflow:visible}
.gd-track{fill:none;stroke:var(--surface3);stroke-width:26;opacity:.55}
.gd-ring{fill:none;stroke:var(--hairline)}
.gd-seg{fill:none;stroke:currentColor;stroke-width:26;cursor:pointer;transition:opacity .22s,stroke-width .22s,filter .22s}
.view-enter .gd-seg{animation:gdIn .72s cubic-bezier(.3,.9,.3,1) both}
@keyframes gdIn{from{stroke-dasharray:0 465}} /* to = 각 조각의 인라인 dasharray */
.gd-seg.on{stroke-width:31}
.gd-seg.none{opacity:.6} /* 장르 없음 — 한 톤 가라앉혀 실제 장르와 구분 */
.gd-wrap.hassel .gd-seg:not(.on){opacity:.25}
.gd-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;pointer-events:none;text-align:center;padding:0 34px}
.gdc-v{font-family:var(--fn);font-size:26px;font-weight:700;color:var(--text);line-height:1}
.gdc-k{font-family:var(--fe);text-transform:uppercase;letter-spacing:.1em;font-size:9px;color:var(--faint);font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gd-legend{flex:1;min-width:172px;display:flex;flex-direction:column;gap:1px}
.gd-leg{display:flex;align-items:center;gap:7px;padding:0 8px 0 0;border-radius:7px;text-align:left;transition:.16s;border:1px solid transparent}
.gd-leg:hover{background:var(--surface2)}
.gd-pick{display:flex;align-items:center;gap:9px;flex:1;min-width:0;padding:6px 0 6px 8px;text-align:left;cursor:pointer}
.gd-pick i{flex:0 0 auto;width:9px;height:9px;border-radius:3px;background:var(--gc)}
.gd-leg .n{flex:1;min-width:0;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:.16s}
.gd-leg b{font-family:var(--fn);font-size:12px;font-weight:700;color:var(--gc)}
.gd-leg .c{flex:0 0 auto;font-family:var(--fn);font-size:11px;color:var(--faint);min-width:20px;text-align:right}
/* 테마 보기 — 프로필 머리 캡슐과 같은 유리 알약을 장르색으로 옅게 물들인다 */
.gd-open{display:none;align-items:center;gap:2px;flex:0 0 auto;height:26px;padding:0 7px 0 10px;border:1px solid color-mix(in srgb,var(--gc) 40%,transparent);border-radius:999px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--gc) 20%,var(--surface3)),color-mix(in srgb,var(--gc) 10%,var(--surface2)));
  box-shadow:var(--glass-hi);color:var(--text);font-size:10.5px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;transition:scale .2s cubic-bezier(.3,.7,.4,1),background .14s}
.gd-open svg{width:12px;height:12px;fill:none;stroke:var(--gc);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){.gd-open:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--gc) 28%,var(--surface3)),color-mix(in srgb,var(--gc) 15%,var(--surface2)))}}
.gd-open:active{scale:.95}
.gd-open:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.gd-leg.on .gd-open{display:flex;animation:gdOpenIn .22s cubic-bezier(.2,.9,.3,1) both}
@keyframes gdOpenIn{from{opacity:0;transform:translateX(-5px)}}
.gd-leg.on{border-color:color-mix(in srgb,var(--gc) 45%,var(--border));background:color-mix(in srgb,var(--gc) 8%,var(--surface2))}
.gd-leg.on .n{color:var(--text);font-weight:700}
.gd-leg.none .gd-pick i{background:transparent;border:1.5px solid var(--gc);box-shadow:none} /* 장르 없음 칩은 속 빈 사각 */
.gd-leg.none .n{color:var(--faint)}
.gd-wrap.hassel .gd-leg:not(.on){opacity:.5}
@media (prefers-reduced-motion:reduce){.view-enter .gd-seg,.gd-open{animation:none}}

/* ===== 이 테마를 플레이한 친구 (상세 카드 → 시트) ===== */
.avatar.sm{width:30px;height:30px;border-radius:8px;font-size:12px}
.fplayed{width:100%;display:flex;align-items:center;gap:13px;text-align:left;cursor:pointer;transition:.16s;background:var(--surface)}
.fplayed:hover{border-color:var(--glass-line-hi)}
.fplayed:active{transform:scale(.99)}
.fpav{display:flex;flex:0 0 auto}
.fpav .fpav-i{display:block;margin-left:-11px;position:relative;border-radius:9px;box-shadow:0 0 0 2px var(--surface)}
.fpav .fpav-i:first-child{margin-left:0}
.fplayed .fptx{flex:1;min-width:0;font-size:13.5px;color:var(--muted);line-height:1.35}
.fplayed .fptx b{color:var(--text);font-weight:800}
.fplayed .fpsub{display:block;font-size:11.5px;color:var(--faint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fplayed .fpgo{flex:0 0 auto;color:var(--faint)}
.fplayed .fpgo svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.sh-head .ttl .n{color:var(--muted);font-family:var(--fn);font-size:15px;margin-left:3px}
.fplist .fprow{padding:11px 0;border-top:1px solid var(--hairline)}
.fplist .fprow:first-child{border-top:0}
.fprow .hd{margin-top:2px}
.fprow .fpr{display:flex;align-items:center;gap:5px;flex:0 0 auto;margin-left:auto}
.fprow .fpr .rv{font-weight:700;font-size:12px;color:var(--muted)}
.fprow .fpr svg{flex:0 0 auto}

/* ===== 일행(함께 간 친구) 선택기 — 기록/리뷰 시트 공용 ===== */
.comp-pick{display:flex;flex-direction:column;gap:9px}
.comp-chips{display:flex;flex-wrap:wrap;gap:7px}
.comp-chips[hidden]{display:none}
.comp-chip{display:inline-flex;align-items:center;gap:7px;padding:4px 6px 4px 4px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:12.5px;color:var(--text)}
.comp-chip .avatar.sm{width:23px;height:23px;border-radius:6px;font-size:10px}
.comp-chip b{font-weight:800;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp-chip i{font-style:normal;font-size:8px;letter-spacing:.04em;color:var(--accent);padding:2px 4px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:4px;white-space:nowrap}
.comp-x{display:inline-flex;padding:2px;color:var(--faint);background:none;border:none;cursor:pointer;border-radius:5px;transition:.12s}
.comp-x:hover{color:var(--text);background:var(--surface3)}
.comp-x svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.3;stroke-linecap:round}
.comp-add{display:inline-flex;align-items:center;gap:7px;align-self:flex-start;padding:0 14px;min-height:36px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12.5px;font-weight:800;cursor:pointer;transition:.16s}
@media(hover:hover){.comp-add:hover{border-color:var(--glass-line-hi)}}
.comp-add.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
.comp-add svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.comp-drop{border:1px solid color-mix(in srgb,var(--accent) 42%,var(--border));border-radius:18px;background:var(--surface);overflow:hidden auto;max-height:min(390px,48vh);-webkit-overflow-scrolling:touch;box-shadow:0 18px 48px rgba(0,0,0,.38),0 0 0 1px color-mix(in srgb,var(--accent) 7%,transparent)}
.comp-drop[hidden]{display:none}
.field .comp-search{position:sticky;top:0;z-index:2;display:flex;align-items:center;height:50px;margin:0;padding:0 44px 0 42px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(14px);font-family:var(--fn);text-transform:none;letter-spacing:normal}
.comp-search>svg{position:absolute;left:16px;top:50%;width:16px;height:16px;transform:translateY(-50%);fill:none;stroke:var(--accent);stroke-width:2;pointer-events:none}.comp-search input{display:block;align-self:stretch;width:100%;height:100%;min-width:0;padding:0;border:0;outline:0;background:none;color:var(--text);font:700 12.5px var(--fn);line-height:normal}.comp-search input::placeholder{color:var(--faint);font-weight:600}.comp-search button{position:absolute;right:9px;top:50%;width:31px;height:31px;transform:translateY(-50%);display:grid;place-items:center;border:0;border-radius:10px;background:transparent;color:var(--muted)}.comp-search button:hover{background:var(--surface2);color:var(--text)}.comp-search button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.comp-opt{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 14px;border:none;border-top:1px solid var(--hairline);background:none;color:var(--text);cursor:pointer;font-size:13.5px;transition:.14s}
.comp-opt:first-child{border-top:none}
.comp-opt:hover{background:var(--surface2)}
.comp-opt.on{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.comp-opt .avatar.sm{width:30px;height:30px}
.comp-nm{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.comp-nm b{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp-nm small{font-size:10.5px;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp-ck{flex:0 0 auto;display:inline-flex;color:var(--accent)}
.comp-ck svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.comp-note{padding:13px 14px;color:var(--faint);font-size:12.5px;line-height:1.5}
.comp-group-head{display:flex;align-items:center;justify-content:space-between;min-height:37px;padding:9px 14px;background:color-mix(in srgb,var(--surface2) 86%,var(--surface));border-bottom:1px solid var(--hairline);font-size:10px;font-weight:850;letter-spacing:.06em;color:var(--muted)}
.comp-group-head.friend{border-top:1px solid var(--border)}
.comp-group-head button{display:inline-flex;align-items:center;gap:4px;padding:5px 7px;border:0;border-radius:999px;background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent);font:750 10.5px var(--fn);cursor:pointer}
.comp-group-head button svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}
.comp-quick-manual{padding:14px;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 9%,var(--surface)),var(--surface) 58%);display:flex;flex-direction:column;gap:11px;border-bottom:1px solid color-mix(in srgb,var(--accent) 34%,var(--border))}
.comp-quick-head{display:flex;align-items:center;gap:10px}.comp-quick-head>span{width:35px;height:35px;flex:0 0 auto;display:grid;place-items:center;border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,var(--surface2));color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 24%,var(--border))}.comp-quick-head>span svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}.comp-quick-head>div{display:flex;min-width:0;flex-direction:column;gap:2px}.comp-quick-head b{font-size:13px;letter-spacing:-.02em}.comp-quick-head small{font-size:10px;color:var(--muted)}
.comp-quick-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:9px}.comp-quick-fields label{display:flex;min-width:0;flex-direction:column;gap:5px}.comp-quick-fields label>span{padding-left:2px;color:var(--muted);font-size:10px;font-weight:850}.comp-quick-fields label em{color:var(--faint);font-size:9px;font-style:normal;font-weight:600}.comp-quick-manual .input{width:100%;height:42px;padding:9px 12px;border-radius:12px;background:color-mix(in srgb,var(--surface2) 78%,var(--surface));font-size:12px}.comp-quick-manual .input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 11%,transparent)}
.comp-quick-manual .comp-one-time{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:9px 11px;border:1px solid var(--hairline);border-radius:13px;background:color-mix(in srgb,var(--surface2) 82%,var(--surface));color:var(--text);cursor:pointer}.comp-quick-manual .comp-one-time>span{display:flex;min-width:0;flex-direction:column;gap:2px}.comp-quick-manual .comp-one-time b{font-size:11.5px}.comp-quick-manual .comp-one-time small{font-size:9.5px;color:var(--muted);line-height:1.35}
.comp-one-time input,.manual-one-time input{position:absolute;opacity:0;pointer-events:none}.comp-one-time>i,.manual-one-time>i{position:relative;display:block;width:38px;height:22px;flex:0 0 auto;border-radius:999px;background:var(--surface3);transition:background .15s}.comp-one-time>i::after,.manual-one-time>i::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--muted);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s,background .15s}.comp-one-time input:checked+i,.manual-one-time input:checked+i{background:var(--sw-lens);box-shadow:var(--sw-lens-sh)}.comp-one-time input:checked+i::after,.manual-one-time input:checked+i::after{transform:translateX(16px);background:var(--sw-knob);box-shadow:var(--sw-knob-sh)}
.comp-quick-actions{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:8px}.comp-quick-manual .comp-quick-actions button{height:40px;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);color:var(--muted);font:750 11px var(--fn);transition:.14s}.comp-quick-actions button:hover{border-color:var(--accentDim);color:var(--text)}.comp-quick-manual .comp-quick-actions button:last-child{border-color:transparent;background:var(--accent);color:#06110f;font-weight:850;box-shadow:0 8px 18px color-mix(in srgb,var(--accent) 19%,transparent)}.comp-quick-actions button:last-child:hover{filter:brightness(1.05)}.comp-quick-actions button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2}
html[data-theme=light] .comp-drop{box-shadow:0 20px 48px rgba(42,58,74,.18),0 0 0 1px rgba(11,156,143,.06)}
@media(max-height:720px){.comp-drop{max-height:clamp(210px,calc(100dvh - 450px),330px)}}

/* ===== 친구 메뉴 · 직접 등록 일행 관리 ===== */
/* 파티 | 기록 연동 | 내 일행 — 소셜 머리 유리 캡슐(.soc-acts)의 칸(.rha). 숫자는 옅은 알약, 미확인 연동 요청만 붉은 배지 */
.friend-menu-btn b{min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:color-mix(in srgb,var(--text) 9%,transparent);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-family:var(--fn);font-size:10px;letter-spacing:0}
.friend-menu-btn:disabled{cursor:not-allowed;opacity:.56}.friend-menu-btn[data-source-state=loading]:disabled{cursor:wait}.friend-menu-btn:disabled b{color:var(--faint)}
.friend-core-pending,.friend-core-error{display:flex;align-items:center;gap:11px;margin:10px 18px 6px;padding:11px 12px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface);color:var(--muted)}
.friend-partial-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.friend-partial-copy>span:empty{display:none}
.friend-core-pending>span,.friend-core-error>span{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;color:var(--faint)}.friend-core-pending>span svg,.friend-core-error>span svg{width:24px;height:24px}
.friend-core-pending>b{font-size:11px}.friend-core-error{border-color:color-mix(in srgb,var(--danger) 32%,var(--border));background:color-mix(in srgb,var(--danger) 5%,var(--surface))}.friend-core-error>div{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.friend-core-error b{color:var(--text);font-size:11.5px}.friend-core-error small{color:var(--muted);font-size:10px;line-height:1.4}.friend-core-error>button{height:34px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2);color:var(--text);font-size:10.5px;font-weight:850;white-space:nowrap}
.manual-kicker{font:700 11px var(--fb);letter-spacing:0;color:var(--muted);margin-top:3px} /* 시트 제목 아래 한 줄 — 한국어 보조 문구용 */
.manual-intro{position:relative;padding:16px 46px 16px 16px;margin-bottom:13px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);transition:opacity .18s ease,transform .18s ease}
.manual-intro b{font-size:14px}.manual-intro p{font-size:11.5px;color:var(--muted);line-height:1.5;margin:5px 0 0}
.manual-intro.is-dismissing{opacity:0;transform:translateY(-4px);pointer-events:none}
.manual-intro-x{position:absolute;top:9px;right:9px;width:28px;height:28px;padding:0;border:0;box-shadow:none;border-radius:50%;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center;transition:color .16s,background .16s,transform .16s}
.manual-intro-x:hover{background:color-mix(in srgb,var(--text) 7%,transparent);color:var(--text)}.manual-intro-x:active{transform:scale(.88)}
.manual-intro-x svg{width:15px;height:15px;stroke:currentColor;stroke-width:2;fill:none}
.manual-person{display:flex;align-items:center;gap:11px;padding:12px 6px;border-bottom:1px solid var(--hairline)}
.manual-person .avatar{width:42px;height:42px;flex:0 0 auto}.mp-copy{min-width:0;flex:1}.mp-name{display:flex;align-items:center;gap:6px}.mp-name b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.mp-name i{flex:0 0 auto;padding:2px 5px;border:1px solid color-mix(in srgb,var(--gold) 40%,var(--border));border-radius:5px;color:var(--gold);font-style:normal;font-size:8px;font-weight:850}.mp-copy p{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:3px 0}.mp-copy p.none{color:var(--faint)}.mp-copy small{font-size:9.5px;color:var(--accent)}
.mp-records{display:flex;align-items:center;gap:3px;width:max-content;max-width:none;height:25px;padding:0 7px;margin-left:-7px;border:0;border-radius:8px;background:transparent;color:var(--accent);font:800 9.5px var(--fn);text-align:left;cursor:pointer}.mp-records span{white-space:nowrap}.mp-records svg{width:12px;height:12px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2}.mp-records:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}
.mp-side{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.mp-side>div{display:flex;gap:6px}.mp-primary-actions{align-items:center}
.mp-link,.mp-theme{height:27px;padding:0 8px;border:0;border-radius:8px;display:flex;align-items:center;gap:4px;font:800 9.5px var(--fn);white-space:nowrap}.mp-link{background:color-mix(in srgb,var(--accent) 10%,var(--surface2));color:var(--accent)}.mp-link:hover{background:color-mix(in srgb,var(--accent) 17%,var(--surface2))}.mp-theme{background:color-mix(in srgb,var(--gold) 11%,var(--surface2));color:var(--gold)}.mp-theme:hover{background:color-mix(in srgb,var(--gold) 18%,var(--surface2))}.mp-link svg,.mp-theme svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2}
.mp-edit,.mp-delete{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--muted);cursor:pointer}.mp-delete{color:var(--danger)}.mp-edit svg,.mp-delete svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.manual-link-lead b{font-size:15px}.manual-link-lead p{font-size:11.5px;color:var(--muted);margin:5px 0 0}
.manual-link-warning{display:flex;align-items:flex-start;gap:10px;margin:14px 0;padding:13px;border-radius:12px;background:color-mix(in srgb,var(--danger) 8%,var(--surface2));color:var(--danger)}.manual-link-warning>span{display:flex;flex:0 0 auto;margin-top:1px}.manual-link-warning svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}.manual-link-warning p{font-size:11.5px;line-height:1.5;color:var(--muted);margin:0}.manual-link-warning b{color:var(--danger)}
.manual-link-list{display:flex;flex-direction:column;gap:7px;max-height:280px;overflow:auto}.manual-link-friend{width:100%;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);display:flex;align-items:center;gap:10px;text-align:left}.manual-link-friend .avatar{width:38px;height:38px}.manual-link-friend>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.manual-link-friend b{font-size:13px}.manual-link-friend small{font:10px var(--fn);color:var(--muted)}.manual-link-friend i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--surface2);color:transparent}.manual-link-friend i svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.5}.manual-link-friend.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.manual-link-friend.on i{background:var(--accent);color:#fff}
.manual-link-actions{display:flex;gap:9px;margin-top:14px}.manual-link-actions .btn{flex:1}.manual-link-actions .btn:disabled{opacity:.4}
.manual-editor{padding:14px;margin-bottom:10px;border:1px solid var(--accentDim);border-radius:14px;background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.me-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.me-head span{font-weight:900;font-size:14px}.me-head small{font-size:9px;color:var(--accent)}
.manual-editor label{display:block;margin-top:9px}.manual-editor label>span{display:block;font-size:10.5px;font-weight:800;color:var(--muted);margin:0 0 5px 2px}.manual-editor label em{font-style:normal;font-weight:500;color:var(--faint)}.manual-editor .input{height:41px}.me-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.manual-editor .manual-one-time{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding:11px 2px 1px;border-top:1px solid var(--hairline)}.manual-editor .manual-one-time>span{display:flex;flex-direction:column;gap:2px;margin:0}.manual-editor .manual-one-time b{color:var(--text);font-size:12px}.manual-editor .manual-one-time small{color:var(--muted);font-size:10px;font-weight:600}
.manual-empty{text-align:center;padding:34px 14px}.manual-empty .me-orbit{width:58px;height:58px;display:grid;place-items:center;margin:0 auto 14px;border:1px solid var(--accentDim);border-radius:18px;color:var(--accent);transform:rotate(-7deg);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.manual-empty .me-orbit svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.8}.manual-empty b{font-size:15px}.manual-empty p{font-size:11.5px;color:var(--muted);line-height:1.5;margin:6px auto 16px;max-width:260px}.manual-empty .btn{margin:auto}
html[data-theme=light] .manual-intro,html[data-theme=light] .manual-editor{box-shadow:0 8px 22px rgba(32,41,56,.06)}

/* ===== 친구·직접 등록 일행별 함께한 테마 일괄 선택 ===== */
.comp-theme-sheet{height:min(86vh,760px)}.comp-theme-sheet .sh-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-top:5px}
.comp-theme-person{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.comp-theme-person .avatar{width:39px;height:39px}.comp-theme-person>div{min-width:0}.comp-theme-person b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.comp-theme-person p{margin:3px 0 0;color:var(--muted);font-size:11.5px;line-height:1.35}
.comp-theme-note{margin:8px 1px 10px;color:var(--faint);font-size:9.5px;line-height:1.45}
.comp-theme-search{position:relative;display:block;margin-top:8px}.comp-theme-search>span{position:absolute;left:12px;top:50%;transform:translateY(-50%);display:grid;color:var(--faint);pointer-events:none}.comp-theme-search svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.comp-theme-search .input{height:40px;padding-left:36px;background:var(--surface2);font-size:12px}
.comp-theme-list{flex:1 1 auto;min-height:120px;display:flex;flex-direction:column;margin-top:8px;padding:0 2px 8px 0;overflow-y:auto;-webkit-overflow-scrolling:touch}.comp-theme-row.recrow{appearance:none;flex:0 0 auto;width:100%;height:auto;min-height:82px;max-height:none;padding:12px 4px;text-align:left;border:0;border-top:1px solid var(--hairline);border-radius:0;background:transparent;color:var(--text);font-family:var(--fn);cursor:pointer;transition:background .14s,transform .1s}.comp-theme-row.recrow:first-child{border-top:0}.comp-theme-row.recrow:active{transform:scale(.994);background:var(--surface2)}.comp-theme-row.recrow.on{background:color-mix(in srgb,var(--accent) 6%,transparent)}.comp-theme-row.recrow.planrow{border-radius:4px}.comp-theme-row .info{display:flex;flex-direction:column;justify-content:center;align-self:stretch;min-height:min-content}.comp-theme-row .info .t,.comp-theme-row .info .s{display:block}.comp-theme-row .info .t{white-space:normal;overflow:visible;text-overflow:clip;word-break:keep-all;overflow-wrap:anywhere}.comp-theme-row .rgrade{min-height:18px}.comp-theme-check{width:25px;height:25px;display:grid;place-items:center;border:1px solid var(--border);border-radius:50%;color:transparent;font-style:normal;background:var(--surface)}.comp-theme-check svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.5}.comp-theme-row.on .comp-theme-check{border-color:var(--accent);background:var(--accent);color:#07110F}
.comp-theme-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:150px;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--matte);text-align:center}.comp-theme-empty b{font-size:12px}.comp-theme-empty span{font-size:9.5px;color:var(--faint)}
.comp-theme-save{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) 126px;align-items:center;gap:10px;margin:0 -2px -7px;padding:10px 2px 7px;border-top:1px solid var(--hairline);background:var(--bg2)}.comp-theme-save>div{min-width:0;display:flex;flex-direction:column;gap:2px}.comp-theme-save b{font-size:12px}.comp-theme-save small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;color:var(--faint)}.comp-theme-save .btn{width:126px;height:42px}.comp-theme-save .btn:disabled{opacity:.38}
@media(max-width:359px){.manual-person{gap:8px;padding-left:2px;padding-right:2px}.manual-person .avatar{width:36px;height:36px}.mp-primary-actions{flex-direction:column;align-items:stretch}.mp-link,.mp-theme{height:25px;justify-content:center}.comp-theme-sheet .sh-body{padding-left:15px;padding-right:15px}.comp-theme-save{grid-template-columns:minmax(0,1fr) 112px}.comp-theme-save .btn{width:112px}}

/* ===== 함께 간 일행 카드 (테마 상세) ===== */
.withcard{display:flex;align-items:center;gap:13px;padding:13px 15px;margin-top:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.withcard .wc-av{display:flex;flex:0 0 auto}
.withcard .wc-av .wc-i{display:block;margin-left:-10px;position:relative;border-radius:9px;box-shadow:0 0 0 2px var(--surface)}
.withcard .wc-av .wc-i:first-child{margin-left:0}
.withcard .wc-tx{flex:1;min-width:0;font-size:13.5px;color:var(--muted);line-height:1.4}
.withcard .wc-tx b{color:var(--text);font-weight:800}
.withcard .wc-lbl{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--faint);font-weight:700;margin-bottom:3px}
.withcard.openable{appearance:none;width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .14s,background .14s,transform .1s}
.withcard.openable:hover{border-color:var(--glass-line-hi);background:var(--matte-tint)}
.withcard.openable:active{transform:scale(.992)}
.withcard .wc-go{display:grid;place-items:center;flex:0 0 auto;color:var(--faint)}
.withcard .wc-go svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
.plan-companions-theme{display:flex;align-items:center;gap:11px;margin-bottom:10px;padding:12px 13px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.plan-companions-theme>span{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}
.plan-companions-theme>span svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9}
.plan-companions-theme>div{min-width:0}.plan-companions-theme b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.plan-companions-theme p{margin:3px 0 0;color:var(--muted);font-size:11px;line-height:1.4}
.plan-companion-list{display:flex;flex-direction:column}.plan-companion-row{display:flex;align-items:flex-start;gap:11px;padding:12px 5px;border-top:1px solid var(--hairline)}.plan-companion-row:first-child{border-top:0}
.plan-companion-row>.avatar{width:42px;height:42px;flex:0 0 auto}.plan-companion-copy{min-width:0;flex:1}.plan-companion-copy>b{display:block;font-size:14px}.plan-companion-copy>small{display:block;margin-top:2px;color:var(--muted);font-size:11px}.plan-companion-copy>p{margin:6px 0 0;color:var(--text);font-size:11.5px;line-height:1.45}
.plan-companion-when{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.plan-companion-when span{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--border);border-radius:8px;background:var(--matte-tint);color:var(--muted);font-family:var(--fn);font-size:11px;font-weight:750}.plan-companion-when svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2}

/* 친구 시트 — 함께 간 테마 버튼 */
.friend-alias-form{margin:0 0 14px;padding:12px 13px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.friend-alias-form>label{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:7px;font-size:12px;font-weight:850;color:var(--text)}
.friend-alias-form>label span{font-size:11px;font-weight:650;color:var(--muted)}
.friend-alias-form>div{display:flex;gap:7px}.friend-alias-form .input{min-width:0;height:39px}.friend-alias-form .btn{flex:0 0 auto;height:39px;padding:0 15px}
.friend-alias-form>p{margin:7px 1px 0;color:var(--faint);font-size:11px;line-height:1.45;word-break:keep-all}
/* 친구·사용자 시트 — 머리(아바타·이름) + 렌즈 주 동작 한 개 + 무광 동작 목록(설정 묶음과 같은 한 줄 문법) */
.fs-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.fs-head>div{min-width:0;overflow-wrap:anywhere}
.fs-name{font-size:19px;font-weight:900;letter-spacing:-.02em}.fs-meta{margin-top:2px;color:var(--faint);font-family:var(--fn);font-size:12px}
.fs-list{margin-top:10px;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--matte)}
.fs-row{width:100%;min-height:52px;display:flex;align-items:center;gap:12px;padding:0 14px;color:var(--text);font-size:14px;font-weight:700;text-align:left;transition:background .14s}
.fs-row+.fs-row{border-top:1px solid var(--hairline)}
.fs-row>svg:first-child{width:30px;height:30px;flex:none;padding:7px;border-radius:50%;background:var(--tag-bg);color:var(--muted);fill:none;stroke:currentColor;stroke-width:1.9}
.fs-row>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fs-row>small{flex:none;color:var(--faint);font-size:12px;font-weight:700}
.fs-row .fs-go{flex:none;display:inline-flex;color:var(--faint)}.fs-row .fs-go svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.fs-row:active{background:var(--matte-tint)}@media(hover:hover){.fs-row:not(:disabled):hover{background:var(--matte-tint)}}
.fs-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px;border-radius:16px}
.fs-row:disabled{color:var(--muted);cursor:default}.fs-row:disabled>svg:first-child{opacity:.7}
.fs-danger{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px}.fs-danger .btn{min-width:0;padding:0 8px}
/* 기록 연동 승인 4지선다 — 좁은 폰(<380px)에선 같은 폭 4칸에 '승인 후 연동'이 안 들어가 글자 폭대로 나눈다 */
@media(max-width:379px){.segctl.fs-sync>button{flex:1 1 auto;padding-left:6px;padding-right:6px}}

/* ===== 파티 — 자주 함께 다니는 일행 묶음 ===== */
.pg-note{margin:0 1px 12px;color:var(--faint);font-size:11px;line-height:1.5;word-break:keep-all}
.pg-row{display:flex;align-items:center;gap:12px;width:100%;padding:13px 4px;border:0;border-top:1px solid var(--hairline);background:none;color:var(--text);text-align:left;cursor:pointer;transition:background .14s,transform .1s}
.pg-row:first-child{border-top:0}
.pg-row:active{transform:scale(.995);background:var(--surface2)}
.pg-av{display:flex;flex:0 0 auto}
.pg-av .wc-i{display:block;margin-left:-10px;position:relative;border-radius:9px;box-shadow:0 0 0 2px var(--surface)}
.pg-av .wc-i:first-child{margin-left:0}
.pg-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.pg-tx b{font-size:14.5px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-tx small{font-size:11px;color:var(--muted);font-family:var(--fn)}
.pg-go{flex:0 0 auto;display:grid;place-items:center;color:var(--faint)}
.pg-go svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
.pg-hero{display:flex;align-items:center;gap:12px;margin-bottom:4px;padding:13px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.pg-hero>div{min-width:0}
.pg-hero b{display:block;font-size:14px}
.pg-hero p{margin:3px 0 0;color:var(--muted);font-size:11.5px;line-height:1.45;word-break:keep-all}
.pg-theme-add{width:100%;margin-top:9px}
.pg-sec{display:flex;align-items:center;gap:8px;margin:18px 1px 4px;font-family:var(--fe);text-transform:uppercase;letter-spacing:.14em;font-size:11px;color:var(--faint);font-weight:700}
.pg-sec i{font-style:normal;color:var(--accent);font-family:var(--fn)}
.pg-empty{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:6px;padding:22px 14px;border:1px dashed var(--border);border-radius:11px;text-align:center}
.pg-empty b{font-size:12.5px}
.pg-empty span{font-size:10.5px;color:var(--faint);line-height:1.5;word-break:keep-all}
.pg-edit-actions{display:flex;gap:9px;margin-top:16px}
.pg-edit-actions .btn{flex:1}
.pg-edit-actions .btn.p{flex:1.4}
.pg-del{width:100%;margin-top:9px}
/* 일행 선택기 — 파티 일괄 선택 행 */
.comp-party .comp-party-av{display:flex;flex:0 0 auto}
.comp-party .comp-party-av .wc-i{display:block;margin-left:-12px;position:relative;border-radius:6px;box-shadow:0 0 0 2px var(--surface)}
.comp-party .comp-party-av .wc-i:first-child{margin-left:0}
.comp-theme-person.party .comp-theme-party-av{margin-right:1px}.comp-theme-person.party .comp-theme-party-av .wc-i{box-shadow:0 0 0 2px var(--surface2)}
/* 파티 소개(신기능 허브) */
.pgi-mark{display:grid;place-items:center}
.pgi-mark svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.9}
.pgi-mock{padding:4px 13px 6px;background:var(--bg)}
.pgi-mock .pg-row{border-top:0;cursor:default}
html[data-theme=light] .pg-hero{box-shadow:0 8px 22px rgba(32,41,56,.06)}

/* ===== LISTS / CARDS (friends, records) ===== */
.section{padding:16px 18px 4px}
.section .h{font-size:14px;letter-spacing:-.015em;color:var(--text);font-weight:800;display:flex;align-items:center;gap:8px}
.section .h .n{color:var(--accent);font-family:var(--fn)}
.urow{display:flex;align-items:center;gap:12px;min-height:68px;padding:12px 18px;border-top:1px solid var(--hairline)}
.urow .urow-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.avatar{width:42px;height:42px;border-radius:11px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;color:#08090B;position:relative;overflow:hidden}
.avatar.lg{width:64px;height:64px;border-radius:16px;font-size:24px}
.avatar.xl{width:96px;height:96px;border-radius:24px;font-size:34px}
.avatar.photo{background-size:cover;background-position:center;background-color:var(--surface3);border:1px solid var(--border)}
/* 나 탭 — 프로필 사진 편집 버튼 (아바타 + 펜 배지) */
.avatar-edit{position:relative;padding:0;flex:0 0 auto;display:block}
.avatar-edit .cam{position:absolute;right:-4px;bottom:-4px;width:24px;height:24px;border-radius:8px;background:var(--surface3);border:1px solid var(--border);display:flex;align-items:center;justify-content:center}
.avatar-edit .cam svg{width:12px;height:12px;stroke:var(--muted);fill:none;stroke-width:2}
.avatar-edit:active{transform:scale(.97)}
.urow .ui{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.urow .ui .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;font-size:15px}
.urow .ui .hd{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--fn);font-size:11.5px;color:var(--faint);margin-top:1px}
.urow .act{display:flex;align-items:center;gap:7px;flex:0 0 auto}
/* 관리자 유저 목록(실시간) — 헤더 집계 + 신규(24h) 강조 */
.admu-count{display:flex;align-items:center;gap:8px;padding:2px 2px 10px;font-size:13px;color:var(--muted);border-bottom:1px solid var(--hairline);margin-bottom:2px}
.admu-count b{color:var(--text);font-weight:900;font-size:15px}
.admu-count .admu-newn{color:var(--text)}
.admu-count .admu-sep{color:var(--faint)}
.admu-live{margin-left:auto;color:var(--faint);font-size:11px;font-weight:700}
.admu-new{display:inline-block;margin-left:7px;vertical-align:middle;font-size:11px;font-weight:850;color:var(--text);background:var(--tag-bg);border-radius:6px;padding:1px 6px}
.admu-row .act{align-items:center;gap:8px}
/* 시트 안 유저 행 — 이름·배지·가입 시각이 잘리지 않게: 좌우 여백은 시트 본문에 맞추고, 폭이 모자라면 버튼 묶음을 다음 줄 오른쪽으로 내린다 */
.admu-row{flex-wrap:wrap;gap:8px 10px;padding:12px 2px}.admu-row .urow-main{flex:1 1 170px;gap:10px}.admu-row .act{margin-left:auto}.admu-row .ui .nm{white-space:normal;overflow:visible}.admu-row .ui .hd{white-space:normal}
.admu-chev{display:inline-flex;color:var(--faint);flex:0 0 auto}
.admu-chev svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}
.admu-row.hasmain:hover .admu-chev{color:var(--text)}
.pill{display:inline-flex;align-items:center;justify-content:center;min-height:34px;font-size:11.5px;font-weight:800;padding:0 13px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);transition:color .14s,border-color .14s,scale .2s var(--ease-press);white-space:nowrap}.pill:active{scale:.96}
.pill.gold{--pc:var(--gold)}
.pill.gold:not(.tst){color:var(--pc);border-color:color-mix(in srgb,var(--pc) 40%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--pc) 22%,var(--surface3)),color-mix(in srgb,var(--pc) 11%,var(--surface2)))}
.pill.accent:not(.tst){color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)} /* 행의 주 동작(수락·친구 요청·승인) — 붉은 렌즈 */
@media(hover:hover){.pill.ghost:hover{border-color:var(--glass-line-hi)}}
.pill.done{color:var(--success);border-color:rgba(76,190,126,.3)}
.pill:disabled{opacity:.5;pointer-events:none}
/* ============================================================== 채팅 */
.unreadb{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;border-radius:9px;background:var(--p5);color:var(--paper);font-size:10px;font-weight:800;font-family:var(--fn);margin-left:5px}
/* 인생테마 별 — 제목 옆 골드 글로우 (텍스트 없음) */
.lifestar{fill:var(--life-star);stroke:none;filter:drop-shadow(0 0 5px rgba(255,207,92,.55));transform:rotate(-8deg);vertical-align:-1.5px;margin-left:5px;flex:0 0 auto}
/* 기록 없는 달 안내 (그리드 외 레이아웃) — cal-stage 테마 토큰 상속 */
/* 탈출 결과 3상 슬라이더 — 실패 | 미기록 | 성공 (스위치 감성 유지, 노브가 미끄러짐) */
/* 일정(미래 날짜) — 일정 파랑 */
.matchline.plan{color:var(--info)}
.dbadge,.planbadge{font-family:var(--fn);font-weight:800;color:var(--accent);border:1px solid rgba(63,224,208,.45);border-radius:4px;display:inline-block;transform:skewX(-8deg);text-shadow:0 0 8px rgba(63,224,208,.35)}
.dbadge{font-size:10.5px;padding:1px 6px;margin-left:4px;color:var(--info);border-color:color-mix(in srgb,var(--info) 45%,transparent);border-radius:var(--r-tag);transform:none;text-shadow:none} /* 기록 추가의 디데이 — 둥근 작은 태그(포스터 .planbadge 시그니처와 분리) */
.planbadge{font-size:9.5px;letter-spacing:.06em;padding:1px 6px;margin-left:6px;vertical-align:1px}
.planbadge.due{color:var(--p5);border-color:rgba(228,3,43,.55);text-shadow:0 0 8px rgba(228,3,43,.4);animation:duePulse 1.6s ease-in-out infinite}
@keyframes duePulse{0%,100%{opacity:1}50%{opacity:.45}}
/* 디데이 근접 열(熱) 팔레트 — 멀면 틸(기본), D-7~4 골드, D-3~1 오렌지, 당일은 크림슨 펄스 */
.dbadge.dd7,.planbadge.dd7{color:var(--gold);border-color:rgba(255,207,92,.5);text-shadow:0 0 8px rgba(255,207,92,.4)}
.dbadge.dd3,.planbadge.dd3{color:var(--dhot);border-color:rgba(255,138,60,.55);text-shadow:0 0 9px rgba(255,138,60,.45)}
.dbadge.dd0,.planbadge.dd0{color:var(--p5);border-color:rgba(228,3,43,.6);text-shadow:0 0 9px rgba(228,3,43,.5);animation:duePulse 1.6s ease-in-out infinite}
.planbadge.hero.dd7{box-shadow:0 0 14px rgba(255,207,92,.3)}.planbadge.hero.dd7+.dplandate{color:var(--gold)}
.planbadge.hero.dd3{box-shadow:0 0 14px rgba(255,138,60,.32)}.planbadge.hero.dd3+.dplandate{color:var(--dhot)}
.planbadge.hero.dd0{box-shadow:0 0 16px rgba(228,3,43,.38)}.planbadge.hero.dd0+.dplandate{color:var(--p5)}
@media(prefers-reduced-motion:reduce){.planbadge.due,.dbadge.dd0,.planbadge.dd0{animation:none}}
/* 날짜 미정 일정 [fb:fc705c62] — 디데이 대신 기간 딱지('10월 중'·'올해 중'). ddayTier 의 ' ddflex' — 한글 글꼴·점선 테두리, 임박 단계 색과 발광 없음 */
.ddflex{font-family:var(--fb);letter-spacing:0;text-shadow:none}
.ddflex:not(.ps-dd){border-style:dashed;border-color:color-mix(in srgb,currentColor 55%,transparent)}
.dbadge:is(.dd7,.dd3,.dd0){text-shadow:none;animation:none} /* 점멸·발광 없음 — 색만 남긴다 */
/* 예약/가격 행 (테마 상세) — 골드 HUD 라인 */
.bookrow{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 12px;padding:12px 12px 12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.bookmeta{display:flex;flex-direction:column;gap:5px;min-width:0}
.bookrow{flex-direction:column;align-items:stretch!important;gap:0;padding:4px 14px 14px}
.bookhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 0 8px}
.bookhead b{font-size:15px;font-weight:800;letter-spacing:-.02em}.bookhead small{font-size:11.5px;color:var(--faint);font-weight:600}
.bookrow .bookmeta{gap:0}
.bookrow .bookmeta>*{margin-top:0}
.bookrow .bookmeta>*+*{margin-top:10px;padding-top:10px;border-top:1px solid var(--hairline)}
.bookrow .bookmeta>.avweekbtn:first-child{margin-top:0}
.bookrow .bookmeta>.avweekbtn{max-width:none;width:100%;margin-top:12px;padding:8px 12px 8px 8px;min-height:52px;border:1px solid color-mix(in srgb,var(--success) 24%,var(--glass-line));border-radius:12px;background:linear-gradient(100deg,color-mix(in srgb,var(--success) 10%,transparent),transparent 62%),var(--glass-bg);box-shadow:var(--glass-hi);clip-path:none} /* 예약 가능 시간 — 초록 아이콘과 같은 결의 옅은 초록 유리(1차 모양 복원) */
/* 위치·예약 페이지 — 한 알약에 이어 붙인 유리 캡슐, 예약 페이지 칸만 금색(1차 리디자인 모양 복원, 2026-09-29 유저 지시) */
.bookrow .bookacts{flex-direction:row;margin-top:12px;gap:0;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);overflow:hidden}
.bookrow .bookacts:not(:has(button)){display:none}
.bookrow .bookacts>button{flex:1 1 0;min-width:0;height:44px;justify-content:center;padding:0 16px;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none;color:var(--text);font-size:13px;transition:background .15s}
.bookrow .bookacts>button+button{border-left:1px solid var(--glass-line)}
.bookrow .bookacts>button:active{transform:none;scale:none;background:color-mix(in srgb,var(--text) 6%,transparent)}
.bookrow .bookacts>button:focus-visible{outline:2px solid var(--focus);outline-offset:-3px;border-radius:999px}
.bookrow .bookacts .bookbtn{color:var(--gold);background:color-mix(in srgb,var(--gold) 11%,transparent)}
.bookrow .bookacts .bookbtn:active{background:color-mix(in srgb,var(--gold) 18%,transparent)}
html[data-theme=light] .bookrow .bookacts .bookbtn{background:color-mix(in srgb,#F6C049 22%,transparent);color:#7A5200;text-shadow:none;box-shadow:none}
html[data-theme=light] .bookrow .bookacts .bookbtn:active{background:color-mix(in srgb,#F6C049 32%,transparent)}
.bprice{display:flex;align-items:baseline;gap:5px;white-space:nowrap;flex:0 0 auto}
.bprice .bk{font-size:10.5px;color:var(--faint);font-family:var(--fe);letter-spacing:.08em}
.bprice b{font-size:18px;font-weight:800;color:var(--gold)}
/* 상세 가격 정책 — 인원 선택·평일주말·오픈룸·상황별 할인 */
.bookrow.rich{align-items:flex-start}

/* 테마 상세 · 시리즈 정보 — 기본 접힘, 추천 순서 보기에서 같은 단계를 한 묶음으로 표시 */
.theme-series-stack{display:flex;flex-direction:column;gap:10px;margin:14px 0 4px}.theme-series{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.theme-series-head{width:100%;min-height:72px;display:grid;grid-template-columns:42px minmax(0,1fr) 24px;align-items:center;gap:11px;padding:12px 14px;text-align:left}.theme-series-mark{width:42px;height:42px;display:grid;place-items:center;color:var(--gold);border-radius:50%;background:color-mix(in srgb,var(--gold) 14%,transparent)}.theme-series-mark svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8}.theme-series-head>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:3px}.theme-series-head b{overflow:hidden;text-overflow:ellipsis;font-size:15px;white-space:nowrap}.theme-series-head small{color:var(--muted);font-size:11px}.theme-series-chevron{display:grid;place-items:center;color:var(--faint);transition:transform .18s}.theme-series-chevron svg{width:17px;fill:none;stroke:currentColor;stroke-width:2}.theme-series.open .theme-series-chevron{transform:rotate(180deg)}
.theme-series-body{padding:13px;border-top:1px solid var(--hairline)}.theme-series-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.theme-series-tools p{min-width:0;color:var(--faint);font-size:11px;line-height:1.4}.theme-series-tools button{height:34px;flex:none;padding:0 12px;color:var(--text);font-size:12px;font-weight:800;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.series-theme-list,.series-step-themes,.series-unordered>div:last-child{display:flex;flex-direction:column;gap:7px}.series-theme-card{width:100%;min-width:0;min-height:62px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 9px;text-align:left;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.series-theme-card.current{border-color:color-mix(in srgb,var(--p5) 40%,var(--border));background:var(--matte-tint);box-shadow:none}.series-theme-poster{width:42px;height:48px;display:grid;place-items:center;overflow:hidden;border-radius:8px;background-size:cover!important;background-position:center!important}.series-theme-poster .ph{font-size:13px;color:var(--faint)}.series-theme-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.series-theme-copy b{font-size:12px;line-height:1.35;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}.series-theme-copy small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.series-theme-copy em{width:max-content;color:var(--warning);font-size:11px;font-style:normal}.series-theme-rating{width:max-content;max-width:100%;display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11px;line-height:15px}.series-theme-rating svg{width:15px;height:15px;flex:none}.series-theme-rating .score{color:var(--text);font-size:11.5px;font-weight:800}.series-theme-rating .grade{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-theme-rating.norating{color:var(--faint);font-size:11px}.series-theme-card>svg{width:15px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.series-current{padding:3px 7px;color:var(--muted);font-size:11px;font-weight:800;border-radius:6px;background:var(--tag-bg);white-space:nowrap}
.series-flow{display:flex;flex-direction:column;gap:7px}.series-flow-step{display:grid;grid-template-columns:27px minmax(0,1fr);align-items:start;gap:8px}.series-step-no{width:27px;height:27px;display:grid;place-items:center;color:var(--bg);font-family:var(--fn);font-size:11px;font-weight:900;border-radius:50%;background:var(--text)}.series-flow-arrow{height:16px;margin-left:5px;display:grid;place-items:center;width:17px;color:var(--faint);transform:rotate(90deg)}.series-flow-arrow svg{width:15px;fill:none;stroke:currentColor;stroke-width:2}.series-step-themes:has(.series-theme-card+.series-theme-card){padding:6px;border:1px solid var(--hairline);border-radius:14px;background:var(--matte-tint)}.series-unordered{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border)}.series-unordered>div:first-child{display:flex;align-items:baseline;gap:7px;margin-bottom:7px}.series-unordered>div:first-child b{font-size:11px}.series-unordered>div:first-child span{color:var(--faint);font-size:11px}
.pricebox{display:flex;flex-direction:column;gap:9px;min-width:0}
.ptop{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.pmain{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}
/* 인원 스텝퍼 — 선택 인원에 맞는 인당가를 봄 (기본 2인). 맨 앞(위)에 노출 [fb:dbc79100] */
.pcount{display:inline-flex;align-items:center;gap:1px;flex:0 0 auto;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);padding:3px}
.pc-b{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:17px;font-weight:800;line-height:1;color:var(--text);transition:.12s}
.pc-b:disabled{color:var(--faint);opacity:.35}
.pc-b:active:not(:disabled){background:var(--tag-bg)}
.pc-n{min-width:15px;text-align:center;font-family:var(--fn);font-size:15px;font-weight:800;color:var(--text)}
.pc-u{font-family:var(--fe);font-size:11px;font-weight:800;letter-spacing:.04em;color:var(--faint);margin:0 4px 0 1px}
/* 평일·주말 토글 — 인원 스텝퍼 옆, 선택한 요일의 가격만 표시 */
.pdaytog{flex:0 0 auto}
/* 가격 값 — 기본가(위)·할인가(아래) */
.pval{display:flex;flex-direction:column;gap:1px;min-width:0}
.pbase{font-size:15px;color:var(--gold);font-weight:700;white-space:nowrap;line-height:1.25}
.pbase b{font-size:17px;font-weight:800}
.pval .wk{font-size:9.5px;font-weight:800;color:var(--faint);font-family:var(--fe);letter-spacing:.05em;margin-right:2px}
.pval i{font-style:normal;color:var(--faint);margin:0 5px}
.pval .ut{font-size:10.5px;color:var(--faint);font-weight:700;margin-left:1px}
/* 팀 총액가 테마 — 인당가(큰 <b>) 아래 보조로 'n인 · 팀총액/팀' 한 줄 */
.pteam{display:block;font-size:11px;font-weight:700;color:var(--faint);white-space:nowrap;margin-top:1px;line-height:1.2}
.pteam .ut-team{font-size:10px}
.pval.discounting .pbase .pteam{display:none}
.pcut .pn .pteam{color:var(--faint);text-shadow:none;font-weight:700}
/* 할인 활성 — 기존가 사선 처리 + 할인가 강조(다른 색) */
.pval.discounting .pbase{font-size:12.5px;color:var(--faint);font-weight:700;position:relative;display:inline-block;width:fit-content}
.pval.discounting .pbase b{font-size:12.5px;font-weight:700;color:var(--faint)}
.pval.discounting .pbase .ut{display:none}
.pval.discounting .pbase::after{content:"";position:absolute;left:-3px;right:-3px;top:48%;height:2px;background:var(--p5);transform:skewY(-9deg);box-shadow:0 0 6px rgba(228,3,43,.55)}
.pcut{display:none}
.pval.discounting .pcut{display:inline-flex;align-items:baseline;gap:6px;flex-wrap:wrap;min-width:0}
.pcut .pn{color:var(--p5);font-weight:800;font-size:15px;white-space:nowrap;text-shadow:0 0 12px rgba(228,3,43,.38)}
.pcut .pn b{font-size:19px;font-weight:900}
.pcut .ut{font-size:10.5px;color:var(--p5);opacity:.72;font-weight:700;margin-left:1px}
.pcut em{font-style:normal;font-size:10.5px;color:var(--faint);font-weight:600}
/* 오픈룸 배지 */
.openroom{flex:0 0 auto;font-family:var(--fe);font-size:9.5px;font-weight:900;letter-spacing:.1em;color:var(--accent);border:1px solid rgba(63,224,208,.4);background:rgba(63,224,208,.1);padding:3px 8px;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.openroom:not(.avslot){font-family:inherit;font-size:11px;font-weight:800;letter-spacing:0;color:var(--text);border-color:var(--glass-line);background:var(--glass-bg);border-radius:var(--r-tag);clip-path:none} /* 오픈룸 표시 — 둥근 작은 유리 태그(누르면 설명). 예약 시간 칩(.avslot.openroom)은 기존 모양 유지 */
.openroom[data-act]{line-height:1.2;transition:background .14s,border-color .14s,transform .14s}.openroom[data-act]:not(.avslot):hover{border-color:var(--glass-line-hi)}.openroom[data-act]:not(.avslot):focus-visible{outline:2px solid var(--focus);outline-offset:2px}.openroom[data-act]:active{transform:scale(.96)}
.openroom-info-sheet .sh-body{padding-top:8px}.openroom-info-copy{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.openroom-info-copy .openroom{margin-top:2px}.openroom-info-copy p{margin:0;color:var(--text);font-size:13px;font-weight:650;line-height:1.65;word-break:keep-all}.openroom-info-sheet .sh-body>.btn{width:100%;margin-top:14px}
/* 혼방 가능 칩 — 바로 노출하지 않고 인원을 1인으로 내렸을 때만 인원 스텝퍼 오른쪽에 작게 표시(스포일러 방지) [fb:aac5c567][fb:dbc79100]
   스텝퍼와 같은 둥근 알약 + 가능=초록 옅은 틴트·체크 (2026-09-30) */
.mixchip{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 11px 0 9px;border-radius:999px;font-family:var(--fb);font-size:12px;font-weight:800;letter-spacing:0;white-space:nowrap}
.mixchip.on{color:var(--success);border:1px solid color-mix(in srgb,var(--success) 34%,transparent);background:color-mix(in srgb,var(--success) 11%,transparent)}
.mixchip.on::before{content:"";flex:0 0 auto;width:12px;height:12px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.3 5 8.6l4.5-5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.3 5 8.6l4.5-5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.mixchip[hidden]{display:none}
.pmixyes{align-self:center;flex:0 0 auto}
/* 혼방 불가 — 1인으로 내렸을 때 가격 자리에 뜨는 빨간 글씨 [fb:987a0a97] */
.pbase .pnomix{color:var(--p5);font-family:var(--fb);font-weight:800;font-size:14px;letter-spacing:.02em;word-spacing:normal;white-space:nowrap;text-shadow:0 0 10px rgba(228,3,43,.35)} /* 테두리 없는 글씨만(유저 지정) — 가격 칸 mono 상속만 끊음 */
/* 폐업 테마 — 가격 정보 줄을 대체하는 빨간 안내 [fb:759c07cd] */
.closednote{align-self:flex-start;color:var(--p5);font-weight:800;font-size:15px;letter-spacing:.01em;text-shadow:0 0 10px rgba(228,3,43,.35)}
/* 미오픈 안내 — 아직 오픈 전 테마(앰버) [fb:ed624d2c] */
.closednote.preopen{color:var(--gold);text-shadow:0 0 10px rgba(255,207,92,.35)}
/* 폐업 예정 안내 — 가격·예약은 유지하되 마지막 운영일을 앰버로 명확히 표시 [fb:8a989ede] */
.closednote.closing{color:var(--gold);font-size:13px;text-shadow:0 0 10px rgba(255,207,92,.28)}
/* '혼방가 없음' 보조 라벨(혼방가 없는 2인 테마) — 부재 안내라 강조 대신 흐린 톤 */
.pteam.psolo{color:var(--faint);font-family:var(--fb);letter-spacing:0;word-spacing:normal}
/* 혼방 정보 정정 제보 버튼 — 혼방 미상 테마의 '혼방가 없음' 옆, 실제 혼방 가능 여부를 알릴 수 있는 창구 [fb:8ed0b5a9] */
.pmixreport{display:inline-flex;align-items:center;gap:5px;height:26px;margin-top:6px;padding:0 10px 0 8px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-family:var(--fb);font-size:11px;font-weight:750;letter-spacing:0;word-spacing:normal;white-space:nowrap;transition:.14s}
.pmixreport::before{content:"!";display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;border:1px solid currentColor;border-radius:50%;font-size:9px;font-weight:900;line-height:1;flex:0 0 auto}
.pmixreport:active{transform:scale(.95)}
/* 상황별 할인 버튼(칩) — 누르면 위 가격이 할인 표시로 전환 */
.pdiscs{display:flex;flex-wrap:wrap;gap:6px}
.pconditions,.punknown{font-size:12px;color:var(--muted);line-height:1.6;white-space:pre-line;overflow-wrap:anywhere}
.pconditions{margin:0}
.ppackage{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--line);padding-top:12px;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.ppackage small{color:var(--muted);font-size:12px}
.pdisc:disabled{opacity:.45;cursor:default}
/* 할인 칩 — 스텝퍼·평일/주말과 같은 둥근 알약. 할인=금 옅은 틴트 + 빈 체크 칸, 고르면 붉은 렌즈(현재 선택)에 흰 체크 (2026-09-30) */
.pdisc{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 13px 0 9px;border:1px solid color-mix(in srgb,var(--gold) 30%,transparent);border-radius:999px;background:color-mix(in srgb,var(--gold) 8%,transparent);color:color-mix(in srgb,var(--gold) 82%,var(--text));font-size:12.5px;font-weight:750;transition:background .14s,border-color .14s,color .14s}
.pdisc::before{content:"";flex:0 0 auto;box-sizing:border-box;width:16px;height:16px;border:1.5px solid color-mix(in srgb,currentColor 55%,transparent);border-radius:50%;transition:.14s}
.pdisc:active{transform:scale(.97)}
.pdisc.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
.pdisc.on::before{border-color:#fff;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.3 5 8.6l4.5-5' fill='none' stroke='%23E4032B' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/10px no-repeat}
@media(hover:hover){.pdisc:not(.on):not(:disabled):hover{border-color:color-mix(in srgb,var(--gold) 50%,transparent)}}
.bookopen{display:flex;align-items:baseline;gap:6px;min-width:0}
.bookopen span{font-size:11.5px;font-weight:700;color:var(--faint);white-space:nowrap;flex:0 0 auto}
/* 예약 오픈 규칙 라벨은 좁은 폭에서도 오픈 시각이 잘리지 않게 줄바꿈(말줄임 금지). 한글은 어절 단위로만 끊음 */
.bookopen b{min-width:0;font-size:12px;color:var(--text);font-weight:800;white-space:normal;word-break:keep-all;line-height:1.3}
.bookopen.live{display:grid;grid-template-columns:22px minmax(0,auto);grid-template-areas:"ico copy" "ico left";align-items:center;column-gap:7px;row-gap:2px;width:fit-content;max-width:100%;padding:8px 12px 8px 9px;border:1px solid color-mix(in srgb,var(--info) 34%,var(--border));background:color-mix(in srgb,var(--info) 8%,var(--surface));border-radius:12px;color:var(--info)}
.bookopen.live .bo-ico{grid-area:ico;display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px;width:22px;height:22px;background:color-mix(in srgb,currentColor 14%,transparent);border-radius:50%}
.bookopen.live .bo-ico svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.15}
.bookopen.live .bo-copy{grid-area:copy;display:grid;gap:2px;min-width:0}
.bookopen.live .bo-copy i{font-style:normal;font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap}
.bookopen.live .bo-copy b{display:flex;align-items:baseline;gap:5px;min-width:0;font-family:var(--fb);font-size:13px;font-weight:900;color:var(--text);line-height:1;white-space:nowrap;overflow:visible;text-overflow:clip}
.bookopen.live .bo-day{flex:0 0 auto;font-size:12px;font-weight:800;color:currentColor}
.bookopen.live .bo-time{flex:0 0 auto;font-family:var(--fb);font-size:15px;font-weight:900;letter-spacing:0;color:var(--text);font-variant-numeric:tabular-nums}
.bookopen.live em{grid-area:left;display:inline-flex;align-items:center;width:fit-content;font-style:normal;font-size:11px;font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums;color:currentColor;white-space:nowrap}
/* 남은 시간 단계 — 가까울수록 경고(호박)→주황→빨강, 열리면 초록. 면은 옅은 단색 틴트, 발광 없음 */
.bookopen.live.ro-near{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 40%,var(--border));background:color-mix(in srgb,var(--warning) 8%,var(--surface))}
.bookopen.live.ro-soon{color:var(--dhot);border-color:color-mix(in srgb,var(--dhot) 42%,var(--border));background:color-mix(in srgb,var(--dhot) 9%,var(--surface))}
.bookopen.live.ro-hot{color:var(--p5);border-color:color-mix(in srgb,var(--p5) 46%,var(--border));background:color-mix(in srgb,var(--p5) 10%,var(--surface))}
.bookopen.live.ro-open{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--border));background:color-mix(in srgb,var(--success) 8%,var(--surface))}
.bookbtn{display:inline-flex;align-items:center;gap:5px;height:36px;padding:0 14px;background:var(--gold);color:#08090B;font-weight:800;font-size:12.5px;border-radius:999px;white-space:nowrap;flex:0 0 auto;transition:scale .2s var(--ease-press)}
.bookbtn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}
.bookbtn:active{scale:.95}
.bookacts{display:flex;flex-direction:column;align-items:stretch;gap:7px;flex:0 0 auto}
/* 예약 시간 선택 → 상세 고정 요약. 뷰 안의 absolute dock이라 모바일 탭바 바로 위에 머물고,
   본문 하단 여백을 함께 늘려 마지막 콘텐츠를 가리지 않는다. */
.view-detail:has(.reservation-dock) .dbody{padding-bottom:126px}.reservation-dock{position:absolute;z-index:8;left:0;right:0;bottom:0;min-height:112px;display:grid;grid-template-columns:34px minmax(0,1fr) 108px;align-items:center;gap:9px;padding:10px 12px;border-top:1px solid color-mix(in srgb,var(--success) 44%,var(--border));background:color-mix(in srgb,var(--bg) 92%,transparent);box-shadow:0 -14px 34px rgba(0,0,0,.24);backdrop-filter:blur(18px)}.reservation-dock-mark{width:34px;height:34px;display:grid;place-items:center;color:var(--success);border-radius:50%;background:color-mix(in srgb,var(--success) 14%,transparent)}.reservation-dock-mark svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9}.reservation-dock-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.reservation-dock-copy small{color:var(--success);font-size:11px;font-weight:800}.reservation-dock-copy strong{min-width:0;display:flex;align-items:baseline;gap:7px;line-height:1.2}.reservation-dock-copy strong span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.reservation-dock-copy strong b{flex:none;color:var(--text);font-family:var(--fb);font-size:18px;font-variant-numeric:tabular-nums}.reservation-dock-copy em{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--faint);font-size:11px;font-style:normal;line-height:1.35;word-break:keep-all}.reservation-dock-actions{display:grid;gap:5px}.reservation-dock-actions button{width:100%;min-height:44px;padding:0 8px;font-size:12px;font-weight:850;line-height:1.2}.reservation-change,.reservation-retry{color:var(--text);border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi)}.reservation-book{display:flex;align-items:center;justify-content:center;gap:5px;color:#06110f;border-radius:12px;background:var(--success);border:1px solid var(--success)}.reservation-book svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.2}.reservation-book:disabled{color:var(--faint);border-color:var(--border);background:var(--surface2)}.reservation-dock-actions button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.reservation-dock.loading{border-top-color:var(--border)}.reservation-dock.loading .reservation-dock-mark{color:var(--muted);border-color:var(--border)}.reservation-dock.changed,.reservation-dock.stale{border-top-color:color-mix(in srgb,var(--warning) 54%,var(--border))}.reservation-dock.changed .reservation-dock-mark,.reservation-dock.stale .reservation-dock-mark{color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent)}.reservation-dock.error{border-top-color:color-mix(in srgb,var(--danger) 54%,var(--border))}.reservation-dock.error .reservation-dock-mark{color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent)}
.reservation-sheet-clear{min-height:44px;padding:0 7px;color:var(--muted);font-size:12px;font-weight:800;text-decoration:underline;text-underline-offset:3px}
.placebtn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:36px;padding:0 14px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-weight:800;font-size:12.5px;border-radius:999px;white-space:nowrap;transition:.15s}
.placebtn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
@media(hover:hover){.placebtn:hover{border-color:var(--glass-line-hi)}}
.placebtn:active{transform:scale(.95)}.placebtn svg{color:var(--muted)}
/* 테마 상세 매장 위치 — 시트를 열 때만 네이버 GL 지도를 로드한다. */
.location-sheet{max-height:92vh}
.location-sheet .sh-body{padding-top:4px}
.store-themes-sheet{max-height:min(82vh,720px)}.store-themes-sheet .sh-body{min-height:180px;padding-top:5px}.store-theme-lead{display:flex;flex-direction:column;gap:4px;margin-bottom:11px;padding:11px 12px;border-left:2px solid var(--accent);background:var(--surface2)}.store-theme-lead b{font-size:13px}.store-theme-lead span{color:var(--muted);font-size:9px;line-height:1.4}.store-theme-list{display:flex;flex-direction:column;gap:7px}.store-theme-card.current{cursor:default}.store-theme-card.current:disabled{opacity:1}.store-theme-state{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:20px;text-align:center;border:1px dashed var(--border)}.store-theme-state b{font-size:12px}.store-theme-state span{color:var(--faint);font-size:9px;line-height:1.45}.store-theme-state button{height:32px;margin-top:7px;padding:0 12px;border:1px solid var(--accentDim);background:rgba(63,224,208,.06);color:var(--accent);font-size:9px;font-weight:800}
.location-map{position:relative;height:clamp(268px,38dvh,320px);overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface);isolation:isolate}
.location-map-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;outline:none;transition:opacity .2s}
.location-map::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025)}
.location-pin{position:relative;width:40px;height:44px;display:flex;align-items:flex-start;justify-content:center;color:var(--p5);filter:drop-shadow(0 4px 6px rgba(0,0,0,.58)) drop-shadow(0 0 6px rgba(228,3,43,.25))}
.location-pin::after{content:"";position:absolute;left:50%;bottom:1px;width:9px;height:4px;border-radius:50%;background:rgba(0,0,0,.44);transform:translateX(-50%);filter:blur(1px)}
.location-pin svg{width:36px;height:36px;fill:var(--paper);stroke:currentColor;stroke-width:2.1}
.location-map-zoom{position:absolute;right:10px;top:10px;z-index:6;display:grid;overflow:hidden;border:1px solid rgba(255,255,255,.28);border-radius:12px;background:rgba(13,16,20,.88);box-shadow:0 5px 18px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:opacity .18s}
.location-map.ready .location-map-zoom{opacity:1;pointer-events:auto}
.location-map-zoom button{width:38px;height:37px;color:#F6F8FA;font-size:22px;font-weight:500;line-height:1;background:transparent}
.location-map-zoom button+button{border-top:1px solid rgba(255,255,255,.18)}
.location-map-zoom button:active{background:rgba(255,255,255,.15)}
.location-recenter{position:absolute;left:50%;bottom:12px;z-index:6;display:flex;align-items:center;gap:6px;height:36px;padding:0 12px;border:1px solid rgba(255,255,255,.3);border-radius:18px;background:rgba(13,16,20,.9);color:#F6F8FA;font-size:11.5px;font-weight:800;box-shadow:0 5px 18px rgba(0,0,0,.28);transform:translateX(-50%)}
.location-recenter[hidden]{display:none}
.location-recenter svg{width:15px;height:15px;fill:none;stroke:var(--p5);stroke-width:2.2}
.location-recenter:active{transform:translateX(-50%) scale(.96)}
.location-map-state{position:absolute;left:50%;top:50%;z-index:8;transform:translate(-50%,-50%);padding:7px 11px;border-radius:7px;background:rgba(8,9,11,.8);color:var(--muted);font-size:11px;font-weight:750;white-space:nowrap}
.location-map-state[hidden]{display:none}
.location-map.failed .location-map-canvas{opacity:.12;pointer-events:none}
.location-map.failed .location-map-zoom,.location-map.failed .location-recenter{display:none}
.location-info{display:flex;align-items:flex-start;gap:11px;padding:15px 2px 12px}
.location-info-pin{display:flex;align-items:center;justify-content:center;flex:0 0 34px;width:34px;height:34px;border-radius:50%;background:var(--tag-bg);color:var(--muted)}
.location-info-pin svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
.location-info>div{min-width:0;padding-top:1px}.location-info b{display:block;font-size:14px;font-weight:850;color:var(--text)}
.location-info p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.45;word-break:keep-all}
.location-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-bottom:4px}
.location-link{height:48px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:13.5px;font-weight:800;transition:.15s}
.location-link span{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;font-size:11px;font-weight:900}
.location-link.naver span{background:#03C75A;color:white}
.location-link.kakao span{background:#FEE500;color:#191919}
@media(hover:hover){.location-link:hover{border-color:var(--glass-line-hi)}}.location-link:active{transform:scale(.97)}
/* 예약 오픈 정보 없음 → 정보 자리의 '추가 요청' 유리 버튼. 라벨은 Pretendard(모노·장식 영문체 금지) */
.bookask{display:inline-flex;align-items:center;gap:9px;width:fit-content;max-width:100%;padding:7px 12px 7px 8px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);border-radius:12px;transition:border-color .16s,color .16s}
.bookask .ba-ico{display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;width:24px;height:24px;background:var(--tag-bg);border-radius:50%}
.bookask .ba-ico svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.15}
.bookask .ba-copy{display:grid;gap:2px;min-width:0;text-align:left}
.bookask .ba-copy i{font-style:normal;font-size:11px;font-weight:700;color:var(--faint);white-space:nowrap}
.bookask .ba-copy b{font-size:13px;font-weight:800;color:var(--text);line-height:1.2;white-space:nowrap}
.bookask .ba-plus{display:inline-flex;flex:0 0 auto}
.bookask .ba-plus svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2}
@media(hover:hover){.bookask:hover{border-color:var(--glass-line-hi);color:var(--text)}}
.bookask:active{transform:translateY(1px)}
/* 다가오는 일정 배너 (탐색 상단 고정 · 숨김 가능) — 예약 오픈 임박(.rosoon)과 같은 무광 섬(표면 한 톤·높이 37px)이되
   모서리는 바로 아래 검색창과 같은 12px 둥근 사각 — 높이 전체를 둥글린 알약은 과하게 둥글어 보임. 안쪽 D-n·닫기는 12-5=7px 동심 곡률.
   구분은 두 가지 — 임박이 둥근 아이콘 + 고정 주황이라면, 디데이는 왼쪽 D-n 딱지 + 근접 단계색(--dc)이 왼쪽에서 옅게 번지는 물듦.
   단계색: 멀면 틸 → D-7 골드 → D-3 주황 → 당일 크림슨. 글로우·기울임 없이 테두리·D-n 딱지·개수에만 쓴다 */
.ddaybar{--dc:var(--accent);display:flex;align-items:center;gap:9px;width:calc(100% - 36px);min-height:37px;margin:2px 18px 10px;padding:5px;border:1px solid color-mix(in srgb,var(--dc) 26%,var(--border));border-radius:12px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--dc) 10%,var(--surface)),var(--surface) 62%);color:var(--text);text-align:left;transition:scale .24s ease-out}
.ddaybar:active{scale:.99} /* 누르면 살짝 눌렸다 복원 — 임박 배너와 같은 감각 */
.ddaybar:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* 탐색 앱바 인라인 배치 — 로고와 알림 벨 사이 빈 공간에 일정 배너를 끼워 세로 공간 절약 (fb:adacea36) */
.appbar .ddaybar{flex:1 1 auto;min-width:0;width:auto;margin:0 10px;padding:5px}
/* 임박(.rosoon) 동반 시 appbar 가 flex-wrap — wrap 줄 배치는 flex-basis(자연 폭) 기준이라 긴 디데이가 로고·벨과 다른 줄로 밀림 → basis 0 으로 첫 줄 고정(남는 폭은 grow 로 채움) */
.appbar:has(.rosoon) .ddaybar{flex-basis:0}
/* D-n 딱지 — 임박 배너 아이콘(25px)과 같은 높이·물듦, 배너 모서리와 동심 곡률(12px - 여백 5px = 7px) */
.ddaybar .db-badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;height:25px;min-width:25px;padding:0 9px;border-radius:7px;font-family:var(--fn);font-size:11.5px;font-weight:800;letter-spacing:.01em;line-height:1;color:var(--dc);background:color-mix(in srgb,var(--dc) 15%,var(--surface))}
/* 배너 테마 목록 — 말줄임 대신 가로 순환: 넘치면 JS가 .mq(마퀴) 부여, reduced-motion 은 수동 가로 스크롤 */
.ddaybar .db-title{flex:1 1 auto;font-weight:800;font-size:13.5px;letter-spacing:-.02em;white-space:nowrap;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
.ddaybar .db-title::-webkit-scrollbar{display:none}
.ddaybar .db-tin{display:inline-block;white-space:nowrap}
.ddaybar .db-title.mq{overflow:hidden}
.ddaybar .db-title.mq .db-tin{animation:ddMarquee var(--mqd,7s) ease-in-out 1.2s infinite alternate;will-change:transform}
@keyframes ddMarquee{0%,10%{transform:translateX(0)}90%,100%{transform:translateX(var(--mq,0px))}}
@media(prefers-reduced-motion:reduce){.ddaybar .db-title.mq .db-tin{animation:none}}
/* 테마 2개 이상이 한 줄을 넘치면 "첫 제목 외 N" 축약 — 첫 제목만 말줄임, "외 N" 은 유지 (fb:1ec08939) */
.ddaybar .db-title.clamp{overflow:hidden;padding-right:5px}
.ddaybar .db-title.clamp .db-tin{display:flex;align-items:baseline;gap:5px;max-width:100%}
.ddaybar .db-title.clamp .db-lead{display:block;min-width:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.ddaybar .db-title.clamp .db-lead::-webkit-scrollbar{display:none}.ddaybar .db-title.clamp .db-lead-in{display:inline-block;white-space:nowrap}.ddaybar .db-title.clamp .db-lead.mq{overflow:hidden}.ddaybar .db-title.clamp .db-lead.mq .db-lead-in{animation:ddMarquee var(--mqd,7s) ease-in-out 1.2s infinite alternate;will-change:transform}
@media(prefers-reduced-motion:reduce){.ddaybar .db-title.clamp .db-lead.mq .db-lead-in{animation:none}.ddaybar .db-title.clamp .db-lead.mq{overflow-x:auto}}
.ddaybar .db-more{flex:0 0 auto;font-size:11.5px;font-weight:800;color:var(--muted)}
/* 디데이 배너 숨김 선택 시트 — 2단 설명형 버튼 */
.btn.g.hidechoice{width:100%;height:auto;padding:13px 16px;flex-direction:column;align-items:flex-start;gap:3px;text-align:left}
.btn.g.hidechoice .hc-t{font-size:14.5px;font-weight:800}
.btn.g.hidechoice .hc-s{font-size:11.5px;font-weight:500;color:var(--faint)}
/* 개수 — 임박 배너 개수(.rs-n)와 같은 20px 크기, D-n 딱지에 맞춘 둥근 사각·단계색 채움 */
.ddaybar .db-n{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;border-radius:6px;font-size:11px;font-weight:700;line-height:1;color:var(--ink);background:var(--dc)}
/* 닫기 — 배너 오른쪽 끝의 25px 칸(여백 5px, 배너 모서리와 동심 곡률 7px) */
.ddaybar .db-x{display:flex;align-items:center;justify-content:center;flex:0 0 auto;margin:0 0 0 auto;padding:6px;color:var(--faint);border-radius:7px;transition:color .16s,background .16s}
.ddaybar .db-x svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}
@media(hover:hover){.ddaybar .db-x:hover{color:var(--text);background:color-mix(in srgb,var(--text) 8%,transparent)}}
.ddaybar .db-x:active{color:var(--text);background:color-mix(in srgb,var(--text) 11%,transparent)}
/* 디데이 근접 단계 — 단계색 하나(--dc)만 바꾸면 테두리·물듦·D-n 딱지·개수가 함께 물든다. 당일 D-DAY 도 깜빡이지 않고 크림슨으로만 구분한다 */
.ddaybar.dd7{--dc:var(--gold)}.ddaybar.dd3{--dc:var(--dhot)}.ddaybar.dd0{--dc:var(--p5)}
.ddaybar.dd0 .db-n{color:var(--paper)}
/* 기록 리스트 일정 행 — 틸 엣지 + 은은한 배경 */
.recrow.planrow{background:linear-gradient(90deg,rgba(63,224,208,.06),transparent 60%);box-shadow:inset 2px 0 0 var(--accent);border-radius:4px}
/* 업데이트 내역 팝업 */
.updsec+.updsec{margin-top:20px;padding-top:18px;border-top:1px solid var(--hairline)}
.updhead{display:flex;align-items:center;margin-bottom:4px}
.upddate{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.updtitle{font-size:19px;font-weight:900;margin-bottom:12px}
.updlist{list-style:none;display:flex;flex-direction:column;gap:9px}
.updlist li{position:relative;padding-left:15px;font-size:13.5px;line-height:1.5;color:var(--text)}
.updlist li::before{content:"";position:absolute;left:3px;top:8px;width:5px;height:5px;border-radius:50%;background:var(--faint)}
/* 타임(시간표) 입력 — 칩 + 평일/주말 전환 */
.slotrow{display:flex;gap:10px;align-items:center}
.priceun{font-size:13px;color:var(--muted);flex:0 0 auto}/* 가격 입력 단위(원) */
.slotseg{flex:none}
/* 좁은 폰(갤럭시 플립·폴드 커버 등) — 평일·금요일·주말을 두 줄로 접거나 칸 밖으로 밀지 않고 한 줄에. 시간 입력칸(118px)+간격을 뺀 남은 폭에 맞춰
   칸 여백을 먼저, 그래도 모자라면 글씨를 줄인다. --slot-k = 보이는 라벨 글자 폭 합(em, 여유 포함) · --slot-n = 좌우 여백 개수 [fb:7779bafa] */
.slotrow:has(>.slotseg){container-type:inline-size}
.slotrow>.slotseg{--slot-k:3.6;--slot-n:4;flex-shrink:1;min-width:0}
.slotrow>.slotseg:has(>button:not([hidden])~button:not([hidden])~button:not([hidden])){--slot-k:6.3;--slot-n:6}
.slotrow>.slotseg>button{min-width:0;white-space:nowrap;padding-inline:clamp(3px,calc((100cqi - 142px - var(--slot-k)*13px)/var(--slot-n)),10px);font-size:clamp(10px,calc((100cqi - 142px - var(--slot-n)*3px)/var(--slot-k)),13px)}
.slotchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.slotchip{font-family:var(--fn);font-size:12.5px;font-weight:700;min-height:34px;padding:6px 11px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);transition:.13s}
.slotchip.on{color:#fff;background:var(--lens);border-color:transparent;box-shadow:var(--lens-sh)}
/* 운영자 MASTER 배지 */
.masterb{display:inline-block;font-family:var(--fe);font-size:9px;font-weight:800;letter-spacing:.18em;color:var(--paper);background:linear-gradient(135deg,#D90330,var(--p5deep));padding:2px 8px 2px 9px;margin-left:8px;vertical-align:4px;transform:skewX(-10deg);clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%);box-shadow:0 2px 10px rgba(228,3,43,.4);text-shadow:0 1px 2px rgba(0,0,0,.35)}
/* TESTER 배지 — MASTER 와 같은 슬랜트 언어, 틸(HUD 액센트) 팔레트 */
.masterb.tester{background:linear-gradient(135deg,#33D6C4,#17706A);color:#04201E;box-shadow:0 2px 10px rgba(63,224,208,.38);text-shadow:none}
/* 원정대 EXPEDITIONER — 긴 명칭은 자간을 줄이고, 다크 배경에서는 밝은 황갈색+짙은 잉크로 구분 */
.masterb.expeditioner{font-size:8px;letter-spacing:.1em;color:#25150B;background:linear-gradient(135deg,#D5A36C,#B47443);padding-left:7px;padding-right:6px;box-shadow:0 2px 7px rgba(126,76,39,.3);text-shadow:none}
/* 테스터 지정/해제 필 (관리자 전용 · 친구 검색 행) */
.pill.tst.on{color:var(--muted)} /* 테스터 지정(관리자) — 유리 알약, 지정된 상태는 해제 문구만 옅게 */
/* 미래 예정 테마 — 리뷰 CTA 잠금 표기 */
.ctarow .c.primary.locked{background:var(--glass-bg);color:var(--faint);border:1px solid var(--glass-line);box-shadow:var(--glass-hi);font-weight:800;font-size:clamp(11px,3.2vw,13px)}
/* 상세 히어로 D-day (예정 테마) */
/* 히어로 디데이 배지 — 부모 overflow:hidden(컬랩싱 클립)에 배지 글로우가 잘리지 않도록 패딩으로 여백 확보, 위치는 음수 마진으로 원복 */
.dplan{display:flex;align-items:center;gap:8px;margin:-4px -10px -8px;padding:10px}
.planbadge.hero{font-size:13px;padding:3px 10px;margin-left:0;box-shadow:0 0 14px rgba(63,224,208,.25)}
.dplandate{font-size:11px;color:var(--accent);opacity:.85}
/* 평점 미기록 복귀 — 스테퍼 옆 고스트 칩 */
.stepper button.rateclear{display:inline-flex;align-items:center;gap:4px;margin-left:auto;width:auto;height:28px;padding:0 9px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);color:var(--faint);font-size:11px;font-weight:700;white-space:nowrap;flex:0 0 auto;transition:.15s;height:32px;padding:0 11px}
.stepper button.rateclear[hidden]{display:none} /* hidden 속성이 display 규칙에 밀리지 않게 */
.rateclear svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2}
.rateclear:active{color:var(--text);border-color:var(--muted);transform:scale(.95)}
/* 일정 모드 평점 잠금 — 흐림 + 입력 차단 + 안내 */
.field.locked .stepper,.field.locked .rgauge,.field.locked .tri{opacity:.32;pointer-events:none;filter:saturate(.4)}
.field.locked>label::after{content:" · 다녀온 뒤 채워주세요";color:var(--accent);font-weight:600}
.toggle.locked{opacity:.32;pointer-events:none;filter:saturate(.4)} /* 인생테마 토글 잠금 — 토글은 .field 밖 */
/* 나 탭 '플레이할 테마' — 풀폭 틸 HUD 카드 */
.statcard.plan{grid-column:1 / -1;min-height:72px;display:flex;align-items:baseline;gap:10px}
.me-rate{display:flex;align-items:center;gap:12px}.me-rate>b{font-family:var(--fn);font-size:28px;font-weight:700;line-height:1}
.me-rate>span{flex:1;height:8px;overflow:hidden;border-radius:999px;background:var(--surface3)}.me-rate>span>i{display:block;height:100%;border-radius:999px}
.statcard.plan .v{color:var(--sc,var(--text))}
/* 오늘 '플레이 전' 토글 칩 (퀵애드 날짜 아래) */
.planchip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:12px;font-weight:800;transition:.15s}
.planchip.on{color:var(--text);border-color:color-mix(in srgb,var(--p5) 55%,var(--border));background:color-mix(in srgb,var(--p5) 13%,var(--surface2))} /* 켜짐 = 선택 — 붉은 기 */
.planchip .dbadge{opacity:.55}
.planchip.on .dbadge{opacity:1}
/* 달력 오늘 날짜 — P5 크림슨 슬랜트 칩 (숫자에만 밀착) */
.cal-stage.mobile.layout-grid .daynum.today{position:relative;color:#fff!important;z-index:1;font-weight:800;width:max-content}
.cal-stage.mobile.layout-grid .daynum.today::before{content:"";position:absolute;left:-5px;right:-5px;top:-2.5px;bottom:-2.5px;background:#E4032B;transform:skewX(-10deg) rotate(-2deg);border-radius:2.5px;z-index:-1;box-shadow:0 2px 9px rgba(228,3,43,.5)}
.tab .navdot{position:absolute;top:6px;left:calc(50% + 4px);min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--p5);color:var(--paper);font-size:9px;font-weight:800;font-family:var(--fn);line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--bg);z-index:2}
.notifbar.mbanner{margin:10px 18px 2px;width:calc(100% - 36px)} /* 모양은 공용 무광 배너(.mbanner) — 여기선 목록 위 자리만(button.mbanner 의 100% 폭보다 우선) */
.notifbar .go{flex:none;display:flex;color:var(--faint)}.notifbar .go svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.avatar.gicon{background:var(--surface3);color:var(--muted)}
.avatar.gicon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}
.chat-group-icon{object-fit:cover;background:var(--surface3);border:1px solid var(--hairline)}
.chat-room-head-icon{width:40px;height:40px;display:grid;place-items:center;flex:0 0 auto;margin-left:2px;margin-right:8px;padding:0;border:0;border-radius:11px;background:transparent;color:inherit;cursor:pointer;transition:background .14s,transform .14s}
.chat-room-head-icon .avatar{width:36px;height:36px;border-radius:10px}
.chat-room-head-icon .avatar.gicon svg{width:18px;height:18px}
.chat-room-head-icon:hover{background:var(--surface2)}
.chat-room-head-icon:active{transform:scale(.94)}
.chat-room-head-icon:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.chat-room-members-sheet .sh-body{padding:0 0 18px}
.chat-room-member{width:100%;text-align:left;background:transparent;color:var(--text)}
.chat-room-member .ui .nm{display:flex;align-items:center;gap:5px}
.chat-room-member .member-row-tags{margin-top:5px}
.chat-room-member-me{flex:0 0 auto;padding:3px 8px;border-radius:999px;background:var(--surface2);color:var(--muted);font-size:11px;font-weight:800}
.chat-room-member-go{display:grid;place-items:center;flex:0 0 auto;color:var(--faint)}
.chat-room-member-go svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9}
.gcount{font-family:var(--fn);font-size:11px;color:var(--faint);font-weight:600}
.muted-ic{display:inline-grid;place-items:center;width:14px;height:14px;margin-left:2px;vertical-align:-2px;color:var(--faint);font-style:normal}
.muted-ic svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.chatrow{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;gap:6px}
.chatrow .urow-main{align-self:stretch;min-height:44px}
.chat-room-menu{display:none;flex:0 0 44px;min-height:44px;padding:0;background:transparent;border:0;border-radius:8px;color:var(--muted)}
.chat-room-menu svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.chat-room-menu:hover{background:var(--surface2)}
.chat-room-menu:focus-visible,.chatrow .urow-main:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.chat-pinned-ic{display:grid;place-items:center;color:var(--muted);font-style:normal}
.chat-pinned-ic svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.chat-room-menu-sheet .sh-head .ttl{overflow-wrap:anywhere}
.chat-room-menu-actions{display:flex;flex-direction:column;gap:10px;padding-bottom:24px}
.chat-room-menu-actions .btn{justify-content:flex-start;min-height:48px;color:var(--text)}
.chat-room-menu-note{margin:0;color:var(--muted);font-size:12px}
.chatprev{width:100%;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.urow .ui .chatprev,.urow .ui .hd.txt{font-family:var(--fb)} /* 한국어 미리보기 — 아이디용 고정폭 글꼴(.urow .ui .hd) 대신 본문체 */
.chatmeta{min-height:42px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:4px;flex:0 0 auto}
.chatmeta .ct{font-family:var(--fn);font-size:10px;color:var(--faint)}
.searchbar.chat-searchbar .clr{width:30px;height:30px;display:grid;place-items:center;flex:0 0 30px;padding:0;border-radius:8px}
.chat-search-state{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;margin:4px 18px;padding:24px 18px;color:var(--muted);text-align:center}
.chat-search-state .ic{width:38px;height:38px;display:grid;place-items:center;margin-bottom:3px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface2);color:var(--muted)}
.chat-search-state .ic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9}.chat-search-state b{color:var(--text);font-size:13px}.chat-search-state span{font-size:10.5px;line-height:1.5;word-break:keep-all}.chat-search-state .btn{height:34px;margin-top:7px}
.chat-search-pulse,.chat-history-pulse{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--muted);border-radius:50%;animation:chat-search-spin .8s linear infinite}
@keyframes chat-search-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.chat-search-pulse,.chat-history-pulse{animation:none}}
.chat-search-summary{padding:11px 20px 7px;color:var(--faint);font-size:10.5px}.chat-search-summary b{color:var(--text);font-family:var(--fn)}
.chat-hit .gcount{display:inline-block;max-width:40%;overflow:hidden;text-overflow:ellipsis;vertical-align:-1px;white-space:nowrap}
/* 채팅 목록 — 안읽음 방은 크림슨 좌측 엣지 */
.chatrow.hasnew{background:linear-gradient(90deg,rgba(228,3,43,.07),transparent 55%);box-shadow:inset 2px 0 0 var(--p5)}
.chat-load-stage{flex:1;min-height:0;display:grid;place-items:center;overflow-y:auto}.chat-load-stage>.kh-spin,.chat-load-stage>.chat-load-block{width:100%}.chat-load-block{padding-top:36px;padding-bottom:36px}.chat-load-block .empty-actions .btn{min-width:104px}
.chat-connection-strip{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 14px;border-top:1px solid color-mix(in srgb,var(--warning) 38%,var(--border));border-bottom:1px solid color-mix(in srgb,var(--warning) 38%,var(--border));background:color-mix(in srgb,var(--warning) 8%,var(--surface));color:var(--text)}
.chat-connection-strip>span{display:flex;min-width:0;flex-direction:column;gap:2px}.chat-connection-strip b{font-size:11px}.chat-connection-strip small{color:var(--muted);font-size:9.5px;line-height:1.4}.chat-connection-strip>button{min-height:34px;padding:0 10px;border:1px solid color-mix(in srgb,var(--warning) 48%,var(--border));border-radius:8px;color:var(--warning);font-size:10.5px;font-weight:850;white-space:nowrap}.chat-connection-strip>button:disabled{cursor:wait;opacity:.58}
@media(max-width:359px){.chat-connection-strip{gap:7px;padding-left:10px;padding-right:10px}.chat-connection-strip small{font-size:9px}.chat-connection-strip>button{padding:0 8px}}
/* 채팅방 — 말풍선은 읽기 쉬운 단색(꼬리 쪽 모서리만 5px가 P5 서명), 조작부(날짜·반응·입력줄·머리 버튼)는 유리 */
.chatlog{padding:14px 14px 10px;display:flex;flex-direction:column;gap:2px;background:repeating-linear-gradient(115deg,transparent 0 22px,rgba(255,255,255,.013) 22px 23px)}
.chat-history{align-self:center;min-height:32px;display:flex;align-items:center;justify-content:center;margin:2px 0 8px;color:var(--faint);font-size:10px;text-align:center}
.chat-history[hidden]{display:none}.chat-history>button{height:32px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 11px;border:1px solid var(--hairline);border-radius:9px;background:color-mix(in srgb,var(--surface2) 88%,transparent);color:var(--muted);font-size:10.5px;font-weight:800}.chat-history>button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;transform:rotate(90deg)}
.chat-history.loading{gap:7px}.chat-history.error{gap:8px;color:var(--danger)}.chat-history.error>button{height:30px;padding:0 9px;border-color:color-mix(in srgb,var(--danger) 34%,var(--border));color:var(--danger)}.chat-history.done{min-height:24px;margin-bottom:5px}
.chatday{align-self:center;margin:12px 0 8px;padding:4px 12px;border-radius:999px;background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi)}
.chatday span{font-size:11.5px;font-weight:700;letter-spacing:-.01em;color:var(--muted)}
.chatsys{align-self:center;display:flex;align-items:center;gap:9px;font-size:11px;color:var(--faint);margin:7px 0;text-align:center;max-width:92%}
.chatsys::before,.chatsys::after{content:"";width:20px;height:1px;flex:0 0 auto;background:linear-gradient(90deg,transparent,var(--border))}
.chatsys::after{background:linear-gradient(90deg,var(--border),transparent)}
.msg{display:flex;align-items:flex-end;gap:7px;margin:2px 0;max-width:100%}
.msg.me{flex-direction:row-reverse}
.chat-user-avatar{width:28px;height:28px;padding:0;border:0;border-radius:9px;background:none;color:inherit;flex:0 0 auto;cursor:pointer}
.chat-user-avatar:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.msg .avatar{width:28px;height:28px;border-radius:9px;font-size:12px;flex:0 0 auto}
.avatar.sm{width:28px;height:28px;border-radius:9px;font-size:12px}
.avsp{width:28px;flex:0 0 auto}
.msg .mb{max-width:72%;min-width:0;position:relative}
.mname{font-size:10.5px;color:var(--muted);margin:4px 0 4px 2px;font-weight:800;display:flex;align-items:center}
.mname>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mname .chat-member-tags{flex-wrap:nowrap;margin-left:5px;overflow:hidden}.mname .member-tag{min-height:17px;padding:0 5px 0 4px;font-size:8px}.mname .member-tag i{width:4px;height:4px}
.bubble{padding:9px 13px;font-size:14px;line-height:1.45;word-break:break-word;white-space:pre-wrap}
.bubble{border-radius:18px}
.msg.them .bubble{background:var(--surface2);border:1px solid var(--hairline);border-top-left-radius:5px}
.msg.me .bubble{background:var(--p5);color:var(--paper);border-bottom-right-radius:5px}
.mmeta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto;margin-bottom:2px;padding:0}
.msg.them .mmeta{align-items:flex-start}
.mtime{font-family:var(--fn);font-size:10.5px;color:var(--faint)}
/* 읽음 표시 — 안 읽은 인원 수 · 전원 열람 체크(기울임·발광 없음) */
.readn{font-family:var(--fn);font-size:11px;font-weight:800;font-style:normal;color:var(--text);line-height:1;}
.readok{font-family:var(--fe);font-size:8px;letter-spacing:.12em;font-weight:700;font-style:normal;color:var(--gold);border:1px solid rgba(255,207,92,.45);border-radius:3px;padding:1px 5px;transform:skewX(-8deg);line-height:1.5}
/* 이모지 반응 — 말풍선 탭 → 피커, 칩 탭 → 토글 */
.rchips{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.msg.me .rchips{justify-content:flex-end}
.rchip2{display:inline-flex;align-items:center;gap:4px;height:32px;min-height:32px;padding:0 10px;font-size:13px;border-radius:999px;background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi);transition:scale .2s var(--ease-press)}
.rchip2 b{font-family:var(--fn);font-size:10.5px;font-weight:800;color:var(--muted)}
.rchip2.me{border-color:color-mix(in srgb,var(--p5) 50%,transparent);background:color-mix(in srgb,var(--p5) 12%,var(--surface2))} /* 내가 남긴 반응 = 선택 — 붉은 기 */
.rchip2.me b{color:var(--text)}
.rchip2:active{transform:scale(.92)}
.reactbar{position:absolute;bottom:100%;left:0;margin-bottom:7px;z-index:5;display:flex;gap:2px;padding:4px 6px;border-radius:999px;background:color-mix(in srgb,var(--surface3) 80%,transparent);border:1px solid var(--glass-line);box-shadow:var(--glass-hi),0 12px 30px -10px rgba(0,0,0,.6);-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);animation:reactIn .16s cubic-bezier(.2,.9,.3,1) both}
.msg.me .reactbar{left:auto;right:0}
@keyframes reactIn{from{opacity:0;transform:translateY(6px) scale(.9)}}
.reactbar button{width:34px;height:32px;font-size:17px;display:flex;align-items:center;justify-content:center;border-radius:999px;transition:.12s}
.reactbar button.me{background:color-mix(in srgb,var(--p5) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--p5) 50%,transparent)}
.reactbar button:active{transform:scale(1.25)}
.reactbar .rsep{width:1px;align-self:stretch;margin:3px 4px;background:var(--border)}
.reactbar .rtool{width:30px;color:var(--muted)}
.reactbar .rtool svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8}
.reactbar .rtool:active{color:var(--text)}
/* 삭제된 메시지 자리표시자 · 수정됨 표기 · 수정 모드 바 */
.msg .bubble.deleted{background:var(--surface2);color:var(--faint);font-style:italic;box-shadow:none;border:1px dashed var(--border)}
.edited{font-size:10.5px;font-style:normal;color:var(--faint)}
.editbar{display:flex;align-items:center;gap:8px;padding:7px 14px;background:var(--matte-tint);border-top:1px solid var(--border);font-size:12px;font-weight:700;color:var(--text);position:relative;z-index:3}
.editbar svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8}
.editbar .iconbtn{margin-left:auto;width:28px;height:28px}
@media(prefers-reduced-motion:reduce){.reactbar{animation:none}}
/* 입력 바 */
.chatbar{display:flex;align-items:flex-end;gap:8px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--bg);position:relative;z-index:3}

/* 입력창은 textarea — 줄바꿈/여러 줄에 맞춰 높이 자동 확장(JS chatInputGrow), 한 줄 44px 바닥, 최대 132px 후 내부 스크롤 */
.chat-compose{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.chat-input-shell{position:relative;min-width:0;background:var(--surface2);border-radius:22px}
.chatbar .input{position:relative;z-index:2;display:block;min-width:0;height:44px;min-height:44px;max-height:132px;padding:10px 16px;background:transparent;font-size:15px;font-family:inherit;line-height:1.45;resize:none;overflow-y:auto;border-radius:22px}
.chat-input-mirror{position:absolute;z-index:1;inset:0;overflow:hidden;padding:10px 16px;border:1px solid transparent;color:transparent;font-family:inherit;font-size:15px;line-height:1.45;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;pointer-events:none}
.chat-input-mirror mark{color:transparent;background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--p5) 18%,var(--surface3)) 0 5px,color-mix(in srgb,var(--p5) 8%,var(--surface2)) 5px 10px);box-decoration-break:clone;-webkit-box-decoration-break:clone}
.chat-spoiler-tools{display:flex;flex:0 0 auto;align-items:flex-end;min-height:44px}
.chat-spoiler-tools[hidden]{display:none}
.chat-spoiler-tools>button{border-radius:22px;height:44px;display:inline-flex;align-items:center;gap:5px;padding:0 9px;border:1px solid color-mix(in srgb,var(--p5) 38%,var(--border));background:color-mix(in srgb,var(--p5) 8%,var(--surface2));color:var(--text);font-size:10.5px;font-weight:850;white-space:nowrap}
.chat-spoiler-tools>button[data-remove="true"]{border-color:var(--border);background:var(--surface2);color:var(--muted)}
.chat-spoiler-tools svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
@media(max-width:479px){.chatbar.spoiler-selecting .sharebtn{display:none}}
.sendbtn{width:44px;height:44px;flex:0 0 auto;border-radius:50%;background:var(--p5);color:var(--paper);display:flex;align-items:center;justify-content:center;transition:scale .2s var(--ease-press)}
.sendbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9}
.sendbtn:active{scale:.94}
/* 공유 메뉴 버튼 (입력 바) — 유리 동그라미 */
.sharebtn{width:44px;height:44px;flex:0 0 auto;border-radius:50%;background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi);color:var(--text);display:flex;align-items:center;justify-content:center;transition:scale .2s var(--ease-press),border-color .14s}
.sharebtn svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.9}
.sharebtn:active{scale:.92}
/* 입력줄 아래 탭바가 이미 안전 영역만큼 띄우므로 입력줄은 한 번만(iOS 이중 여백) */
.frame:has(.tabbar) .chatbar{padding-bottom:10px}
/* 채팅방 머리 버튼 — 유리 동그라미 */
.view-chat .appbar .iconbtn{border-radius:50%;background:var(--glass-bg);border-color:var(--glass-line);box-shadow:var(--glass-hi);color:var(--text)}
/* 텍스트 채팅 스포일러 — 닫힌 DOM에는 원문을 넣지 않고 길이 구간만 해칭으로 표시한다. */
.chat-spoiler{--spw:8;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:min(calc(var(--spw) * .72em),12em);min-height:1.45em;margin:0 2px;padding:1px 6px;vertical-align:baseline;border:1px solid color-mix(in srgb,var(--p5) 25%,var(--border));color:var(--muted);background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--p5) 15%,var(--surface3)) 0 5px,color-mix(in srgb,var(--p5) 5%,var(--surface2)) 5px 10px);box-decoration-break:clone;-webkit-box-decoration-break:clone}
.chat-spoiler>span{width:min(calc(var(--spw) * .38em),6.5em);height:3px;background:currentColor;opacity:.28}
.chat-spoiler>b{font-size:8px;font-weight:900;letter-spacing:.04em;white-space:nowrap}
.chat-spoiler:focus-visible{outline:2px solid color-mix(in srgb,var(--p5) 62%,transparent);outline-offset:2px}
.chat-spoiler-open{padding:1px 3px;background:color-mix(in srgb,var(--p5) 9%,transparent);box-decoration-break:clone;-webkit-box-decoration-break:clone}
.msg.me .chat-spoiler{border-color:rgba(255,255,255,.34);color:rgba(255,255,255,.9);background:repeating-linear-gradient(-45deg,rgba(255,255,255,.18) 0 5px,rgba(70,0,16,.18) 5px 10px)}
.msg.me .chat-spoiler-open{background:rgba(255,255,255,.13)}
html[data-theme=light] .chat-input-mirror mark{background:repeating-linear-gradient(-45deg,rgba(228,3,43,.17) 0 5px,rgba(228,3,43,.06) 5px 10px)}
@media(prefers-reduced-motion:reduce){.chat-spoiler,.chat-spoiler-tools>button{transition:none}}

/* 채팅 속 테마 공유 카드 */
.mb.mbwide{max-width:86%}
.tcard{position:relative;display:flex;gap:11px;width:min(272px,80vw);padding:10px 28px 10px 10px;cursor:pointer;transition:transform .16s ease;
  background:linear-gradient(158deg,color-mix(in srgb,var(--surface2) 94%,#000),color-mix(in srgb,var(--surface) 84%,#000));
  border:1px solid var(--hairline);border-radius:16px;border-top-left-radius:5px}
.tc-open{display:flex;align-items:stretch;gap:11px;width:100%;min-width:0;padding:0;text-align:left}
.msg.me .tcard{border-color:color-mix(in srgb,var(--p5) 34%,var(--hairline));border-radius:16px;border-bottom-right-radius:5px}
.tcard:active{transform:scale(.98)}
.tcard.gone{width:auto;flex-direction:column;gap:5px;align-items:flex-start;color:var(--faint);border-left-color:var(--border)}
.tc-poster{position:relative;width:54px;height:72px;flex:0 0 auto;border-radius:3px;background-size:cover;background-position:center;overflow:hidden;box-shadow:0 3px 10px rgba(0,0,0,.42);display:flex;align-items:center;justify-content:center}
.tc-poster .ph{font-size:22px;font-weight:900;color:rgba(231,236,242,.5)}
.tc-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px;justify-content:center}
.tc-label{display:inline-flex;align-items:center;gap:4px;font-family:var(--fb);font-size:11px;letter-spacing:0;font-weight:750;color:var(--muted)}
.tc-label svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:1.9}
.tc-title{font-size:13.5px;font-weight:800;color:var(--text);line-height:1.28;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tc-meta{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tc-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px}
.tc-rate{display:inline-flex;align-items:center;gap:3px;font-family:var(--fn);font-size:11px;font-weight:800;color:var(--gold)}
.tc-go{position:absolute;right:8px;top:12px;color:var(--faint);opacity:.8}
.tc-go svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.tc-react{position:absolute;right:5px;bottom:6px;width:25px;height:25px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface);border:1px solid var(--hairline);color:var(--faint);transition:.14s}
.tc-react .tc-smile{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.7}
.tc-react:active{transform:scale(.86);color:var(--text);border-color:var(--glass-line-hi)}
.tcard .pmeter{pointer-events:none}
/* 모임 일정 활동 알림 — 시스템 문구와 일정 공유 카드 사이의 독립 카드 */
.event-notice{align-self:center;width:min(320px,92%);display:flex;flex-direction:column;gap:7px;margin:8px 0}
.event-notice .evn-cap{display:flex;align-items:center;gap:6px;padding:0 3px;color:var(--muted);font-size:10.5px}
.event-notice .evn-cap>svg{width:13px;height:13px;fill:none;stroke:var(--muted);stroke-width:1.9}
.event-notice .evn-cap b{font-size:11px;color:var(--text)}
.event-notice .evn-cap time{margin-left:auto;color:var(--faint);font-family:var(--fn);font-size:9px}
.event-notice .tcard{width:100%;padding-right:10px;cursor:default}
.event-notice .tc-open{cursor:pointer}
.event-notice .evn-icon{width:54px;height:72px;display:grid;place-items:center;flex:0 0 auto;border:1px solid var(--border);border-radius:8px;background:var(--surface3);color:var(--muted)}
.event-notice .evn-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}
.event-notice .evn-chip{padding:3px 6px;border:1px solid var(--border);border-radius:6px;color:var(--muted);font-size:9.5px;font-weight:800}
.event-notice .evn-changes,.event-notice>p{margin:0 3px;color:var(--muted);font-size:10.5px;line-height:1.5;word-break:keep-all}
.event-notice.updated .tcard{border-left-color:var(--accent)}
.event-notice.updated .evn-cap>svg{stroke:var(--accent)}
.event-notice.cancelled .tcard{border-left-color:var(--danger);opacity:.82}
.event-notice.cancelled .evn-cap>svg,.event-notice.cancelled .evn-cap b{color:var(--danger);stroke:currentColor}
.event-notice.cancelled .tc-title{text-decoration:line-through;text-decoration-thickness:1px}
html[data-theme=light] .event-notice .evn-icon{background:#f5f7fa}

/* 테마 공유 시트 */
.tshare-search{position:relative;display:flex;align-items:center;gap:10px;height:48px;padding:0 12px 0 14px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;margin-bottom:12px;transition:.16s}
.tshare-search:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 9%,transparent)}
.tshare-search .ss-ic{display:flex}
.tshare-search svg{width:17px;height:17px;stroke:var(--muted);fill:none;stroke-width:2;flex:0 0 auto}
.tshare-search .input{flex:1;min-width:0;height:auto;background:none;border:none;border-radius:0;padding:0;font-size:15px}
.tshare-search .input:focus{box-shadow:none}
.tshare-list{min-height:120px;transition:opacity .14s}
.tshare-list.searching{opacity:.45}
.tshare-cap{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;color:var(--muted);margin:2px 2px 8px}
.tshare-cap.wish{color:var(--gold)}
.tshare-cap svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.9}
.tshare-row{display:flex;align-items:center;gap:12px;padding:9px 8px;border-radius:11px;border:1px solid transparent;cursor:pointer;transition:.14s}
.tshare-row:active,.tshare-row.picking{background:color-mix(in srgb,var(--p5) 8%,transparent);border-color:color-mix(in srgb,var(--p5) 40%,transparent)}
.tsr-poster{position:relative;width:44px;height:58px;flex:0 0 auto;border-radius:4px;background-size:cover;background-position:center;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 7px rgba(0,0,0,.35)}
.tsr-poster .ph{font-size:18px;font-weight:900;color:rgba(231,236,242,.5)}
.tsr-mid{min-width:0;flex:1}
.tsr-t{font-size:14px;font-weight:800;color:var(--text);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsr-s{font-size:11.5px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsr-go{flex:0 0 auto;color:var(--faint);display:flex}
.tsr-go svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}
.tshare-row:active .tsr-go,.tshare-row.picking .tsr-go{color:var(--text)}

/* 일행 시트 — 공용 검색창·유저 행·선택 칩 재사용 */
.party-hint{margin:0 0 12px}
.party-search .iconbtn{width:28px;height:28px;flex:0 0 auto}
.party-search .iconbtn[hidden]{display:none}
.party-caption{display:flex;justify-content:space-between;gap:8px;margin:0 0 10px;color:var(--muted);font-size:11px}
.party-caption [data-party-count]{flex-shrink:0}
.party-selected{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.party-selected:empty{display:none}
.party-selected .comp-chip{max-width:100%;cursor:pointer;color:var(--text)}
.party-selected .comp-chip b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.party-selected .comp-chip>svg{width:13px;height:13px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2}
.party-sheet .party-row{width:100%;text-align:left;background:transparent;color:var(--text);font:inherit}
.party-sheet .party-row:disabled{cursor:default;opacity:1}
.party-sheet .party-row.on{background:rgba(228,3,43,.06)}
.party-sheet .party-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.party-empty{padding:28px 10px}
.party-row{border:1px solid transparent;border-radius:12px;margin:2px 0;padding:10px 12px;transition:.14s}
.party-row.on{border-color:rgba(228,3,43,.45);background:rgba(228,3,43,.06)}
.pt-check{font-size:12px;font-weight:800;color:var(--faint)}
.party-row.on .pt-check{color:var(--p5)}
.pt-lock{font-size:10.5px;color:var(--faint);display:inline-flex;align-items:center;gap:4px}
.pt-lock svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}

/* 친구 행 — 탭하면 친구 시트 (기록 보기·공개 설정·친구 끊기) */
.urow.tap{cursor:pointer;transition:.14s}
.urow.tap:hover{background:var(--surface)}
.urow.tap:active{background:var(--surface2)}
.fr-chev svg{width:16px;height:16px;stroke:var(--faint);fill:none;stroke-width:2}
.fr-open svg{width:15px;height:15px;stroke:var(--faint);fill:none;stroke-width:1.9;margin-right:2px}
.recrow.tap{cursor:pointer;transition:.14s}
.recrow.tap:hover{background:var(--surface)}
.recrow.tap:active{background:var(--surface2)}
.recrow.hasmain{transition:.14s}
.recrow.hasmain:hover{background:var(--surface)}
.recrow.hasmain:active{background:var(--surface2)}

/* records */
.recrow{display:flex;gap:12px;padding:12px 18px;border-top:1px solid var(--hairline);align-items:center}
.recrow .recmain{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.recrow .recmain.tap{cursor:pointer}
.recrow .d{font-family:var(--fn);font-size:10px;color:var(--faint);width:42px;flex:0 0 auto;text-align:center;line-height:1.3}
.recrow .d b{display:block;color:var(--muted);font-size:15px}
/* 올해가 아닌 기록은 월 위에 연도를 작게 — 42px 컬럼 안에서 세로로 쌓여 줄바꿈·넘침 없음 */
.recrow .d .dyr{display:block;font-size:9px;color:var(--faint);opacity:.7;line-height:1.15;letter-spacing:.02em;white-space:nowrap}
.recrow .d .dfx{display:block;font-family:var(--fb);font-size:9.5px;font-weight:700;line-height:1.2;color:var(--faint);white-space:nowrap} /* 날짜 미정 일정 — '10월 / 중'의 아랫줄 */
/* 날짜 아래 타임슬롯 마크 — HUD 리드아웃: 그라데이션 헤어라인 + 티얼 글로우 */
.recrow .d .dslot{display:block;position:relative;margin-top:4px;padding-top:4px;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--muted)} /* 시작 시간 — 중립(청록·발광 없음) */
.recrow .d .dslot::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:28px;height:1px;background:var(--hairline)}
.recrow .info{flex:1;min-width:0}
.recrow .info .t{font-weight:700;font-size:14.5px;line-height:1.32;word-break:keep-all;overflow-wrap:break-word} /* 긴 테마명은 …잘림 대신 띄어쓰기 단위 줄바꿈 */
.recrow .info .s{font-size:11px;color:var(--faint);margin-top:2px}
.recrow .rr{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.ropen{position:relative;display:grid;grid-template-columns:20px minmax(0,auto);grid-template-areas:"ico when" "ico msg";align-items:center;column-gap:6px;row-gap:2px;width:fit-content;max-width:100%;margin-top:7px;padding:5px 8px 5px 7px;border:1px solid rgba(63,224,208,.36);background:linear-gradient(100deg,rgba(63,224,208,.10),rgba(63,224,208,.025));clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);color:var(--accent)}
.ropen .ro-ico{grid-area:ico;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;width:20px;height:20px;border:1px solid currentColor;background:rgba(63,224,208,.08);clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.ropen .ro-ico svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.15}
.ropen .ro-k{display:none;font-family:var(--fe);font-size:8.5px;font-weight:900;letter-spacing:.16em;color:currentColor;opacity:.78;white-space:nowrap}
.ropen .ro-when{grid-area:when;display:inline-flex;align-items:baseline;gap:5px;flex:0 0 auto;min-width:0;white-space:nowrap}
.ropen .ro-when b{font-family:var(--fe);font-size:9.5px;font-weight:900;letter-spacing:.08em;color:currentColor;white-space:nowrap}
.ropen .ro-when strong{font-family:var(--fn);font-size:12px;font-weight:900;color:var(--text);white-space:nowrap}
.ropen .ro-msg{grid-area:msg;display:block;min-width:0;font-family:var(--fe);font-size:9.5px;font-weight:900;letter-spacing:.06em;line-height:1;color:currentColor;white-space:nowrap;overflow:visible;text-overflow:clip}
.ropen.ro-near{color:var(--gold);border-color:rgba(255,207,92,.48);background:linear-gradient(100deg,rgba(255,207,92,.12),rgba(255,207,92,.025))}
.ropen.ro-soon{color:var(--dhot);border-color:rgba(255,138,60,.5);background:linear-gradient(100deg,rgba(255,138,60,.13),rgba(255,138,60,.025))}
.ropen.ro-hot{color:var(--p5);border-color:rgba(228,3,43,.56);background:linear-gradient(100deg,rgba(228,3,43,.16),rgba(228,3,43,.03))}
.ropen.ro-open{color:var(--success);border-color:rgba(56,211,159,.5);background:linear-gradient(100deg,rgba(56,211,159,.13),rgba(56,211,159,.025))}
.ropen.ro-near .ro-ico{background:rgba(255,207,92,.10)}
.ropen.ro-soon .ro-ico{background:rgba(255,138,60,.10)}
.ropen.ro-hot .ro-ico{background:rgba(228,3,43,.11)}
.ropen.ro-open .ro-ico{background:rgba(56,211,159,.10)}
.ro-mini{--ro-c:#C4B89A;--ro-on:#17130A;--ro-bg:linear-gradient(180deg,color-mix(in srgb,var(--ro-c) 13%,transparent),color-mix(in srgb,var(--ro-c) 4%,transparent));--ro-rim:linear-gradient(180deg,color-mix(in srgb,var(--ro-c) 80%,#fff),color-mix(in srgb,var(--ro-c) 22%,transparent) 55%,color-mix(in srgb,var(--ro-c) 50%,transparent));
  position:relative;display:inline-flex;align-items:center;gap:.36em;flex:0 0 auto;height:17px;padding:0 5px 0 4.5px;box-sizing:border-box;vertical-align:middle;font-family:var(--fn);font-size:10px;font-style:normal;font-weight:600;letter-spacing:0;line-height:1;font-variant-numeric:tabular-nums;color:var(--ro-c);border:0;border-radius:var(--r-tag);background:var(--ro-bg);white-space:nowrap}
.ro-mini::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:var(--ro-rim);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)} /* 기록 카드 번호·시간 칩과 같은 위→아래 테두리 빛(그림자 없음 — PNG 내보내기 안전) */
.ro-mini b{font-family:var(--fe);font-size:.72em;font-weight:700;letter-spacing:.13em;margin-right:-.13em;color:currentColor;opacity:.88} /* OPEN 끝 자간만 상쇄 — 자물쇠·OPEN·날짜·시각이 같은 묶음 간격(.36em)으로 붙는다(OPEN 뒤만 벌어져 보이던 것 fb:bd452ab5) */
.ro-mini .ro-ic{display:inline-flex;flex:none;font-style:normal}.ro-mini .ro-ic svg{width:.95em;height:.95em;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
.ro-mini .ro-w{display:inline-flex;align-items:baseline;gap:.36em} /* 날짜·시각은 글꼴이 달라도 같은 기준선에 — 글꼴별 보정값 없이 어느 기기에서나 줄이 맞는다 */
.ro-mini .ro-d{font-family:var(--fb);font-weight:700;letter-spacing:-.01em;color:var(--text)}
.ro-mini.ro-rel .ro-d{display:inline-flex;align-items:center;height:12px;padding:0 .36em;border-radius:3px;background:var(--ro-c);color:var(--ro-on);font-size:.95em;font-weight:800;letter-spacing:0} /* 오늘·내일 — 날짜 자리를 단계색으로 채운 작은 딱지(기록 날짜 칸 '오늘' 표식과 같은 문법) */
.ro-mini .ro-t{letter-spacing:-.02em}.ro-mini.ro-rel .ro-t{font-weight:700}
.ro-mini.ro-near{--ro-c:var(--gold);--ro-on:#241A04}
.ro-mini.ro-soon{--ro-c:var(--dhot);--ro-on:#2A1204}
.ro-mini.ro-hot{--ro-c:#FF4458;--ro-on:#fff}
/* 설정 '예약 오픈 딱지'(bt_ro_badge) 대안 모양 — A 스플릿 태그(LEFT·HINT 와 같은 두 칸)·E 인쇄 숫자·이전 모양. 마크업은 같은 딱지에 rv-* 만 붙는다 */
.ro-mini.rv-a{gap:0;padding:0 6px 0 0;overflow:hidden;transform:skewX(-10deg);border:1px solid color-mix(in srgb,var(--ro-c) 55%,transparent);border-radius:4px;background:color-mix(in srgb,var(--ro-c) 9%,transparent)}
.ro-mini.rv-a::after,.ro-mini.rv-e::after,.ro-mini.rv-old::after{display:none}
.ro-mini.rv-a b{align-self:stretch;display:flex;align-items:center;margin:0 6px 0 0;padding:0 4px 0 5px;background:var(--ro-c);color:var(--ro-on);opacity:1}
.ro-mini.rv-a.ro-wait b{background:color-mix(in srgb,var(--ro-c) 24%,transparent);color:var(--ro-c)}
.ro-mini.rv-a .ro-d{font-family:var(--fn);font-weight:600;letter-spacing:-.02em;color:var(--ro-c)}
.ro-mini.rv-a.ro-rel .ro-d{height:auto;padding:0;background:none;font-family:var(--fb);font-size:1em;font-weight:800;color:var(--ro-c)}
.ro-mini.rv-a .ro-w::before,html[data-robadge=a] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t::before{content:"\200b";font-family:var(--fb);font-weight:800} /* 스플릿 — '오늘·내일'(Pretendard) 유무와 무관하게 묶음 높이를 고정해 옆 D-day 와 글자 줄을 맞춘다 */
.ro-mini.rv-e{gap:4px;padding:0 1px 3px;border-radius:0;background:linear-gradient(90deg,var(--ro-c) 0 7px,color-mix(in srgb,var(--ro-c) 40%,transparent) 7px) left bottom/100% 1px no-repeat}
.ro-mini.rv-e b{letter-spacing:.2em;margin-right:0}
.ro-mini.rv-e .ro-d,.ro-mini.rv-e .ro-t{font-family:'Bebas Neue','Archivo Narrow',sans-serif;font-weight:400;font-size:14px;letter-spacing:.04em;text-box:trim-both cap alphabetic}
/* 오늘·내일 칩은 기준선 정렬이면 칩 아래가 숫자 밑으로 처져 보인다 — 숫자 상자를 대문자 높이~기준선으로 깎고(셀프호스트 베바스라 기기 무관) 칩과 가운데 정렬.
   내용 높이 14px(아래 여백 3px) — 12px 칩이 정수 픽셀(1~13)에 놓이고 숫자 기준선도 12px 근처라 픽셀 반올림(크로미움) 뒤에도 가운데가 맞는다 (fb:0c31c1a5) */
.ro-mini.rv-e.ro-rel .ro-w{align-items:center}
.ro-mini.rv-e.ro-rel .ro-d{font-family:var(--fb);font-weight:800;font-size:9.5px;letter-spacing:0;text-box:normal}
.ro-mini.rv-old{height:auto;gap:4px;padding:1px 6px;font-size:9.5px;font-weight:800;letter-spacing:.02em;line-height:inherit;vertical-align:baseline;font-variant-numeric:normal;color:var(--accent);border:1px solid rgba(63,224,208,.38);border-radius:4px;background:rgba(63,224,208,.06)}
.ro-mini.rv-old b{font-size:8px;font-weight:900;letter-spacing:.12em;margin:0;opacity:1} /* 새 딱지의 줄 높이 1·OPEN 700 을 물려받아 납작·가늘어지지 않게 옛 값(부모 줄 높이·굵게 900)으로 */
.ro-mini.rv-old.ro-near{color:var(--gold);border-color:rgba(255,207,92,.45);background:rgba(255,207,92,.07)}
.ro-mini.rv-old.ro-soon{color:var(--dhot);border-color:rgba(255,138,60,.48);background:rgba(255,138,60,.07)}
.ro-mini.rv-old.ro-hot{color:var(--p5);border-color:rgba(228,3,43,.55);background:rgba(228,3,43,.08)}
.avnoslot .ro-mini.rv-old{line-height:1.35}
.robadge-sample{grid-column:1;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;padding:3px 0}
/* 예약 오픈 임박 배너 (탐색 상단) — 일정 테마의 예약 오픈이 24h 안이면 실시간 시·분·초 카운트다운 (fb:2665cf5f)
   한글은 본문체, 숫자만 고정폭 · 글로우·점멸 없이 행 좌측 바로 임박도 구분.
   접힌 높이(헤더 35px+테두리)는 옆 디데이 배너(37px)와 같게 — 데스크탑 한 줄 배치에서 윗단이 맞는다 (fb:5e2b62e7)
   다이나믹 아일랜드처럼 불투명한 무광 섬 — 반투명·광택·안쪽 하이라이트 없이 표면 한 톤, 주황(--dhot)은 테두리·아이콘에만.
   반지름 22px 은 접힌 37px 높이에선 알약으로 눌렸다가, 펼치며 높이와 함께 둥근 카드 모서리로 자연스럽게 풀린다.
   펼침은 오버슈트 없는 감속 곡선(--ro-ease) 하나로 높이·행·화살표를 맞추고, 행은 흐림이 걷히며 제자리로 살짝 떠오른다.
   transition 만 써서 첫 표시·재렌더엔 움직임이 없고 누를 때만 연출. 카운트다운이 매초 바뀌니 backdrop-filter 는 쓰지 않는다 (fb:1a483803, fb:62a450b9) */
.rosoon{--ro-ease:cubic-bezier(.32,.72,0,1);--rr-bg:color-mix(in srgb,var(--text) 5%,var(--surface));display:grid;grid-template-rows:auto 1fr;width:calc(100% - 36px);margin:2px 18px 10px;border-radius:22px;overflow:hidden;
  border:1px solid color-mix(in srgb,var(--dhot) 24%,var(--border));background:var(--surface);
  transition:grid-template-rows .5s var(--ro-ease),scale .24s ease-out}
.rosoon.collapsed{grid-template-rows:auto 0fr}
.rosoon:has(>.rosoon-hd:active){scale:.99} /* 누르면 살짝 눌렸다 복원 — 튕김 없이 */
/* 배너는 appbar 마지막 자식 — 모바일에선 아랫줄 풀폭으로 래핑(벨은 첫 줄 유지), 데스크탑 한 줄 배치는 desktop.css */
.appbar:has(.rosoon){flex-wrap:wrap}
.appbar .rosoon{flex:1 1 100%;width:100%;margin:12px 0 0}
.appbar.availability-appbar .rosoon{margin-top:6px} /* availability-appbar 의 gap:6px 이 행간에도 붙음 — 합계 12px 유지 */
.rosoon-hd{display:flex;align-items:center;gap:10px;width:100%;min-height:35px;padding:5px 12px 5px 5px;border:none;border-radius:18px;background:none;text-align:left;cursor:pointer;color:var(--text)}
.rosoon-hd:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.rosoon-hd .rs-chev{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:20px;height:20px;color:var(--muted);transition:transform .5s var(--ro-ease),color .2s}
@media(hover:hover){.rosoon-hd:hover .rs-chev{color:var(--text)}}
.rosoon-hd .rs-chev svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.2}
.rosoon:not(.collapsed) .rs-chev{transform:rotate(180deg)} /* 펼침 = 위 화살표 */
/* 아이콘 — 광택 없는 무광 동그라미. 알약 곡률과 동심원이 되게 헤더 좌측 여백을 맞춤 */
.rosoon-hd .rs-ico{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:25px;height:25px;border-radius:50%;color:var(--dhot);background:color-mix(in srgb,var(--dhot) 15%,var(--surface))}
.rosoon-hd .rs-ico svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.15}
.rosoon-hd b{font-family:var(--fb);font-size:14px;font-weight:800;color:var(--text);letter-spacing:-.02em;white-space:nowrap}
.rosoon-hd .rs-n{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;font-size:11px;font-weight:700;line-height:1;color:var(--ink);background:var(--dhot);flex:0 0 auto}
/* 목록 — 접힌 뒤(.5s)엔 visibility 로 초점·낭독에서 빠지고, 펼칠 땐 즉시 돌아온다.
   세로 여백은 패딩 대신 첫·끝 행 마진으로 — 목록 패딩은 접힌 0fr 높이에도 남아 알약이 두꺼워진다 */
.rosoon-list{display:flex;flex-direction:column;gap:8px;min-height:0;overflow:hidden;padding:0 9px;transition:visibility 0s}
.rosoon.collapsed .rosoon-list{visibility:hidden;transition:visibility 0s linear .5s}
/* 행 — 카드 안의 무광 타일(반지름 13 = 카드 22 − 여백 9). 펼칠 때 흐림이 걷히며 제자리로 살짝 떠오름 · 행마다 .03s 차례, 접을 땐 짧게 사라짐 */
.rosoon-row{--rd:.06s;position:relative;display:flex;flex-direction:column;align-items:stretch;gap:10px;width:100%;padding:12px 14px 13px 20px;text-align:left;border:none;border-radius:13px;background:var(--rr-bg);color:var(--dhot);
  transition:opacity .32s ease var(--rd),translate .5s var(--ro-ease) var(--rd),scale .5s var(--ro-ease) var(--rd),filter .32s ease var(--rd)}
.rosoon-row:first-child{margin-top:3px}
.rosoon-row:last-child{margin-bottom:9px}
.rosoon-row:nth-child(2){--rd:.09s}.rosoon-row:nth-child(3){--rd:.12s}.rosoon-row:nth-child(n+4){--rd:.15s}
.rosoon.collapsed .rosoon-row{opacity:0;translate:0 -6px;scale:.97;filter:blur(3px);transition-duration:.18s;transition-delay:0s}
.rosoon-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.rosoon-row::before{content:"";position:absolute;left:8px;top:13px;bottom:13px;width:3px;background:currentColor;border-radius:3px} /* 임박도 바 — 행 tier 색 */
.rr-top{display:flex;align-items:center;gap:12px;min-width:0}
.rr-info{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 auto}
.rr-tt{font-family:var(--fb);font-size:14.5px;font-weight:800;letter-spacing:-.02em;line-height:1.3;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rr-when{font-family:var(--fb);font-size:12px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rr-when b{font-weight:800;color:var(--text)}
.rr-count{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto;color:currentColor}
.rr-lbl{font-style:normal;font-family:var(--fb);font-size:10.5px;font-weight:700;color:var(--muted);white-space:nowrap}
.rr-clock{font-family:var(--fn);font-size:21px;font-weight:700;letter-spacing:.01em;line-height:1;font-variant-numeric:tabular-nums;color:currentColor;white-space:nowrap}
.rosoon-row.ro-soon{color:var(--dhot)}
.rosoon-row.ro-hot{color:var(--p5);background:linear-gradient(90deg,color-mix(in srgb,var(--p5) 10%,transparent),transparent 72%),var(--rr-bg)}
.rosoon-row.ro-open{color:var(--success)}
.rosoon-row.ro-open .rr-clock{font-family:var(--fb);font-size:16px;font-weight:800;letter-spacing:-.01em} /* 오픈 도달 시 '예약 가능' 한글 문구 */
.rosoon-row.ro-open .rr-lbl{display:none} /* '오픈까지 예약 가능' 으로 읽히지 않게 */
@media(prefers-reduced-motion:reduce){.rosoon,.rosoon-row,.rosoon-hd .rs-chev,.rosoon.collapsed .rosoon-list{transition:none}}
/* 예약 일정 칩 — 내 일정의 방문 예정 날짜·시간만 노출(시간 없으면 자리 없음) (fb:5fe570da, fb:6739131a) */
.rr-slots{display:flex;flex-wrap:wrap;align-items:center;gap:5px 7px;color:currentColor}
.rr-slotkind{font-family:var(--fb);font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap}
.rr-slot{font-family:var(--fn);font-size:11.5px;font-weight:600;letter-spacing:.01em;color:var(--text);padding:3px 9px;border:1px solid color-mix(in srgb,currentColor 26%,var(--border));background:color-mix(in srgb,currentColor 7%,var(--surface2));border-radius:999px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ===== IMPORT ===== */
.preview-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}
.preview-table th{font-size:11px;font-weight:700;color:var(--faint);text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}
.preview-table td{padding:7px 8px;border-bottom:1px solid var(--hairline);color:var(--text)}
.preview-table tbody tr[data-import-row]{cursor:pointer}.preview-table tbody tr[data-import-row]:hover{background:color-mix(in srgb,var(--text) 4%,transparent)}
.preview-table td.mono{font-family:var(--fn);color:var(--muted)}
.preview-table .match{color:var(--success);font-size:11px}
.preview-table .match.similar{color:var(--info);font-weight:800}
.preview-table .nomatch{color:var(--muted);font-size:11px}
.preview-table .nomatch.candidate{color:var(--warning);font-weight:800}
.import-match small{display:block;margin-top:3px;color:var(--muted);font-size:11px;line-height:1.4}
.import-summary{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.import-summary span,.import-action-badge{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);border-radius:999px;background:var(--surface2);font-size:11px;font-weight:800;white-space:nowrap}
.import-summary span{min-height:28px;padding:0 10px;color:var(--muted)}
.import-summary b{font-family:var(--fn);font-size:11px;color:var(--text)}
.import-summary .add,.import-action-badge.add{color:var(--success);border-color:color-mix(in srgb,var(--success) 38%,var(--border));background:color-mix(in srgb,var(--success) 8%,var(--surface2))}
.import-summary .revisit,.import-action-badge.revisit{color:var(--info);border-color:color-mix(in srgb,var(--info) 38%,var(--border));background:color-mix(in srgb,var(--info) 8%,var(--surface2))}
.import-summary .merge,.import-action-badge.merge{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 38%,var(--border));background:color-mix(in srgb,var(--warning) 8%,var(--surface2))}
.import-summary .review,.import-action-badge.review{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 42%,var(--border));background:color-mix(in srgb,var(--danger) 8%,var(--surface2))}
.import-action{min-width:112px}
.import-action-badge{width:max-content;min-height:24px;padding:0 8px;font-style:normal}
.import-row-edit{width:100%;min-width:112px;min-height:44px;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:4px 5px;text-align:left;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text);transition:border-color .15s,background .15s,transform .12s}
.import-row-edit>span{display:flex;align-items:center;justify-content:space-between;gap:8px}.import-row-edit>span>em{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-size:11px;font-style:normal;font-weight:800;white-space:nowrap}.import-row-edit>span>em svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2}
.import-row-edit small{display:block;max-width:170px;color:var(--muted);font-size:11px;line-height:1.4}.import-row-edit:hover{border-color:var(--glass-line-hi);background:var(--tag-bg)}.import-row-edit:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.import-row-edit:active{transform:scale(.985)}
.import-row-edit.review{border-color:color-mix(in srgb,var(--danger) 32%,var(--border));background:color-mix(in srgb,var(--danger) 6%,transparent)}.import-row-edit.review>span>em{color:var(--danger)}
.warnbox.import-review-note{border-color:color-mix(in srgb,var(--danger) 42%,var(--border));color:var(--danger)}
.import-edited-note{margin-top:12px;padding:10px 12px;border-radius:12px;background:var(--matte-tint);color:var(--muted)}
.import-edit-sheet{max-height:min(92vh,860px)}.import-edit-sheet .sh-head{align-items:flex-start}.import-edit-sheet .sh-head>div{min-width:0}.import-edit-sheet .sh-head>div>span{display:block;margin-top:3px;color:var(--muted);font-size:11.5px}.import-edit-sheet .sh-body{padding-top:4px;padding-bottom:max(24px,env(safe-area-inset-bottom))}
.import-edit-lead{display:flex;flex-direction:column;gap:4px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.import-edit-lead.review{border-color:color-mix(in srgb,var(--danger) 30%,var(--border));background:color-mix(in srgb,var(--danger) 7%,var(--surface))}.import-edit-lead>span{color:var(--muted);font-size:11px;font-weight:800}.import-edit-lead.review>span{color:var(--danger)}.import-edit-lead>b{font-size:13.5px;line-height:1.5;word-break:keep-all}.import-edit-lead>p{margin:0;color:var(--muted);font-size:12px}
.import-edit-section{margin-top:13px}.import-edit-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 2px 7px}.import-edit-section-title>b{font-size:13px;font-weight:800}.import-edit-section-title>small{color:var(--muted);font-size:11px}.import-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.import-edit-grid.theme{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.import-edit-sheet .field{display:flex;min-width:0;flex-direction:column;gap:5px;margin:0}.import-edit-sheet .field>span{padding-left:2px;color:var(--muted);font-size:12px;font-weight:700}.import-edit-sheet .field>span small{color:var(--faint);font-size:11px}.import-edit-sheet .input{height:44px;min-width:0;padding:0 12px;border-radius:12px;background:var(--surface2);font-size:15px}.import-edit-sheet textarea.input{height:auto;min-height:96px;padding:11px;resize:vertical}
.import-unlinked-choice{margin-top:10px}
.import-theme-candidates,.import-resolution{min-width:0;margin:0 0 13px;padding:12px;border:1px solid color-mix(in srgb,var(--danger) 30%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--danger) 5%,var(--surface2))}.import-theme-candidates>legend,.import-resolution>legend{padding:0 5px;color:var(--text);font-size:13px;font-weight:800}.import-theme-candidates>div{display:grid;gap:7px}.import-theme-candidates label,.import-resolution-choice{position:relative;display:block}.import-theme-candidates input,.import-resolution-choice>input{position:absolute;opacity:0;pointer-events:none}.import-theme-candidates label>span,.import-resolution-choice>span{min-height:48px;display:flex;min-width:0;flex-direction:column;justify-content:center;gap:2px;padding:8px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer}.import-theme-candidates b,.import-theme-candidates small,.import-resolution-choice b,.import-resolution-choice small{display:block;min-width:0}.import-theme-candidates b,.import-resolution-choice b{font-size:13px}.import-theme-candidates small,.import-resolution-choice small{color:var(--muted);font-size:11.5px;line-height:1.4}.import-theme-candidates input:checked+span,.import-resolution-choice>input:checked+span{border-color:color-mix(in srgb,var(--p5) 45%,var(--border));background:color-mix(in srgb,var(--p5) 8%,var(--surface));box-shadow:none}.import-theme-candidates input:focus-visible+span,.import-resolution-choice>input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.import-resolution{margin-top:14px;border-color:var(--border);background:var(--surface2)}.import-resolution>p{margin:-1px 0 9px;color:var(--muted);font-size:11.5px;line-height:1.45}.import-resolution-choice+.import-resolution-choice{margin-top:6px}.import-resolution-choice.locked>span{opacity:.48;cursor:not-allowed}.import-resolution-choice.new>span{border-style:dashed}.import-resolution-choice.new>input:checked+span{border-style:solid}
.import-edit-details{margin-top:14px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);overflow:hidden}.import-edit-details>summary{min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;cursor:pointer;list-style:none}.import-edit-details>summary::-webkit-details-marker{display:none}.import-edit-details>summary>span{display:flex;min-width:0;flex-direction:column;gap:2px}.import-edit-details>summary b{font-size:13px;font-weight:800}.import-edit-details>summary small{color:var(--muted);font-size:11px}.import-edit-details>summary>svg{width:15px;height:15px;flex:none;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2;transition:transform .15s}.import-edit-details[open]>summary>svg{transform:rotate(180deg)}.import-edit-details>div{display:flex;flex-direction:column;gap:10px;padding:12px;border-top:1px solid var(--hairline)}
.import-life-choice{position:relative;display:block}.import-life-choice>input{position:absolute;opacity:0}.import-life-choice>span{min-height:48px;display:grid;grid-template-columns:22px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer}.import-life-choice>span>svg{grid-row:1/3;color:var(--faint)}.import-life-choice b{font-size:13px}.import-life-choice small{color:var(--muted);font-size:11px}.import-life-choice>input:checked+span{border-color:color-mix(in srgb,var(--gold) 48%,var(--border));background:color-mix(in srgb,var(--gold) 8%,var(--surface))}.import-life-choice>input:checked+span>svg{color:var(--gold)}.import-life-choice>input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}.import-time-fields{margin-top:2px}.import-time-fields .timetrio{gap:6px}.import-time-fields .tt-l{font-size:11px}.import-time-fields .tt-in{height:42px;padding:0 8px;font-size:14px}.import-memo-field{margin-top:1px!important}.import-edit-submit{width:100%;min-height:47px;margin-top:14px}
.import-body{padding:6px 18px 24px}.import-guide{margin:0 2px 10px}.view-import textarea.input{min-height:180px;background:var(--surface)}.import-ai{width:100%;margin-top:10px}.import-status{margin:8px 2px 0}.import-status:empty{display:none}.import-preview-head{padding:18px 2px 4px}.import-preview-head .h .n{color:var(--text)}.import-commit-bottom{width:100%;margin-top:14px}.import-top-save{margin-left:auto}
/* 좁은 화면의 9열 표는 동일 DOM 을 레코드 카드로 재배치 — 데스크탑(≥1000)은 표 유지. */
@media(max-width:999px){
  .preview-table{display:block;border-collapse:separate;margin-top:10px}
  .preview-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .preview-table tbody{display:grid;gap:10px}
  .preview-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;padding:13px 14px;
    background:var(--surface);
    border:1px solid var(--border);border-radius:16px;position:relative;overflow:hidden}
  .preview-table tbody tr[data-import-row]:hover{background:var(--surface)}.preview-table tbody tr[data-import-row]:active{border-color:var(--glass-line-hi)}
  .preview-table td{display:flex;flex-direction:column;gap:3px;min-width:0;padding:0;border:0;font-size:12.5px;line-height:1.35;overflow-wrap:anywhere}
  .preview-table td::before{content:attr(data-label);font-size:11px;font-weight:700;color:var(--muted)}
  .preview-table td:nth-child(2){grid-column:1/-1;order:-1;font-size:14px;font-weight:800;padding-bottom:9px;border-bottom:1px solid var(--hairline)}
  .preview-table td:nth-child(8){align-items:flex-start;grid-column:1/-1}
  .preview-table td:nth-child(9){align-items:flex-start;grid-column:1/-1}
  .preview-table .match,.preview-table .nomatch{font-size:11px}
  .import-match small{font-size:10px}
  .import-row-edit small{max-width:none}.import-row-edit{padding:7px 8px}
}
@media(max-width:359px){.import-edit-grid,.import-edit-grid.theme{grid-template-columns:minmax(0,1fr)}.import-time-fields .timetrio{gap:4px}.import-time-fields .tt-in{padding:0 4px;font-size:10px}}
.warnbox{background:rgba(224,161,46,.08);border:1px solid rgba(224,161,46,.3);border-radius:8px;padding:10px 12px;margin-top:12px;font-size:12px;color:var(--warning);line-height:1.5}
.segrow{display:flex;gap:8px;margin-bottom:14px}
.seg{flex:1;text-align:center;padding:10px;border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:700;color:var(--muted);background:var(--surface2);transition:.14s}
.seg.on{color:var(--accent);border-color:var(--accentDim);background:rgba(30,95,88,.14)}

/* stats */
.statgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:4px 18px}
.statcard{background:var(--surface);border:1px solid var(--border);padding:16px;position:relative}
.statcard:not(.plan){min-height:94px;display:flex;flex-direction:column}.statcard:not(.plan) .v{margin-top:auto;padding-top:6px}
.statcard .k{font-size:12px;line-height:16px;letter-spacing:-.01em;color:var(--muted);font-weight:700;padding-right:18px}
.statcard .v{font-family:var(--fn);font-weight:700;font-size:clamp(24px,6.8vw,30px);margin-top:6px;line-height:1;color:var(--sc,var(--text))}.stat-colors .statcard.st-themes{--sc:var(--accent)}.stat-colors .statcard.st-nohint{--sc:var(--success)}.stat-colors .statcard.st-life{--sc:var(--gold)}.stat-colors .statcard.st-rating{--sc:#E58AA8}.stat-colors .statcard.plan{--sc:var(--info)} /* 통계 숫자 의미색 — 설정 '프로필 숫자 색'을 켰을 때만(.stat-colors, 기본 꺼짐): 플레이 청록·노힌트 초록·인생 금색·평점 분홍·플레이할 파랑 */
.statcard .v small{font-size:13px;color:var(--faint)}
/* 통계 카드 탭 → 그 기록 목록 시트 [fb:0e5dbcd4] */
.statcard.tap{cursor:pointer;transition:border-color .14s,transform .1s}
.statcard.tap:hover{border-color:var(--glass-line-hi)}
.statcard.tap:active{transform:scale(.98)}
.statcard .stat-go{position:absolute;top:16px;right:13px;width:16px;height:16px;display:grid;place-items:center;color:var(--faint);opacity:.75;pointer-events:none}
.statcard .stat-go svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2}
.statlist{margin:0 -20px}
.statlist .recrow:first-child{border-top:none}

/* ===== misc ===== */
.empty{text-align:center;padding:48px 24px;color:var(--faint)}
.empty .ic{opacity:.5;margin-bottom:14px}
.empty .ttl{font-weight:700;color:var(--muted);font-size:15px;margin-bottom:6px}
.empty .ds{font-size:13px;line-height:1.5}
.empty-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:18px}
.empty-actions .btn{min-width:112px}
.async-error{min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.async-error .ds{max-width:360px;word-break:keep-all}
.async-stale{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 18px 6px;padding:10px 11px 10px 13px;border:1px solid color-mix(in srgb,var(--gold) 40%,var(--border));border-left:3px solid var(--gold);border-radius:10px;background:color-mix(in srgb,var(--gold) 7%,var(--surface));color:var(--muted);font-size:11px;line-height:1.45}
.async-stale span{min-width:0;word-break:keep-all}.async-stale button{flex:0 0 auto;height:34px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2);color:var(--text);font-size:10.5px;font-weight:850}.async-stale button:disabled{opacity:.5}
.confirm-copy{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.55}
.confirm-actions{display:flex;gap:10px}.confirm-actions .btn{flex:1;min-height:46px}
/* (구 .spinner 링 제거 — 모든 로딩은 키홀 스피너(.kh-spin)로 통일) */

/* 하단 토스트 — 화면 위에 떠 있으므로 실제 블러를 쓰는 유리 캡슐. 상태는 왼쪽 아이콘 색으로만 구분한다(채널 코드 없음).
   clip-path 를 쓰지 않아 행동 토스트의 키보드 포커스 링이 잘리지 않는다 */
.toast{--toast-tone:var(--muted);position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));z-index:160;
  width:max-content;max-width:min(390px,calc(100vw - 24px));min-height:48px;display:flex;align-items:center;gap:10px;padding:8px 18px 8px 9px;border-radius:16px;
  transform:translateX(-50%) translateY(10px);opacity:0;pointer-events:none;color:var(--text);
  background:color-mix(in srgb,var(--surface3) 72%,transparent);border:1px solid var(--glass-line);box-shadow:var(--glass-hi),0 14px 34px -14px rgba(0,0,0,.7);
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);
  transition:opacity .2s ease,transform .3s var(--ease-out)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.actionable{pointer-events:auto;cursor:pointer}
.toast.actionable:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.toast.default{--toast-tone:var(--muted)}
.toast.success{--toast-tone:var(--success)}
.toast.gold{--toast-tone:var(--gold)}
.toast.err,.toast.error{--toast-tone:var(--danger)}
.toast-ic{flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:var(--toast-tone);background:color-mix(in srgb,var(--toast-tone) 16%,transparent)}
.toast-ic svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.toast-msg{min-width:0;font-size:14px;font-weight:700;line-height:1.45;letter-spacing:-.01em;word-break:keep-all;overflow-wrap:anywhere}

/* sheet/modal */
.sheet-bg{position:fixed;inset:0;z-index:80;background:rgba(4,5,7,.66);backdrop-filter:blur(3px);opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:center}
.sheet-bg.confirm-bg{z-index:120} /* 확인창은 시트 위 별도 레이어 */
.sheet-bg.show{opacity:1}
/* transition 은 transform 한정 — 전 속성이면 키보드 개폐(창 리사이즈)마다 시트 높이가 0.26s 씩 출렁임 */
.sheet{width:min(440px,100vw);background:var(--bg2);border-top:1px solid var(--border);border-radius:22px 22px 0 0;padding:8px 0 calc(20px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .26s cubic-bezier(.2,.9,.3,1);max-height:90vh;display:flex;flex-direction:column}
.sheet-bg.show .sheet{transform:translateY(0)}
.sheet .grab{width:40px;height:5px;border-radius:999px;background:color-mix(in srgb,var(--text) 20%,transparent);margin:8px auto 4px}
.sheet .sh-head{display:flex;align-items:center;justify-content:space-between;padding:10px 20px 8px;border-bottom:1px solid transparent;transition:border-color .18s}
.sheet.sh-scrolled .sh-head{border-bottom-color:var(--hairline)} /* 본문을 내리면 머리와 본문 사이에 선 (app.js 공용 스크롤 리스너) */
/* 시트 머리 버튼 — 9px 하우스 모양은 두고 재질만 유리. :where 로 구체도를 낮춰 저장 체크 등 개별 버튼 규칙이 그대로 이긴다 */
:where(.sheet .sh-head) .iconbtn{border-radius:50%;background:var(--glass-bg);border-color:var(--glass-line);box-shadow:var(--glass-hi);color:var(--text)}
:where(.appbar) .iconbtn{border-radius:50%;background:var(--glass-bg);border-color:var(--glass-line);box-shadow:var(--glass-hi);color:var(--text)}
.iconbtn.savecheck,.iconbtn.record-delete-action,.iconbtn.record-share-action{border-radius:50%}
@media(hover:hover){:where(.sheet .sh-head) .iconbtn:hover{border-color:var(--glass-line-hi)}}
.sheet .sh-head .ttl{font-weight:900;font-size:18px}
.sheet .sh-head .ttl+.sub{margin-top:3px;color:var(--muted);font-size:12px;font-weight:650;line-height:1.4;overflow-wrap:anywhere} /* 제목 아래 보조 줄 — 제목과 같은 크기로 커지지 않게 */
.sheet .sh-head .sh-acts{display:flex;align-items:center;gap:8px}
.review-sheet .sh-head .sh-acts>.pill{min-height:38px;padding:0 14px;font-size:12.5px}
/* 헤더 저장 체크 — 스크롤 없이 저장 (하단 저장 버튼과 같은 submit). 틸 글로우 HUD 칩 */
.iconbtn.savecheck{color:var(--p5);border-color:color-mix(in srgb,var(--p5) 42%,transparent);background:color-mix(in srgb,var(--p5) 13%,var(--surface2));box-shadow:var(--glass-hi)}
.iconbtn.savecheck svg{stroke-width:2.5}
@media(hover:hover){.iconbtn.savecheck:hover{border-color:color-mix(in srgb,var(--p5) 70%,transparent)}}
.iconbtn.savecheck:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.iconbtn.savecheck:active{transform:scale(.93)}
.iconbtn.savecheck:disabled{opacity:.45;pointer-events:none}
/* 기록 수정 삭제 — 저장 체크와 같은 헤더 규격, 파괴 동작은 절제된 크림슨으로 구분 */
.iconbtn.record-delete-action{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 38%,var(--border));background:linear-gradient(135deg,color-mix(in srgb,var(--danger) 11%,var(--surface2)),var(--surface2))}
.iconbtn.record-delete-action svg{stroke-width:2}
.iconbtn.record-delete-action:hover,.iconbtn.record-delete-action:focus-visible{color:color-mix(in srgb,var(--danger) 82%,white);border-color:color-mix(in srgb,var(--danger) 72%,var(--border));background:color-mix(in srgb,var(--danger) 16%,var(--surface2));outline:none}
.iconbtn.record-delete-action:active{transform:scale(.93)}
.iconbtn.record-delete-action:disabled{opacity:.45;pointer-events:none}
.iconbtn.record-share-action{color:var(--text);border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)} /* 공유 — 중립 유리(청록 틀 제거) */
.iconbtn.record-share-action svg{stroke-width:2}
.iconbtn.record-share-action:hover{border-color:var(--glass-line-hi)}.iconbtn.record-share-action:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.iconbtn.record-share-action:active{transform:scale(.93)}
.sheet .sh-body{padding:8px 20px;overflow-y:auto}

/* ===== 메모 — 인라인 필드 + 풀스크린 서식 편집·페이지 읽기 ===== */
.input.memo-ta[hidden]{display:none}
.memo-lab{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 7px 2px}
.memo-lab label{margin:0}
.memo-exp{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;color:var(--text);background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi);border-radius:999px;padding:0 12px;min-height:32px;line-height:1;transition:.16s;flex:0 0 auto}
.memo-exp svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}
.memo-exp:hover{border-color:var(--glass-line-hi)}
.memo-exp:active{transform:scale(.95)}
.memo-inline-preview{border-radius:14px;position:relative;width:100%;min-height:78px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:15px 13px 15px 16px;color:var(--text);border:1px solid var(--border);background:var(--surface2);text-align:left;transition:border-color .16s,background-color .16s}
.memo-inline-preview:hover,.memo-inline-preview:focus-visible{border-color:var(--glass-line-hi);outline:none}
.memo-inline-copy{min-width:0;max-height:82px;overflow:hidden;font-family:var(--fb);font-size:15px;line-height:1.68;overflow-wrap:anywhere}
.memo-inline-empty{color:var(--faint);font-size:13px}
.memo-inline-open{height:34px;display:flex;align-items:center;gap:4px;padding:0 8px;color:var(--muted);border-left:1px solid var(--hairline);font-size:11px;font-weight:850;white-space:nowrap}
.memo-inline-open svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.memo-count{font-size:12px;font-weight:600;color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}
.memo-count.near{color:var(--warning)}
.memo-full-bg{position:fixed;inset:var(--memo-top,0px) 0 auto;z-index:145;width:100vw;height:var(--memo-h,var(--app-h,100dvh));background:var(--bg);opacity:0;transition:opacity .18s}
.memo-full-bg.show{opacity:1}
/* 키보드가 열리면 편집 화면은 보이는 높이로 줄어든다 — 키보드 뒤·둘레(반투명·둥근 키보드)에 이전 화면이 비치지 않게 같은 배경을 아래로 잇고 탭도 막는다. */
.memo-full-bg::after{content:"";position:absolute;top:100%;left:0;right:0;height:100vh;background:var(--bg)}
/* 모바일 브라우저의 backdrop-filter 합성에서 아래 시트가 풀스크린 위로 비치는 현상을 막고, 닫으면 그대로 복원한다. */
body:has(.memo-full-bg) #sheet-root{visibility:hidden}
/* 전체 화면 메모·리뷰 편집 — 무광 종이면(줄·색띠·깎은 모서리 없음) + 유리 원형 버튼. 편집/미리보기는 공용 세그먼트 */
.memo-full{--memo-sheet:var(--surface);position:relative;isolation:isolate;overflow:hidden;width:100%;height:100%;display:flex;flex-direction:column;color:var(--text);background:var(--bg)}
.memo-full-head,.memo-pane-tabs,.memo-full-body{position:relative;z-index:1}
.memo-full-head{min-height:calc(64px + env(safe-area-inset-top));display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:11px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--bg2) 96%,transparent);backdrop-filter:blur(16px)}
.memo-full-head .iconbtn{width:40px;height:40px;border-radius:50%;border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}
.memo-full-heading{min-width:0;display:flex;flex-direction:column;gap:3px}
.memo-full-heading b{order:2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:900;letter-spacing:-.02em}
.memo-full-heading span{order:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--faint);font-size:11.5px;font-weight:700}
.memo-full-actions{min-width:42px;display:flex;align-items:center;justify-content:flex-end;gap:10px}
.memo-full-head .iconbtn.savecheck{color:var(--p5);border-color:color-mix(in srgb,var(--p5) 42%,transparent);background:color-mix(in srgb,var(--p5) 13%,var(--surface2))}
.memo-head-spacer{display:block;width:40px}
.memo-pane-tabs.segctl{margin:10px 14px 0}
.memo-pane-tabs.segctl>button{flex-direction:row;gap:6px}
.memo-pane-tabs button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
/* 긴 본문은 남은 높이 안에서만 스크롤 — 내용 높이가 탭·툴바를 밀거나 줄이지 않게 한다. */
.memo-full-head,.memo-pane-tabs,.memo-toolbar{flex-shrink:0}
.memo-full-body{flex:1 1 0;min-height:0;display:flex}
.memo-edit-pane,.memo-read-pane{width:100%;min-height:0}
.memo-edit-pane[hidden],.memo-read-pane[hidden],.memo-scroll-view[hidden],.memo-page-shell[hidden],.memo-page-status[hidden]{display:none}
.memo-edit-pane{display:flex;flex-direction:column;padding:10px 14px calc(14px + env(safe-area-inset-bottom))}
/* 서식 툴바 — 좌: 소형 마크 토글(아이콘 + 아래 작은 라벨), 우: 글자 색 스와치. 데스크탑은 desktop.css 가 중앙·여유 배치로 오버라이드 */
.memo-toolbar{width:100%;display:flex;align-items:stretch;justify-content:space-between;gap:8px;align-self:center;margin-bottom:10px;padding:4px;border:1px solid var(--glass-line);border-radius:16px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.mt-marks{display:flex;gap:2px;min-width:0}
.mt-marks button{width:46px;height:40px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);border-radius:12px;background:transparent;font-size:11px;font-weight:700;letter-spacing:-.02em;white-space:nowrap;transition:color .16s,background .16s}
@media(hover:hover){.mt-marks button:not([aria-pressed="true"]):hover{color:var(--text)}}
.mt-marks button:focus-visible,.mtc:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.mt-marks button>b,.mt-marks button>i,.mt-marks button>strong{font-family:var(--fb);font-size:13px;line-height:1;font-style:normal}
.mt-marks button>svg{width:13px;height:13px;flex:0 0 auto}
.mt-marks button>i{font-style:italic}
.mt-marks button>strong{font-size:15px}
.mt-marks button[aria-pressed="true"]{color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}
.mt-colors{display:flex;align-items:center;gap:5px;padding:0 6px 0 8px;border-left:1px solid var(--glass-line)}
.mtc{position:relative;width:21px;height:21px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:var(--mtc,transparent);border:1.5px solid color-mix(in srgb,var(--mtc,var(--muted)) 60%,transparent);transition:transform .12s,box-shadow .15s}
.mtc-default{background:transparent;border-color:var(--glass-line-hi)}
/* 좁은 폰 — 마크 토글과 색 스와치가 겹치지 않게 두 줄로 */
@media(max-width:374px){.memo-toolbar{flex-wrap:wrap;gap:4px}.mt-colors{flex:1 1 100%;justify-content:space-between;padding:6px 8px 3px;border-left:0;border-top:1px solid var(--glass-line)}}
.mtc-default span{font-family:var(--fb);font-size:10.5px;font-weight:900;line-height:1;color:var(--text)} /* 잉크색 '가' — 다크=흰색·라이트=먹색, 기본(색 해제) 스와치에만 */
.mtc:active{transform:scale(.9)}
.mtc[aria-pressed="true"]{box-shadow:0 0 0 2px var(--bg2),0 0 0 3.5px color-mix(in srgb,var(--mtc,var(--p5)) 85%,var(--p5))}
.mtc-default[aria-pressed="true"]{border-color:var(--p5)}
/* 글자 색 렌더 — 저장은 팔레트 키(mc-*), 표시는 테마별 보정색(다크 기본, 라이트는 아래) */
.mc-red{color:#ef5a60}.mc-amber{color:#e7a13d}.mc-green{color:#54b467}.mc-blue{color:#54a8e0}.mc-violet{color:#9d7fe0}.mc-pink{color:#e06aab}
html[data-theme=light] .mc-red{color:#c9343a}html[data-theme=light] .mc-amber{color:#a96a10}html[data-theme=light] .mc-green{color:#2c7d42}html[data-theme=light] .mc-blue{color:#20689d}html[data-theme=light] .mc-violet{color:#6a44b8}html[data-theme=light] .mc-pink{color:#b03578}
.memo-editor{flex:1 1 auto;min-height:0;overflow-y:auto;padding:22px 20px 34px;color:var(--text);border:1px solid var(--border);border-radius:16px;background:var(--memo-sheet);font-family:var(--fb);font-size:16px;line-height:1.82;letter-spacing:.002em;white-space:pre-wrap;overflow-wrap:anywhere;outline:none;caret-color:var(--p5)}
.memo-editor:focus{border-color:var(--glass-line-hi)}
.memo-editor:empty::before{content:attr(data-placeholder);display:block;color:var(--faint);white-space:pre-line;pointer-events:none}
.memo-editor b,.memo-editor strong{font-weight:900}.memo-editor i,.memo-editor em{font-style:italic}.memo-editor font[size="5"]{font-size:1.32em;line-height:1.55}
/* 스포일러(리뷰 편집) — 편집 프록시 <s>/<strike> 를 취소선 대신 가림 구간 마킹으로 표시 */
.memo-editor s,.memo-editor strike,.memo-editor [data-memo-caret][data-sp="1"]{text-decoration:none;padding:1px 2px;
  background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--p5) 11%,var(--surface2)) 0 6px,color-mix(in srgb,var(--p5) 4%,var(--surface2)) 6px 12px);
  -webkit-box-decoration-break:clone;box-decoration-break:clone}
.memo-rich-bold{font-weight:900}
.memo-rich-italic{font-style:italic}
.memo-rich-large{font-size:1.32em;line-height:1.55}
.memo-read-pane{display:flex;flex-direction:column;padding:9px 14px calc(14px + env(safe-area-inset-bottom))}
.memo-read-controls{height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex:0 0 auto}
.memo-view-toggle{flex:none}
.memo-page-status{min-width:54px;padding:4px 10px;color:var(--muted);border-radius:999px;background:var(--tag-bg);font-size:12px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}
.memo-rich-doc{color:var(--text);font-family:var(--fb);font-size:17px;line-height:1.85;letter-spacing:.002em;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
.memo-scroll-view{flex:1 1 auto;min-height:0;overflow-y:auto;padding:25px 20px 46px;border:1px solid var(--border);border-radius:16px;background:var(--memo-sheet)}
.memo-empty-read{color:var(--faint)}
.memo-page-shell{flex:1 1 auto;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) 57px}
.memo-page-viewport{--memo-page-pad-x:20px;position:relative;min-height:0;overflow:hidden;padding:25px var(--memo-page-pad-x) 36px;border:1px solid var(--border);border-radius:16px;background:var(--memo-sheet);touch-action:pan-y}
.memo-page-viewport::before,.memo-page-viewport::after{content:"";position:absolute;z-index:2;top:0;bottom:0;width:var(--memo-page-pad-x);background:var(--memo-sheet);pointer-events:none}
.memo-page-viewport::before{left:0}.memo-page-viewport::after{right:0;width:calc(var(--memo-page-pad-x) + 3px)}
.memo-page-content{position:relative;z-index:1;column-fill:auto;transition:transform .24s ease;will-change:transform}
.memo-page-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:10px}
.memo-page-nav button{display:flex;align-items:center;justify-content:center;gap:5px;color:var(--text);border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:13px;font-weight:800}
.memo-page-nav button svg{color:var(--muted)}
.memo-page-nav button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.memo-page-nav button:disabled{opacity:.3}
html[data-theme=light] .memo-full{--memo-sheet:#fff}
html[data-theme=light] .memo-full-head{background:rgba(248,249,251,.97)}
html[data-theme=light] .memo-editor,html[data-theme=light] .memo-scroll-view,html[data-theme=light] .memo-page-viewport{box-shadow:0 10px 30px rgba(23,35,40,.06)}
html[data-theme=light] .memo-inline-preview{background:#fff}

/* ===== 메모 공유 — 보내기(테마 플레이 친구)·받은 메모(NEW/저장됨)·뷰어 하단 액션 ===== */
/* 테마 상세: 내 메모 행(보기 + 공유) — 공유 버튼은 HUD 챔퍼 컷 */
.detail-memo-row{display:flex;align-items:stretch;gap:7px;margin-top:8px}
.detail-memo-row .detail-memo-quick{flex:1;min-width:0;margin-top:0}
.detail-memo-share{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:6px;min-width:64px;padding:0 14px;border:1px solid var(--glass-line);border-radius:14px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);transition:border-color .15s,transform .1s}
.detail-memo-share svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
.detail-memo-share svg{color:var(--muted)}
.detail-memo-share span{font-size:12.5px;font-weight:800}
.detail-memo-share:hover{border-color:var(--glass-line-hi)}
.detail-memo-share:active{transform:scale(.96)}
/* 테마 상세: 친구가 공유한 메모 카드 — 메모 아이덴티티(P5 크림슨) 틴트 */
/* 친구의 메모 — 일반 무광 카드, 저장 전 메모 수만 붉은 딱지로 */
.fmemo-card{border-color:color-mix(in srgb,var(--p5) 30%,var(--border));background:linear-gradient(115deg,color-mix(in srgb,var(--p5) 9%,transparent),transparent 62%),var(--surface)}.fmemo-card .wc-lbl{color:color-mix(in srgb,var(--p5) 72%,#fff)}.fmemo-card.openable:hover{border-color:color-mix(in srgb,var(--p5) 50%,var(--border));background:linear-gradient(115deg,color-mix(in srgb,var(--p5) 13%,transparent),transparent 62%),var(--surface)}.fmemo-newdot{display:inline-flex;align-items:center;font-style:normal;font-size:11px;font-weight:800;color:#fff;background:var(--p5);padding:1px 7px;border-radius:6px;line-height:1.35}
/* 기록 액션 시트 — 포스터 요약 + 독립 정보 카드 + 프로필형 일행 */
.recsheet-hero{position:relative;display:flex;gap:14px;align-items:center;margin-bottom:10px;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}
.recsheet-hero>.recth{position:relative;z-index:1;flex:0 0 auto;width:56px;height:74px;border-radius:10px;border:1px solid color-mix(in srgb,var(--text) 12%,transparent)}
.recsheet-title{position:relative;z-index:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.recsheet-title>div{display:flex;align-items:center;flex-wrap:wrap;gap:5px;font-size:17px;font-weight:850;line-height:1.3}
.recsheet-title>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11.5px}
.recsheet-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:8px}
.recsheet-fact{position:relative;min-width:0;display:flex;flex-direction:column;gap:4px;padding:10px 12px 11px;border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.recsheet-fact>span{font-size:11px;font-weight:700;color:var(--faint)}
.recsheet-fact>b{min-height:18px;display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:13px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.recsheet-rating svg{flex:0 0 auto}.recsheet-result .leftbadge{margin-left:2px}
.recsheet-open{display:grid;grid-template-columns:30px minmax(0,1fr);grid-template-areas:"ico copy" "ico state";align-items:center;column-gap:9px;row-gap:5px;margin-bottom:8px;padding:10px 11px;border:1px solid color-mix(in srgb,currentColor 38%,var(--hairline));border-radius:12px;background:linear-gradient(105deg,color-mix(in srgb,currentColor 11%,var(--surface2)),color-mix(in srgb,currentColor 3%,var(--surface2)));color:var(--info)}
.recsheet-open-ico{grid-area:ico;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,currentColor 14%,transparent)}.recsheet-open-ico svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
.recsheet-open-copy{grid-area:copy;min-width:0;display:flex;flex-direction:column;gap:2px}.recsheet-open-copy>span{color:currentColor;font-size:11px;font-weight:800}.recsheet-open-copy>b{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px;color:var(--text);font-size:11px}.recsheet-open-copy strong{font-family:var(--fb);font-size:15px;font-variant-numeric:tabular-nums}.recsheet-open-copy small{color:var(--muted);font-size:11px;font-weight:600}
.recsheet-open>em{grid-area:state;justify-self:start;padding:3px 7px;border:1px solid color-mix(in srgb,currentColor 42%,transparent);border-radius:7px;background:color-mix(in srgb,currentColor 9%,transparent);font-size:11px;font-style:normal;font-weight:800;color:currentColor;white-space:nowrap}.recsheet-open.ro-near{color:var(--warning)}.recsheet-open.ro-soon{color:var(--dhot)}.recsheet-open.ro-hot{color:var(--p5)}.recsheet-open.ro-open{color:var(--success)}
.recsheet-social{margin-bottom:13px;border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.recsheet-social-head{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr)}
.recsheet-social-state{min-width:0;display:flex;align-items:center;gap:8px;padding:9px 11px}
.recsheet-social-state+.recsheet-social-state{border-left:1px solid var(--hairline)}
.recsheet-social-state>svg{width:15px;height:15px;flex:0 0 auto;fill:none;stroke:var(--faint);stroke-width:1.9}
.recsheet-social-state>span{min-width:0;display:flex;flex-direction:column;gap:1px}.recsheet-social-state small{color:var(--faint);font-size:11px;font-weight:700}.recsheet-social-state b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px;font-weight:800}
.recsheet-review.done>svg,.recsheet-review.done b{color:var(--success);stroke:currentColor}.recsheet-review.empty b,.recsheet-review.locked b{color:var(--faint)}
.recsheet-people{display:flex;gap:7px;padding:9px;border-top:1px solid var(--hairline);overflow-x:auto;scrollbar-width:none}.recsheet-people::-webkit-scrollbar{display:none}
.recsheet-person{min-width:142px;max-width:176px;flex:1 0 142px;display:flex;align-items:center;gap:9px;padding:8px 9px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.recsheet-person>.avatar{width:36px;height:36px;border-radius:10px;font-size:14px}.recsheet-person>div{min-width:0;display:flex;flex-direction:column;gap:2px}.recsheet-person b,.recsheet-person span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recsheet-person b{font-size:12.5px}.recsheet-person span{color:var(--faint);font-family:var(--fn);font-size:9px}
.recsheet-acts{display:flex;flex-direction:column;gap:10px}
.recsheet-acts .btn{width:100%}
.recsheet-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}
.recsheet-list .btn.g{height:52px;justify-content:flex-start;gap:12px;padding:0 44px 0 16px;border:0;border-radius:0;background:transparent;box-shadow:none;font-size:14.5px;font-weight:700}
.recsheet-list .btn.g+.btn.g{border-top:1px solid var(--hairline)}
.recsheet-list .btn.g svg{color:var(--muted)}
.recsheet-list .btn.g::after{content:"";position:absolute;right:18px;top:50%;width:7px;height:7px;border-top:1.8px solid var(--faint);border-right:1.8px solid var(--faint);transform:translateY(-50%) rotate(45deg)}
@media(hover:hover){.recsheet-list .btn.g:hover{background:color-mix(in srgb,var(--text) 4%,transparent)}}
.recsheet-list .ra-visit,.recsheet-list .fmemo-count{right:36px!important}
.fmemo-count{margin-left:2px;font-size:11px;font-weight:800;padding:2px 7px;border-radius:6px;background:var(--tag-bg);color:var(--muted)}
.fmemo-count.fresh{background:var(--p5);color:#fff}
/* 기록 시트 새 배치(.recsheet-v2, 1차 확장안) — 무광 요약 카드 → 두 칸 정보 → 한 줄 상태 → 무광 목록 두 묶음. 이전 디자인은 옛 마크업이라 이 블록이 닿지 않는다 */
.record-action-sheet.recsheet-v2 .iconbtn.record-delete-action{border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)} /* 삭제 — 공유·닫기와 같은 유리, 빨강은 아이콘에만 */
.recsheet-v2 .recsum{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-items:center;padding:12px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface)}
.recsheet-v2 .recsum>.recth{width:56px;height:75px;border-radius:var(--r-sm);border-color:color-mix(in srgb,var(--text) 12%,transparent)}
.recsheet-v2 .recsum-main{min-width:0;display:flex;flex-direction:column;gap:2px}
.recsheet-v2 .recsum-t{font-size:16.5px;font-weight:800;line-height:1.3;letter-spacing:-.02em;overflow-wrap:anywhere}
.recsheet-v2 .recsum-s{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12.5px}
.recsheet-v2 .recsum-marks{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;min-height:18px}
.recsheet-v2 .recsum-marks:empty{display:none}
.recsheet-v2 .recsum-marks>*{margin:0;vertical-align:0}
.recsheet-v2 .recsum-rate{display:inline-flex;align-items:center;gap:3px}.recsheet-v2 .recsum-rate svg{flex:none}
.recsheet-v2 .recsum-rate b{font-family:var(--fn);font-size:13px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
/* 인생·FAILED — 기록 카드(팬텀) 표식과 같은 모양 */
.recsheet-v2 .alife{flex:none;background:#E8B84B;color:#231803;font-size:9.5px;font-weight:800;line-height:1;padding:2px 5px 3px;transform:rotate(-2deg);box-shadow:1.5px 1.5px 0 rgba(11,11,13,.8)}
.recsheet-v2 .mfail{flex:none;font-family:'Bebas Neue','Archivo Narrow',ui-monospace,monospace;font-size:12.5px;letter-spacing:1.4px;line-height:1;color:#E0473E;border:1.5px solid currentColor;padding:2px 5px 1px;transform:rotate(-4deg)}
.recsheet-v2 .recsum-none{color:var(--faint);font-size:11.5px;font-weight:600}
.recsheet-v2 .recsum-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.recsheet-v2 .recsum-kv>div{min-width:0;padding:10px 12px 11px;border:1px solid var(--border);border-radius:var(--r-field);background:var(--surface)}
.recsheet-v2 .recsum-kv small{display:block;color:var(--faint);font-size:11.5px;font-weight:700;line-height:16px}
.recsheet-v2 .recsum-kv b{display:block;margin-top:3px;color:var(--text);font-size:14px;font-weight:800;line-height:1.35;font-variant-numeric:tabular-nums;word-break:keep-all;overflow-wrap:anywhere}
.recsheet-v2 .kv-h{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}
.recsheet-v2 .recsum-faces{display:flex;align-items:center;flex:none;margin:-3px 0}
.recsheet-v2 .recsum-faces .avatar{width:21px;height:21px;margin-left:-5px;border-radius:50%;border:1.5px solid var(--surface);font-size:9px}.recsheet-v2 .recsum-faces .avatar:first-child{margin-left:0}
.recsheet-v2 .recsum-faces i{margin-left:3px;color:var(--faint);font-size:10.5px;font-style:normal;font-weight:800}
.recsheet-v2 .recsum-link{display:flex;align-items:flex-start;gap:10px;margin-top:8px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-field);background:var(--surface);color:var(--faint)}
.recsheet-v2 .recsum-link.on{color:var(--success)}.recsheet-v2 .recsum-link.wait{color:var(--warning)}
.recsheet-v2 .recsum-link>svg{width:18px;height:18px;flex:none;margin-top:1px;fill:none;stroke:currentColor;stroke-width:1.9}
.recsheet-v2 .recsum-link>span{min-width:0;display:flex;flex-direction:column;gap:2px}
.recsheet-v2 .recsum-link b{color:var(--text);font-size:13px;font-weight:800}.recsheet-v2 .recsum-link small{color:var(--muted);font-size:11.5px;line-height:1.45}
.recsheet-v2 .recsheet-open,.recsheet-v2 .recsheet-group{margin:8px 0 0}
.recsheet-v2 .recsheet-acts{margin-top:12px}
/* 행 — 52px·꺾쇠는 .recsheet-list 공용. 앞 아이콘은 의미색 우물(리뷰=금색, 재방문·모임 일정=파랑, 테마=청록, 메모=무채), 차수·개수 칩은 꺾쇠 앞 */
.recsheet-v2 .rs-group .btn.g{gap:11px;padding:0 38px 0 11px}
.recsheet-v2 .rs-group .ra-ico{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:var(--r-sm);color:var(--muted);background:color-mix(in srgb,var(--text) 7%,transparent)}
.recsheet-v2 .rs-group .ra-ico.gold{color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,transparent)}
.recsheet-v2 .rs-group .ra-ico.info{color:var(--info);background:color-mix(in srgb,var(--info) 14%,transparent)}
.recsheet-v2 .rs-group .ra-ico.accent{color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,transparent)}
.recsheet-v2 .rs-group .btn.g .ra-ico svg{width:17px;height:17px;color:inherit;stroke-width:1.9}
.recsheet-v2 .rs-group .ra-l{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;line-height:1.25;text-align:left}
.recsheet-v2 .rs-group .ra-l>*{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.recsheet-v2 .rs-group .ra-l small{color:var(--faint);font-size:11px;font-weight:600}
.recsheet-v2 .rs-group .btn.g .ra-visit,.recsheet-v2 .rs-group .btn.g .fmemo-count{position:static;flex:none;margin:0;transform:none}
/* 기록 시트 — 누르는 요약 카드(→ 테마 화면)·인원 칸(→ 일행 팝업). 꺾쇠는 목록 행(.recsheet-list)과 같은 모양, 누름은 옅은 면 변화만 */
.recsheet-v2 button.recsum,.recsheet-v2 .recsum-kv>button{position:relative;width:100%;font:inherit;color:inherit;text-align:left;transition:background-color .16s,border-color .16s}
.recsheet-v2 button.recsum{grid-template-columns:56px minmax(0,1fr) 10px;padding-right:16px}
.recsheet-v2 button.recsum::after,.recsheet-v2 .recsum-kv>button::after{content:"";width:7px;height:7px;border-top:1.8px solid var(--faint);border-right:1.8px solid var(--faint);transform:rotate(45deg)}
.recsheet-v2 button.recsum::after{justify-self:start}
.recsheet-v2 .recsum-kv>button{min-width:0;padding:10px 12px 11px;border:1px solid var(--border);border-radius:var(--r-field);background:var(--surface)}
.recsheet-v2 .recsum-kv>button::after{position:absolute;right:15px;bottom:17px}
.recsheet-v2 .recsum-kv>button>b{padding-right:14px}
.recsheet-v2 .kv-add{flex:none;color:var(--accent);font-size:11.5px;font-style:normal;font-weight:800;line-height:16px;white-space:nowrap} /* 일행 없는 인원 칸 → 일행 수정 시트 */
.recsheet-v2 button.recsum:active,.recsheet-v2 .recsum-kv>button:active{background:color-mix(in srgb,var(--text) 6%,var(--surface))}
@media(hover:hover){.recsheet-v2 button.recsum:hover,.recsheet-v2 .recsum-kv>button:hover{border-color:color-mix(in srgb,var(--text) 22%,var(--border))}}
/* 일행 팝업(기록 시트 위 레이어) — 겹친 얼굴·테마 맥락 카드 → 사람 목록(나·친구·직접 등록·인원만 기록된 나머지) → 일행 수정 */
.record-party-sheet .rp-hero{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface)}
.rp-stack{display:flex;align-items:center;flex:none;padding-left:9px}
.rp-stack .avatar{width:38px;height:38px;margin-left:-9px;border-radius:50%;border:2px solid var(--surface);font-size:14px}
.rp-stack i{display:grid;place-items:center;width:38px;height:38px;margin-left:-9px;border-radius:50%;border:2px solid var(--surface);background:var(--surface2);color:var(--muted);font:800 12px/1 var(--fn);font-style:normal}
.rp-ctx{min-width:0;display:flex;flex-direction:column;gap:3px}
.rp-ctx b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:800;letter-spacing:-.02em}
.rp-ctx span{color:var(--muted);font-size:12.5px;font-variant-numeric:tabular-nums;word-break:keep-all}
.rp-list{display:flex;flex-direction:column;margin-top:10px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);overflow:hidden}
.rp-row{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:62px;padding:10px 14px;font:inherit;color:var(--text);text-align:left}
.rp-row+.rp-row{border-top:1px solid var(--hairline)}
button.rp-row{padding-right:38px;transition:background-color .16s}
button.rp-row::after{content:"";position:absolute;right:18px;top:50%;width:7px;height:7px;border-top:1.8px solid var(--faint);border-right:1.8px solid var(--faint);transform:translateY(-50%) rotate(45deg)}
button.rp-row:active{background:color-mix(in srgb,var(--text) 6%,transparent)}
@media(hover:hover){button.rp-row:hover{background:color-mix(in srgb,var(--text) 4%,transparent)}}
.rp-row>.avatar{width:38px;height:38px;border-radius:10px;font-size:14px}
.rp-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rp-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:800}
.rp-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}
.rp-copy small:empty{display:none}
.rp-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.rp-tag{padding:2px 7px 3px;border-radius:var(--r-pill);font-size:11px;font-style:normal;font-weight:800;line-height:1.2;color:var(--muted);background:color-mix(in srgb,var(--text) 8%,transparent)}
.rp-tag.on{color:var(--success);background:color-mix(in srgb,var(--success) 14%,transparent)}
.rp-tag.wait{color:var(--warning);background:color-mix(in srgb,var(--warning) 15%,transparent)}
.rp-cnt{color:var(--faint);font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-row.ghost .rp-copy b{color:var(--muted)}
.rp-ghost{flex:none;display:grid;place-items:center;width:38px;height:38px;border:1.5px dashed color-mix(in srgb,var(--text) 26%,transparent);border-radius:10px;color:var(--faint);font:800 12.5px/1 var(--fn)}
.record-party-sheet .rp-edit{width:100%;margin-top:12px}
.record-party-sheet .rp-edit svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9}
/* 일행 수정 시트(기록 시트에서 교체) — 팀 카드(테마·인원·자리 줄) → 펼친 후보 목록(시트 높이를 채워 스크롤) → 바닥 저장 줄 [fb:211c1005] [fb:2cadd816]
   자리 줄은 높이가 고정이라 일행을 고르고 빼도 아래 목록이 밀리지 않는다. 후보는 빈 원 → 고르면 청록 원 체크 */
.rec-comp-sheet{height:min(86vh,760px)}
.rec-comp-sheet .sh-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:10px;overflow:hidden;padding-top:5px}
.rc-card{flex:none;border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);overflow:hidden}
.rc-ctx{display:flex;align-items:center;gap:11px;padding:10px 12px}
.rc-ctx>.recth{width:34px;height:46px;border-radius:var(--r-sm);border-color:color-mix(in srgb,var(--text) 12%,transparent)}
.rc-ctx>span:last-child,.rc-players>span{min-width:0;display:flex;flex-direction:column;gap:2px}
.rc-ctx b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:800;letter-spacing:-.02em}
.rc-ctx small,.rc-players small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.rc-team{padding:9px 0 11px;border-top:1px solid var(--hairline);background:color-mix(in srgb,var(--text) 2.5%,transparent)}
.rc-players{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 10px 0 12px}
.rc-players b{font-size:13.5px;font-weight:800}
.rc-players .stepper{flex:none}.rc-players .stepper button{transition:opacity .15s,transform .1s}.rc-players .stepper button:active{transform:scale(.92)}.rc-players .stepper button:disabled{opacity:.35}
/* 자리 줄 — 넘치면 가로로 밀어 본다(스크롤바 숨김). 자리 = 얼굴 40 + 이름 한 줄 */
.rc-roster{display:flex;gap:4px;height:70px;margin-top:9px;padding:5px 12px 0;overflow:auto hidden;overscroll-behavior-x:contain;scrollbar-width:none;outline:0;-webkit-overflow-scrolling:touch}
.rc-roster::-webkit-scrollbar{display:none}
.rc-seat{position:relative;flex:none;display:flex;flex-direction:column;align-items:center;gap:5px;width:54px;padding:0;border:0;background:none;color:var(--text);font:inherit;text-align:center}
.rc-seat .avatar{width:40px;height:40px;border-radius:12px;font-size:15px}
.rc-seat>b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:700;line-height:15px}
.rc-seat.me>b,.rc-seat.ghost>b{color:var(--muted);font-weight:600}
.rc-seat.me .avatar{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px color-mix(in srgb,var(--text) 30%,transparent)}
.rc-seat.new .avatar{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--accent)}
.rc-seat-x{position:absolute;top:-5px;right:2px;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:var(--text);color:var(--bg);box-shadow:0 0 0 2px var(--surface);transition:transform .12s}
.rc-seat-x svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round}
button.rc-seat{cursor:pointer}button.rc-seat:active .avatar{transform:scale(.93)}button.rc-seat:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:12px}
@media(hover:hover){button.rc-seat:hover .rc-seat-x{transform:scale(1.12)}}
.rc-ghost{display:grid;place-items:center;width:40px;height:40px;border:1.5px dashed color-mix(in srgb,var(--text) 28%,transparent);border-radius:12px;color:var(--muted);font:800 12.5px/1 var(--fn)}
/* 후보 목록 — 묶음 머리는 띠 없이 작은 글씨, 줄은 빈 원 체크(고르면 채움), 검색칸은 본문 글꼴 */
.rec-comp-sheet .rc-field{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;margin:0}
.rec-comp-sheet .comp-pick{flex:1 1 auto;min-height:0}
.rec-comp-sheet .comp-pick .comp-drop{flex:1 1 auto;min-height:0;max-height:none;border-color:var(--border);border-radius:var(--r-card);box-shadow:none}
.rec-comp-sheet .comp-search{height:48px;border-bottom-color:var(--hairline)}
.rec-comp-sheet .comp-search input{font-family:var(--fb);font-size:13.5px;font-weight:600}
.rec-comp-sheet .comp-group-head{min-height:0;padding:13px 14px 5px;border-bottom:0;background:none;color:var(--faint);font-size:11px;font-weight:800;letter-spacing:.02em}
.rec-comp-sheet .comp-group-head.friend{margin-top:4px;border-top:1px solid var(--hairline)}
.rec-comp-sheet .comp-group-head button{padding:5px 9px;font-size:11px}
.rec-comp-sheet .comp-opt{min-height:54px;padding:8px 14px;border-top:0}
.rec-comp-sheet .comp-opt.on{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.rec-comp-sheet .comp-opt .avatar.sm{width:34px;height:34px;border-radius:10px;font-size:13px}
.rec-comp-sheet .comp-nm b{font-size:14px}.rec-comp-sheet .comp-nm small{font-size:11.5px;color:var(--muted)}
.rec-comp-sheet .comp-ck{display:grid;place-items:center;width:22px;height:22px;border:1.5px solid color-mix(in srgb,var(--text) 24%,transparent);border-radius:50%;transition:background-color .15s,border-color .15s}
.rec-comp-sheet .comp-opt.on .comp-ck{border-color:var(--accent);background:var(--accent);color:var(--bg)}
.rec-comp-sheet .comp-ck svg{width:13px;height:13px;stroke-width:3}
.rec-comp-sheet .comp-party .comp-party-av .wc-i{margin-left:-14px}.rec-comp-sheet .comp-party .comp-party-av .wc-i:first-child{margin-left:0}
.rec-comp-sheet .comp-note{padding:6px 14px 12px;font-size:12px}
.rc-save{flex:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding-top:10px;border-top:1px solid var(--hairline)}
.rc-save>div{min-width:0;display:flex;flex-direction:column;gap:2px}
.rc-save b{font-size:13.5px;font-weight:800;font-variant-numeric:tabular-nums}
.rc-save small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.rc-save .btn{min-width:108px;height:44px}.rc-save .btn:disabled{opacity:.38}
/* 공유 시트 공통 — 테마 라벨 */
.msh-theme{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint)}
.msh-theme svg{flex:0 0 auto;width:15px;height:15px;fill:none;stroke:var(--muted);stroke-width:1.9}
.msh-theme span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800}
/* 공유 대상(친구) 행 */
.msh-list{display:flex;flex-direction:column;gap:8px}
.msh-row{display:flex;align-items:center;gap:11px;padding:10px 11px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.msh-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.msh-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:800}
.msh-copy small{color:var(--faint);font-size:11.5px;line-height:1.4;word-break:keep-all}.msh-copy small span{white-space:nowrap}
.msh-send{flex:0 0 auto;display:flex;align-items:center;gap:5px;height:36px;padding:0 14px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-weight:800;font-size:12.5px;white-space:nowrap;transition:opacity .15s,transform .1s}
.msh-send svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.2}
.msh-send:active{transform:scale(.96)}
.msh-send:disabled{opacity:.55}
.msh-send.again{color:var(--muted)}
.msh-send.sent{background:color-mix(in srgb,var(--success) 14%,var(--surface2));color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--border));box-shadow:none;opacity:1}
.msh-empty,.fmemo-empty{padding:34px 18px}
/* 마스터 한정 — 미플레이 친구 그룹(스포일러 경고 앰버 톤) */
.msh-divider{display:flex;align-items:center;gap:8px;margin:16px 2px 2px}
.msh-divider::after{content:"";flex:1;height:1px;background:var(--hairline)}
.msh-divider span{color:var(--muted);font-size:12px;font-weight:800}
.msh-divider i{font-style:normal;font-size:11px;font-weight:800;color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent);padding:1px 8px;border-radius:6px}
.msh-unplayed-chip{display:inline-block;margin-left:6px;font-style:normal;font-size:11px;font-weight:800;color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent);padding:0 6px;border-radius:6px;vertical-align:1px;line-height:1.5}
.msh-row.unplayed .msh-copy small{color:var(--warning)}
/* 받은 메모(친구의 메모) 행 — 미저장은 골드 NEW */
.fmemo-row{appearance:none;width:100%;display:flex;align-items:center;gap:11px;padding:11px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .14s,background .14s,transform .1s}
.fmemo-row+.fmemo-row{margin-top:8px}
.fmemo-row:hover{border-color:var(--glass-line-hi)}
.fmemo-row:active{transform:scale(.99)}
.fmemo-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fmemo-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800}
.fmemo-copy small{color:var(--faint);font-size:11.5px}
.fmemo-chip{flex:0 0 auto;font-size:11px;font-weight:800;padding:2px 7px;border-radius:6px;line-height:1.35}
.fmemo-chip.new{background:var(--p5);color:#fff}
.fmemo-chip.saved{background:color-mix(in srgb,var(--success) 14%,var(--surface2));color:var(--success)}
.fmemo-go{display:grid;place-items:center;flex:0 0 auto}
.fmemo-go svg{width:14px;height:14px;fill:none;stroke:var(--faint);stroke-width:2}
/* 공유 메모 뷰어 하단 액션 바 — memo-full 헤더와 같은 마감(헤어라인) */
.memo-share-foot{position:relative;z-index:1;display:flex;align-items:center;gap:10px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--hairline);background:color-mix(in srgb,var(--bg2) 96%,transparent);backdrop-filter:blur(16px)}
.msf-save{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 18px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-weight:900;font-size:14px;white-space:nowrap;transition:transform .1s}
.msf-save svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2}
.msf-save:active{transform:scale(.97)}
.msf-hint{flex:1;min-width:0;color:var(--faint);font-size:11.5px;line-height:1.45}
.msf-saved{flex:1;min-width:0;display:flex;align-items:center;gap:10px}
.msf-saved>svg{flex:0 0 auto;width:18px;height:18px;fill:none;stroke:var(--success);stroke-width:2.4}
.msf-saved span{min-width:0;display:flex;flex-direction:column;gap:2px}
.msf-saved b{font-size:12.5px;color:var(--success)}
.msf-saved small{color:var(--faint);font-size:11px;line-height:1.4}
.msf-del{flex:0 0 auto;width:44px;height:44px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--danger) 36%,var(--border));border-radius:50%;background:color-mix(in srgb,var(--danger) 8%,var(--surface2));color:var(--danger);transition:background-color .15s,transform .1s}
.msf-del svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.msf-del:hover{background:color-mix(in srgb,var(--danger) 14%,var(--surface2))}
.msf-del:active{transform:scale(.95)}
html[data-theme=light] .memo-share-foot{background:rgba(248,249,251,.97)}
/* 메모 편집 닫기 가드 — 전체 화면이 confirm-root 를 점유하므로 인라인 오버레이 */
.memo-close-guard{position:fixed;inset:0;z-index:6;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 55%,transparent);backdrop-filter:blur(3px);opacity:0;transition:opacity .16s}
.memo-close-guard.show{opacity:1}
.mcg-card{width:min(320px,86%);display:flex;flex-direction:column;padding:18px 16px 13px;border:1px solid var(--border);border-radius:22px;background:var(--bg2);box-shadow:0 22px 60px rgba(0,0,0,.35)}
.mcg-card b{font-size:15px;letter-spacing:-.01em}
.mcg-card p{margin:4px 0 14px;color:var(--muted);font-size:13px;line-height:1.5}
.mcg-acts{display:flex;gap:8px}
.mcg-acts .btn{flex:1}
.mcg-stay{margin-top:12px;align-self:center;padding:4px 8px;color:var(--muted);background:none;font-size:12.5px;font-weight:750;text-decoration:underline;text-underline-offset:3px}
html[data-theme=light] .mcg-card{box-shadow:0 22px 60px rgba(32,41,56,.2)}

/* 공유 메모 — '내 메모로 추가' */
.msf-fresh{flex-wrap:wrap}
.msf-fresh .msf-hint{flex-basis:100%;order:9}
/* 좁은 폰 — 저장(주 동작)을 한 줄 전폭으로, 내 메모로 추가·신고는 다음 줄 */
@media(max-width:374px){.memo-share-foot{flex-wrap:wrap}.msf-fresh .msf-save{flex-basis:100%}.msf-fresh .msf-adopt{flex:1 1 auto;justify-content:center}.msf-saved{flex-basis:100%}.memo-share-foot:not(.msf-fresh) .msf-adopt{flex:1 1 auto;justify-content:center}}
.msf-adopt{flex:0 0 auto;display:flex;align-items:center;gap:7px;height:48px;padding:0 15px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-weight:800;font-size:13px;white-space:nowrap;transition:border-color .15s,transform .1s}
.msf-adopt svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.4;color:var(--muted)}
@media(hover:hover){.msf-adopt:hover{border-color:var(--glass-line-hi)}}
.msf-adopt:active{transform:scale(.97)}
.msf-adopted{flex:0 0 auto;display:flex;align-items:center;gap:6px;color:var(--success);font-size:12px;font-weight:800}
.msf-adopted svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.4}
.fmemo-chip.adopted{background:color-mix(in srgb,var(--p5) 15%,var(--surface2));color:var(--p5)}

/* 내 메모 허브 — 테마당 10개 목록·이름·관리 */
.tmemo-sheet .msh-theme{margin-bottom:11px}
.tmemo-list{display:flex;flex-direction:column;gap:8px}
.tmemo-row{display:flex;align-items:stretch;gap:7px}
.tmemo-main{appearance:none;flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .14s,transform .1s}
@media(hover:hover){.tmemo-main:hover{border-color:var(--glass-line-hi)}}
.tmemo-main:active{transform:scale(.99)}
.tmemo-idx{flex:0 0 auto;min-width:18px;font-family:var(--fb);font-size:12px;color:var(--faint);font-weight:700;font-variant-numeric:tabular-nums}
.tmemo-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tmemo-copy b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tmemo-copy small{color:var(--faint);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tmemo-gift{display:inline-block;margin-left:6px;padding:0 6px;border-radius:6px;background:color-mix(in srgb,var(--info) 14%,transparent);color:var(--info);font-style:normal;font-size:11px;font-weight:800;line-height:1.5;vertical-align:1px}
.tmemo-go{display:grid;place-items:center;flex:0 0 auto}
.tmemo-go svg{width:13px;height:13px;fill:none;stroke:var(--faint);stroke-width:2}
.tmemo-act{width:44px;height:auto;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted)}
.tmemo-act.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,var(--border));background:color-mix(in srgb,var(--danger) 8%,var(--surface2));box-shadow:none}
.tmemo-foot{display:flex;gap:8px;margin-top:12px}
.tmemo-foot .btn{flex:1}
.tmemo-foot .btn[hidden]{display:none}

/* 공유 시트 — 보낼 메모 다중 선택 */
.msh-memos{margin-top:11px;padding:10px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.msh-memos-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding:0 2px}
.msh-memos-head b{font-size:13px}
.msh-memos-head i{font-style:normal;font-size:12px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.mshm-tools{display:flex;align-items:center;gap:9px}
.mshm-all{min-height:30px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800;transition:border-color .14s}
@media(hover:hover){.mshm-all:hover{border-color:var(--glass-line-hi)}}
.mshm-all:active{transform:scale(.95)}
.msh-memo{appearance:none;width:100%;display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .14s,background-color .14s}
.msh-memo+.msh-memo{margin-top:6px}
.mm-ck{width:20px;height:20px;flex:0 0 auto;display:grid;place-items:center;border:1.5px solid var(--glass-line-hi);border-radius:6px;color:transparent;transition:.14s}
.mm-ck svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:3}
.msh-memo.on{border-color:color-mix(in srgb,var(--p5) 40%,var(--border))}
.msh-memo.on .mm-ck{background:var(--lens);border-color:transparent;color:#fff}
.mm-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.mm-copy b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm-copy small{color:var(--faint);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 테마 상세 '내 메모' 카운트 */
/* 내 메모 카운트 — 4번째 그리드 칸(잉크 톤, 셰브론 앞) */
.detail-memo-quick:has(.detail-memo-n){grid-template-columns:18px minmax(0,1fr) auto 16px}
.detail-memo-n{font-style:normal;font-family:var(--fb);font-size:11.5px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}

/* 메모 확장 소개 목업 */
.mmi-mock{display:flex;flex-direction:column;gap:7px;padding:10px}
.mmi-row{display:flex;gap:9px;align-items:center;padding:9px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.mmi-row>.mono{font-size:11px;color:var(--faint);font-weight:800}
.mmi-row b{display:block;font-size:12px}
.mmi-row small{display:block;color:var(--faint);font-size:11.5px;margin-top:1px}
.mmi-points{display:flex;flex-direction:column;gap:9px;margin-top:12px}
.mmi-points span{display:grid;grid-template-columns:16px 1fr;gap:2px 8px;align-items:center}
.mmi-points svg{width:14px;height:14px;fill:none;stroke:var(--success);stroke-width:2.6}
.mmi-points b{font-size:12.5px}
.mmi-points small{grid-column:2;color:var(--muted);font-size:12px;line-height:1.4}

/* view transition */
.view-enter{animation:viewIn .28s ease}
@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* 상세 진입: 히어로 슬라이드업 + 본문 계단 등장 (M13) */
.view-enter .dhero{animation:heroUp .42s cubic-bezier(.2,.85,.25,1) both}
@keyframes heroUp{from{opacity:0;transform:translateY(-10px) scale(1.05)}to{opacity:1;transform:none}}
.view-enter .factbar{animation:rowIn .4s ease .04s both}
/* 기본 딜레이(.45s) = 열거 스태거 다음 순번 — 9번째 이후 블록(리뷰 카드 등)이 먼저 튀지 않게 */
.view-enter .dbody>*{animation:rowIn .42s ease .45s both}
.view-enter .dbody>*:nth-child(1){animation-delay:.05s}
.view-enter .dbody>*:nth-child(2){animation-delay:.1s}
.view-enter .dbody>*:nth-child(3){animation-delay:.15s}
.view-enter .dbody>*:nth-child(4){animation-delay:.2s}
.view-enter .dbody>*:nth-child(5){animation-delay:.25s}
.view-enter .dbody>*:nth-child(6){animation-delay:.3s}
.view-enter .dbody>*:nth-child(7){animation-delay:.35s}
.view-enter .dbody>*:nth-child(8){animation-delay:.4s}
@keyframes rowIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* 시트 슬라이드·토스트·토글은 transition — 함께 죽여야 reduced-motion 완전 준수 */
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* 키홀 스피너 (세계관 통일 · L19) */
.kh-spin{display:flex;justify-content:center;padding:56px 0}
.kh-spin svg{animation:khpulse 1.25s ease-in-out infinite}
@keyframes khpulse{0%,100%{opacity:.3;transform:scale(.95);stroke:var(--faint)}50%{opacity:.95;transform:scale(1.03);stroke:var(--accent)}}
.empty .ic svg{width:52px;height:52px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round} /* 채움 기본값(검정)이 다크 모드에서 안 보이던 버그 — 라인 아이콘으로 통일 */

/* 대비 개선 (L15) */
.fact .k,.pcap,.countline,.section .h{color:#8A97A6}
.trow .mid .s{color:#A6B2BE}

/* 정렬 셀렉트 chevron (L16) */
.sortsel svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.4}
.sortsheet .sh-body{padding-top:5px}.sortlead{margin:0 1px 12px;color:var(--muted);font-size:12.5px;line-height:1.5}.sortchoices{display:grid;grid-template-columns:1fr 1fr;gap:7px}.sortchoices:not(.hasfast)>.sortchoice:last-child{grid-column:1/-1}.sortchoice,.sortdirection{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 24px;align-items:center;gap:8px;text-align:left;color:var(--text);border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:border-color .15s,background .15s,transform .15s}.sortchoice{min-height:68px;padding:10px 9px 10px 11px}.sortchoice:active,.sortdirection:active{transform:scale(.985)}.sortchoice>span,.sortdirection>span{min-width:0;display:flex;flex-direction:column;gap:3px}.sortchoice b,.sortdirection b{font-size:13.5px;line-height:1.3;word-break:keep-all}.sortchoice small,.sortdirection small{color:var(--faint);font-size:11px;line-height:1.4;word-break:keep-all}.sortchoice>i,.sortdirection>i{width:22px;height:22px;display:grid;place-items:center;border:1px solid var(--hairline);border-radius:50%;color:var(--faint);font-style:normal}.sortchoice>i svg,.sortdirection>i svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.5}.sortchoice.on,.sortdirection.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}.sortchoice.on small,.sortdirection.on small{color:rgba(255,255,255,.8)}.sortchoice.on>i,.sortdirection.on>i{color:var(--p5);border-color:transparent;background:#fff}.sortsection{margin-top:15px;padding-top:12px;border-top:1px solid var(--hairline)}.sortsection>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 1px 8px}.sortsection>div:first-child b{font-size:13px}.sortsection>div:first-child span{color:var(--faint);font-size:10.5px;text-align:right}.sortdirections{display:grid;grid-template-columns:1fr 1fr;gap:7px}.sortdirection{min-height:55px;padding:8px 8px 8px 10px}
.clr svg{width:15px;height:15px;stroke:var(--faint);fill:none;stroke-width:2.2}

/* 통일된 컷: statcard도 패널과 같은 우상+좌하 챔퍼(구 상단 사선 대체) */
.statcard{border-radius:16px}

/* 찜 활성 (M8) */
.ctarow .c.on{color:var(--gold);border-color:rgba(255,207,92,.4);background:rgba(255,207,92,.08)}
.ctarow .c.on svg{fill:var(--gold);stroke:var(--gold)}

/* 위험 확정 버튼 (M6/M7) */
.btn.danger-solid{color:var(--danger);background:color-mix(in srgb,var(--danger) 13%,var(--surface2));border-color:color-mix(in srgb,var(--danger) 36%,transparent);box-shadow:none}

/* 터치 타깃 확대 (L8) */
.searchbar .clr{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:none;border:none;flex:0 0 auto;margin-right:-6px}
.del-btn{width:38px;height:38px;flex:0 0 auto}

/* 평점 등급 범례 (L11 → fb:dfe5aa4f P5 블레이드 리디자인) — HUD 스펙트럼 스트립 + 등급색 스큐 블레이드 */
.gpanel .gp-head{display:flex;align-items:center;justify-content:space-between;margin:7px 0 12px} /* 상단 7px 여백 — 커스텀 버튼과 우상단 코너 챔퍼 간격 */
.gpanel .gp-head .pcap{margin-bottom:0}
.gpanel .gs-bar{height:11px}
.gpanel .gs-cuts{height:13px;margin:4px 0 12px}
.legend{display:flex;gap:6px}
.legend .lg{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding:9px 2px 7px;border:1px solid var(--hairline);border-top:2px solid var(--gc);border-radius:8px;background:var(--surface2)} /* 등급 범례 — 기울임·발광 없이 무광 칸, 등급 색은 윗선으로만 */ /* 내용물 역스큐 — 글리프·텍스트는 직립 */
.legend .lg.life{border-color:color-mix(in srgb,var(--gold) 40%,var(--hairline));border-top-color:var(--gc);background:color-mix(in srgb,var(--gold) 8%,var(--surface2))}
.legend .lg-ic{height:24px;display:flex;align-items:center}
.legend .lg-n{font-size:11px;font-weight:800;color:var(--text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.legend .lg-r{font-size:11px;font-weight:700;color:color-mix(in srgb,var(--gc) 72%,var(--text))}

/* 평점 등급 커스터마이징 (fb:aa4e35fb) — HUD 스펙트럼 + 등급별 이름·경계 편집 */
.gcustom{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-family:inherit;font-size:12px;font-weight:800;letter-spacing:-.01em;transition:scale .2s var(--ease-press),border-color .14s} /* 평점 등급 편집 — 공용 유리 알약 */
.gcustom svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}
@media(hover:hover){.gcustom:hover{border-color:var(--glass-line-hi)}}
.gcustom:active{scale:.96}
.gspec{padding:2px 2px 0}
.gs-bar{display:flex;height:16px;gap:3px}
.gs-bar i{display:block;height:100%;min-width:5px;transition:width .28s cubic-bezier(.22,.9,.32,1)}
.gs-cuts{position:relative;height:16px;margin:5px 0 12px}
.gs-cuts span{position:absolute;transform:translateX(-50%);font-size:11px;color:var(--faint);transition:left .28s cubic-bezier(.22,.9,.32,1)}
.grade-sheet .hint{margin-bottom:16px}
.grade-sheet .gs-bar{gap:0;overflow:hidden;border-radius:3px}
.grade-sheet .gs-bar i{min-width:0;flex:none;transform:none;transition:none}
.g-scale{display:flex;justify-content:space-between;margin:5px 0 12px;font-size:10px;color:var(--faint)}
.grow{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;column-gap:8px;padding:10px 0;border-top:1px solid var(--hairline)}
.grow .g-ic{width:28px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--surface2);border:1px solid var(--hairline);clip-path:polygon(7px 0,100% 0,100% 100%,0 100%,0 7px)}
.grow .g-name{width:100%;min-width:0;height:40px;padding:8px 6px;font-size:14px;font-weight:700}
.grow .g-cut{display:flex;align-items:center;gap:3px}
.grow .g-cut button{width:36px;height:40px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:18px;display:flex;align-items:center;justify-content:center;border-radius:8px}
.grow .g-cut button:disabled{opacity:.3;cursor:default}
.grow .g-cut button:focus-visible,.g-value:focus-visible,.g-slider:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.grow .g-r{min-width:132px;text-align:center;font-size:12px;color:var(--muted);font-weight:700}
.g-number{display:flex;flex-direction:column;align-items:center;gap:2px}
.g-number>span{color:var(--muted);font-size:9px;line-height:1}
.g-value{width:54px;min-width:0;height:30px;padding:2px 0;border:0;border-bottom:1px solid var(--border);border-radius:0;background:var(--surface2);color:var(--text);text-align:center;font-size:16px;font-weight:700;appearance:textfield;-moz-appearance:textfield}
.g-value::-webkit-inner-spin-button,.g-value::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.g-value[aria-invalid=true]{border-color:var(--danger)}
.grade-sheet .gspec{padding:0 22px}
.g-selected{min-height:22px;text-align:center;font-size:12px;font-weight:700;color:var(--text)}
.g-track{position:relative;height:88px;margin:4px 0}
.g-track .gs-bar{position:absolute;top:36px;left:0;right:0}
.g-slider{position:absolute;top:0;width:44px;height:44px;padding:0;transform:translateX(-50%);border:0;background:transparent;color:var(--text);cursor:ew-resize;touch-action:none;z-index:1}
.g-slider[data-gs="1"],.g-slider[data-gs="3"]{top:44px}
.g-slider:before{content:"";position:absolute;left:21px;top:22px;width:2px;height:22px;background:var(--text)}
.g-slider[data-gs="1"]:before,.g-slider[data-gs="3"]:before{top:0}
.g-slider>span{position:absolute;left:11px;top:8px;width:22px;height:28px;border:2px solid var(--text);border-radius:7px;background:var(--surface2)}
.g-slider>span:after{content:"";position:absolute;inset:5px;border-left:3px solid var(--gc);border-right:3px solid var(--gc)}
.g-slider[data-active=true],.g-slider:focus{z-index:2}
.g-slider[data-active=true]>span{border-color:var(--accent);background:var(--surface3)}
.g-error{color:var(--danger);font-size:11px;line-height:1.5}
.g-error:not(:empty){margin-top:10px}
.g-foot{display:flex;gap:10px;margin-top:16px}
.g-foot .btn{flex:1;justify-content:center}

/* rating stepper */
.stepper{display:flex;align-items:center;gap:14px}
.stepper .val{font-family:var(--fn);font-weight:700;font-size:26px;min-width:54px;text-align:center}
.stepper button{width:42px;height:42px;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:20px;color:var(--text);display:flex;align-items:center;justify-content:center}
.stepper.stepper-sm{gap:10px}
.stepper.stepper-sm button{width:38px;height:38px;font-size:18px;border-radius:50%}
.stepper.stepper-sm .val{font-size:20px;min-width:34px}
.stepper .pun{font-size:13px;color:var(--muted);margin-left:2px}
.toggle{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid var(--hairline)}
.toggle .sw{width:44px;height:26px;border-radius:14px;background:var(--surface3);position:relative;transition:.16s;flex:0 0 auto}
.toggle .sw i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--muted);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .26s var(--ease-out),background .16s}
.toggle.on .sw{background:var(--sw-lens);box-shadow:var(--sw-lens-sh)}
.toggle.on .sw i{left:21px;background:var(--sw-knob);box-shadow:var(--sw-knob-sh)}
.toggle .lbl{display:block;font-size:14px;font-weight:600}
.toggle .sub{display:block;font-size:11.5px;color:var(--faint)}
.toggle:is(button){width:100%;text-align:left}
/* 설정 — 이동 행(스위치가 아닌 버튼 행)은 모두 꺾쇠, 행 높이 52px */
.view-settings .toggle{min-height:52px}
.view-settings button.toggle:not([role=switch]){position:relative;padding-right:28px}
.view-settings button.toggle:not([role=switch])::after{content:"";position:absolute;right:8px;top:50%;width:7px;height:7px;border-top:1.8px solid var(--faint);border-right:1.8px solid var(--faint);transform:translateY(-50%) rotate(45deg)}
.notify-device-toggle[aria-disabled=true]{opacity:.62;cursor:default}
.notify-device-status{min-height:42px;display:flex;align-items:center;gap:7px;margin:2px 0 4px;padding:7px 0 7px 54px;border-top:1px solid var(--hairline);color:var(--faint);font-size:10.5px}
.notify-device-status>b{color:var(--muted);font-size:10.5px}.notify-device-status.ok>b{color:var(--success)}.notify-device-status.blocked>b{color:var(--danger)}
.notify-device-status button{height:30px;min-height:0;margin-left:auto;padding:0 12px;font-size:11px}
/* 알림 종류별 on/off 리스트 — 기본 접힘, 제목으로 펼치면 종류별 스위치 + 모두 켜기/끄기 */
.notiftypes{margin-top:4px}
.notiftypes-head{display:flex;align-items:center;width:100%;gap:7px;padding:11px 0;border:0;border-top:1px solid var(--hairline);background:none;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}
.notiftypes-head>span:first-child{font-size:12px;font-weight:700;letter-spacing:.01em}
.notiftypes-state{margin-left:auto;font-size:11px;color:var(--faint)}
.notiftypes-head i{display:flex;width:16px;height:16px;color:var(--faint);transition:transform .16s}
.notiftypes-head i svg{width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:2}
.notiftypes.open .notiftypes-head i{transform:rotate(180deg)}
.notiftypes-body{display:none;padding-top:1px}
.notiftypes.open .notiftypes-body{display:block}
.notiftypes-note{margin:2px 0 9px;padding:9px 11px;color:var(--muted);border:1px solid var(--border);border-radius:12px;background:var(--matte-tint);font-size:11px;line-height:1.5;word-break:keep-all}
.notiftypes-all{display:flex;justify-content:flex-end;gap:6px;padding-bottom:2px}
.notiftypes-all button{font-family:inherit;font-size:11px;font-weight:600;color:var(--muted);background:var(--surface3);border:1px solid var(--hairline);border-radius:999px;padding:3px 11px;cursor:pointer}
.notiftypes-all button:disabled{opacity:.4;cursor:default}
.notiftypes .toggle{padding:10px 0}
/* 종류 행 = 종류 스위치(알림 내역+푸시) + 오른쪽 작은 푸시 스위치. 구분선은 행이 갖는다 */
.notiftype{display:flex;align-items:center;gap:8px;border-top:1px solid var(--hairline)}
.notiftype>.toggle{flex:1 1 auto;min-width:0;width:auto;border-top:0}
.notif-push{flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:44px;padding:8px 0 8px 2px;color:var(--faint);font-size:10.5px;font-weight:700;line-height:1}
.notif-push .sw{width:34px;height:20px;border-radius:11px;background:var(--surface3);position:relative;transition:.16s}
.notif-push .sw i{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--muted);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .26s var(--ease-out),background .16s}
.notif-push.on{color:var(--muted)}.notif-push.on .sw{background:var(--sw-lens);box-shadow:var(--sw-lens-sh)}.notif-push.on .sw i{left:17px;background:var(--sw-knob);box-shadow:var(--sw-knob-sh)}
.notif-push:disabled{opacity:.35;cursor:default}

/* 계정별 기기 알림 온보딩 — 장식보다 전달 범위·선택 결과를 먼저 보여준다. */
.notify-onboard-hero{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.notify-onboard-hero>span{width:44px;height:44px;display:grid;place-items:center;color:var(--text);border-radius:50%;background:var(--tag-bg)}
.notify-onboard-hero svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9}.notify-onboard-hero b{display:block;font-size:14px;line-height:1.3}.notify-onboard-hero p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}
.notify-onboard-delivery{margin:12px 2px;color:var(--muted);font-size:12px;line-height:1.6;word-break:keep-all}
.notify-onboard-actions{display:grid;gap:8px}.notify-onboard-actions .btn{width:100%;justify-content:center}.notify-onboard-actions .btn svg{width:18px;height:18px;fill:none;stroke:currentColor}
.notify-onboard-never{height:32px;width:100%;margin-top:4px;color:var(--faint);border:0;background:none;font-family:inherit;font-size:12px;text-decoration:underline;text-underline-offset:3px}
@media(max-width:359px){.notify-onboard-hero{grid-template-columns:40px minmax(0,1fr);gap:10px;padding:11px}.notify-onboard-hero>span{width:40px;height:40px}.notify-onboard-delivery{font-size:11.5px}.notify-device-status{padding-left:0}}

/* ============================================================== 알림 피드 (탐색 벨)
   발송된 모든 알림을 한 곳에서 — 분류별 페르소나5식 고유 디자인(아이콘·액센트색 --nc·앵귤러 태그). */
/* 벨(과 예약 보기에서 같은 자리를 쓰는 검색 버튼) — 보기 도구·소셜 머리와 같은 유리 동그라미.
   테두리 두께·폭 전환은 예약 보기 접힘 규칙이 그대로 쓰므로 여기선 색·바탕만 바꾼다. 배지는 발광 없이 바탕색 테두리로 떼어 놓는다 */
.notifbtn{position:relative}
.notifbtn,.avsearchbtn{border-radius:50%;border-color:var(--glass-line);color:var(--text);
  background:var(--glass-bg);
  box-shadow:var(--glass-hi)}
.notifbtn svg,.avsearchbtn svg{transition:scale .2s cubic-bezier(.3,.7,.4,1)}
@media(hover:hover){.notifbtn:hover,.avsearchbtn:hover{border-color:color-mix(in srgb,var(--text) 20%,transparent)}}
.notifbtn:active svg,.avsearchbtn:active svg{scale:.9}
.notifbtn:focus-visible,.avsearchbtn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.notifbtn .navdot{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--p5);color:var(--paper);font-size:9px;font-weight:800;font-family:var(--fn);line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--bg)}
.sh-head .ttl .sh-eng{font-family:var(--fe);font-size:9.5px;font-weight:800;letter-spacing:.22em;color:var(--faint);margin-left:9px;vertical-align:2px}
/* 모두 지우기 — 머리 동작 유리 캡슐, 누르면 위험색 글자 */
.ntf-clear{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 13px 0 11px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:-.01em;color:var(--muted);background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi);transition:color .14s,border-color .14s,scale .2s var(--ease-press)}
.ntf-clear svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}
@media(hover:hover){.ntf-clear:hover{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent)}}.ntf-clear:active{scale:.96}
.ntf-clear.hide{display:none}
.notiffeed-sheet .sh-body{padding-top:4px}
.notiffeed{display:flex;flex-direction:column;gap:16px;padding:4px 0 10px}
.ntf-group{display:flex;flex-direction:column;gap:9px}
.ntf-group-head{display:flex;align-items:center;gap:7px;padding:0 3px;color:var(--muted)}
.ntf-group-head::after{content:"";height:1px;flex:1;background:var(--hairline)}
.ntf-group-head b{font-size:11.5px;font-weight:900}.ntf-group-head span{order:2;min-width:20px;height:20px;padding:0 6px;display:grid;place-items:center;border-radius:10px;background:var(--surface3);font-family:var(--fn);font-size:9px;color:var(--faint)}
.ntf-group.is-new .ntf-group-head{color:var(--text)}
/* 알림 카드 — 무광 14px. 분류색(--nc)은 아이콘·분류명에만, 새 알림은 면을 옅게 물들여 구분(카드별 상태 문구는 묶음 제목이 대신) */
.ntf,.notif-detail-sheet{--nc:var(--ncd,#9BA8B6)}
.ntf{position:relative;display:flex;align-items:center;gap:4px;padding:12px 4px 12px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:14px;cursor:pointer;transition:background-color .14s,border-color .14s,scale .2s var(--ease-press)}
@media(hover:hover){.ntf:hover{border-color:color-mix(in srgb,var(--nc) 38%,var(--border))}}
.ntf:active{scale:.99}
.ntf.unread{background:color-mix(in srgb,var(--nc) 5%,var(--surface2));border-color:color-mix(in srgb,var(--nc) 22%,var(--border))}
.ntf:not(.unread) .ntf-ttl{font-weight:650;color:color-mix(in srgb,var(--text) 86%,var(--muted))}
.ntf:not(.unread) .ntf-ic{filter:saturate(.6);opacity:.78}
.ntf-main{display:flex;align-items:flex-start;gap:12px;flex:1;min-width:0;cursor:pointer}
/* 아이콘 — 분류색 원형 우물(발광 없음) */
.ntf-ic{flex:0 0 auto;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--nc);background:color-mix(in srgb,var(--nc) 14%,transparent)}
.ntf-ic svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9}

.ntf-cmain{flex:1;min-width:0}
.ntf-tagline{display:flex;align-items:baseline;gap:0;min-width:0;margin-bottom:2px;font-size:12px;font-weight:700;color:var(--faint)}
.ntf-tag{font-weight:800;color:var(--nc)}
.ntf-tag{white-space:nowrap}

.ntf-time{white-space:nowrap}.ntf-time::before{content:"·";margin:0 5px}
.ntf-ttl{font-size:14px;font-weight:800;color:var(--text);line-height:1.4;letter-spacing:-.015em;word-break:break-word}
.ntf-sub{font-size:13px;color:var(--muted);line-height:1.5;margin-top:3px;word-break:break-word}
/* 개별 삭제 — 보이는 아이콘은 작게, 누르는 영역은 40px */
.ntf-del{flex:0 0 auto;align-self:center;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:var(--faint);background:transparent;border:0;border-radius:12px;transition:color .14s,background-color .14s}
.ntf-del svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.9}
@media(hover:hover){.ntf-del:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}}.ntf-del:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.ntf-empty{padding:34px 8px}
.ntfd-head{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid color-mix(in srgb,var(--nc) 30%,var(--border));border-radius:14px;background:color-mix(in srgb,var(--nc) 7%,var(--surface2))}
.ntfd-head>span{flex:0 0 auto;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--nc);background:color-mix(in srgb,var(--nc) 14%,transparent)}.ntfd-head>span svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9}
.ntfd-head small{display:block;margin-bottom:4px;color:var(--muted);font-size:10.5px}.ntfd-head h2{font-size:17px;line-height:1.4;word-break:keep-all}
.ntfd-body{margin:12px 0 0;padding:13px 14px;color:var(--text);background:var(--surface2);border:1px solid var(--border);border-radius:12px;font-size:13.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.ntfd-seen{display:flex;align-items:center;gap:6px;margin-top:11px;color:var(--success);font-size:11.5px;font-weight:800}.ntfd-seen svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2}
@media(max-width:359px){.ntf{padding-left:10px}.ntf-main{gap:10px}.ntf-del{width:36px}}

/* ============================================================== POSTER CALENDAR
   앱 크롬(세그먼트·HUD)은 크림슨/골드 P5 유지. .cal-stage 하위만 --c* 미감 토큰으로 스코프. */
/* 기록 보기 3탭(리스트·아카이브·달력) — 글래스 캡슐 트랙 위를 선택 표시 렌즈(.rt-glass)가 미끄러진다.
   렌즈는 절제한 붉은 유리(옅은 상단 광택·가는 테두리, 2026-09-27 유저 지시로 광택·글로우·반동을 낮춤).
   전환(.rt-go)은 반동 없는 감속 이동 + 살짝 늘어났다 복원, 탭 아래 형제 요소는 이동 방향에서 짧게 페이드·슬라이드.
   내 기록·친구/모임원 기록·소셜 메뉴(.stabs) 공용 — 탭 수는 --n(기본 3) */
.rectabs{--rt-pad:4px;--rt-gap:2px;--i:0;--n:3;position:relative;z-index:2;isolation:isolate;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:var(--rt-gap);margin:4px 18px 10px;padding:var(--rt-pad);border-radius:999px;
  background:var(--glass-bg);
  border:1px solid var(--glass-line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),inset 0 -1px 0 rgba(0,0,0,.16);
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%)}
.rt-glass{position:absolute;z-index:0;top:var(--rt-pad);bottom:var(--rt-pad);left:var(--rt-pad);width:calc((100% - var(--rt-pad) * 2 - var(--rt-gap) * (var(--n) - 1)) / var(--n));border-radius:999px;pointer-events:none;
  translate:calc(var(--i) * (100% + var(--rt-gap))) 0;
  background:var(--lens);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 2px 6px -2px color-mix(in srgb,var(--p5) 32%,transparent)}
.rt-glass::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.3),rgba(255,255,255,.03) 50%,rgba(255,255,255,.08));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.rtab{position:relative;z-index:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 6px;border-radius:999px;color:var(--muted);font-weight:800;font-size:clamp(11.5px,3.4vw,13px);letter-spacing:-.01em;white-space:nowrap;transition:color .2s,scale .2s cubic-bezier(.3,.7,.4,1)}
.rtab svg{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){.rtab:not(.on):hover{color:var(--text)}}
.rtab.on{color:#fff}
.rtab:active{scale:.96}
.rtab:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}
.rectabs.rt-go .rt-glass{animation:rtGlassMove .46s cubic-bezier(.25,1,.5,1) both,rtGlassStretch .46s cubic-bezier(.4,0,.2,1) both}
.rectabs.rt-go .rtab.on{animation:rtLabelIn .3s ease .08s both}
.rectabs.rt-go .rtab.rt-was{animation:rtLabelOut .28s ease both}
.rectabs.rt-go~*{animation:rtPaneIn .38s cubic-bezier(.25,1,.5,1) both}
.rectabs.rt-go-r~*{--rt-dx:12px}.rectabs.rt-go-l~*{--rt-dx:-12px}
.rectabs.rt-go+*+*{animation-delay:.03s}.rectabs.rt-go+*+*+*{animation-delay:.06s}
@keyframes rtGlassMove{from{translate:calc(var(--from) * (100% + var(--rt-gap))) 0}}
@keyframes rtGlassStretch{0%{scale:1 1}40%{scale:1.05 .97}100%{scale:1 1}}
@keyframes rtLabelIn{from{color:var(--muted);text-shadow:none}}
@keyframes rtLabelOut{from{color:#fff}}
@keyframes rtPaneIn{from{opacity:0;translate:var(--rt-dx,0) 0}}
@media(prefers-reduced-motion:reduce){.rectabs.rt-go .rt-glass,.rectabs.rt-go .rtab,.rectabs.rt-go~*,.vt-seg.vt-go .vt-thumb,.vt-seg.vt-go button{animation:none}.rtab,.vt-seg button{transition:none}}
/* 보기 도구 줄 — 아카이브·달력 공용: 왼쪽 보기 조절(정렬·밀도), 오른쪽 동작(내보내기·옵션). 탭 트랙과 같은 글래스 캡슐 언어.
   탐색 툴바의 필터 캡슐(.filtrow)·정렬 칩, 기록 탭 머리의 계획·일괄 입력 캡슐(.record-head-actions),
   소셜 머리 캡슐(.soc-acts)·친구 찾기 검색 버튼, 프로필 머리 캡슐(.me-acts)도 같은 유리를 쓴다 [fb:36ecc8e7] */
.vtools{display:flex;align-items:center;justify-content:space-between;gap:8px}
.vt-view{display:flex;align-items:center;gap:6px;min-width:0}
.vt-seg,.vt-chip,.vt-acts,.filtrow,.explore-countline .count-sort,.toolbar .em-sort,.record-head-actions,.soc-acts,.me-acts,.searchbar .findbtn{border:1px solid var(--glass-line);border-radius:999px;
  background:var(--glass-bg);
  box-shadow:var(--glass-hi)}
/* 밀도 — 썸(.vt-thumb)이 선택 칸 뒤에 깔리고, 전환 때 탭 렌즈와 같은 스프링으로 한 번 미끄러진다 */
.vt-seg{--rt-gap:0px;--i:0;position:relative;isolation:isolate;display:grid;grid-template-columns:1fr 1fr;flex:none;padding:2px}
.vt-thumb{position:absolute;z-index:0;top:2px;bottom:2px;left:2px;width:calc((100% - 4px) / 2);border-radius:999px;pointer-events:none;translate:calc(var(--i) * 100%) 0;
  background:linear-gradient(180deg,color-mix(in srgb,#fff 11%,var(--surface3)),color-mix(in srgb,#fff 5%,var(--surface3)));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 4px rgba(0,0,0,.22)}
html[data-theme=light] .vt-thumb{background:#fff;box-shadow:inset 0 0 0 .5px rgba(20,27,35,.06),0 1px 3px rgba(20,27,35,.12)}
.vt-seg button{position:relative;z-index:1;height:28px;padding:0 12px;border-radius:999px;color:var(--faint);font-size:12px;font-weight:800;white-space:nowrap;transition:color .2s}
.vt-seg button:not([aria-pressed=true]):hover{color:var(--text)}
.vt-seg button[aria-pressed=true]{color:var(--text)}
.vt-seg.vt-go .vt-thumb{animation:rtGlassMove .4s cubic-bezier(.25,1,.5,1) both,rtThumbStretch .4s cubic-bezier(.4,0,.2,1) both}
.vt-seg.vt-go button[aria-pressed=true]{animation:rtSegLabelIn .3s ease .08s both}
@keyframes rtThumbStretch{0%{scale:1 1}40%{scale:1.04 .97}100%{scale:1 1}}
@keyframes rtSegLabelIn{from{color:var(--faint)}}
.vt-chip{display:inline-flex;flex:none;align-items:center;gap:5px;height:34px;padding:0 12px;color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap;transition:color .14s,border-color .14s}
.vt-chip svg{width:15px;height:15px;flex:none;stroke:currentColor;fill:none;stroke-width:2}
@media(hover:hover){.vt-chip:hover{color:var(--text);border-color:var(--glass-line-hi)}}
.vt-acts{display:flex;flex:none;overflow:hidden}
.vt-ic{width:40px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:color .14s,background .14s}
.vt-ic+.vt-ic{border-left:1px solid var(--glass-line)}
.vt-ic svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9}
.vt-ic:not(:disabled):hover{color:var(--text);background:color-mix(in srgb,var(--text) 6%,transparent)}
.vt-ic:disabled{opacity:.4;cursor:not-allowed}
/* 밀도 전환 뷰 트랜지션(app.js setCalDensity) — 달력·아카이브 스크롤 영역만 크로스페이드·줌, 나머지 화면은 그대로 교체.
   스크롤 컨테이너에 이름을 줘야 자기 영역으로 잘린 스냅샷이 되어 탭·HUD·탭바 위로 넘치지 않는다 */
html[data-density-shift]::view-transition-old(root),html[data-density-shift]::view-transition-new(root){animation:none;mix-blend-mode:normal}
html[data-density-shift] .cal-scroll,html[data-density-shift] .scroll:has(.rec-arch){view-transition-name:rec-density}
html[data-density-shift=compact]{--dz-old:.985;--dz-new:1.015}
html[data-density-shift=cozy]{--dz-old:1.015;--dz-new:.985}
::view-transition-group(rec-density){animation-duration:.5s}
::view-transition-old(rec-density){animation:rtDensOut .2s cubic-bezier(.4,0,1,1) both}
::view-transition-new(rec-density){animation:rtDensIn .5s cubic-bezier(.22,1,.36,1) both}
@keyframes rtDensOut{to{opacity:0;scale:var(--dz-old,1);filter:blur(1.5px)}}
@keyframes rtDensIn{from{opacity:0;scale:var(--dz-new,1);filter:blur(1.5px)}}
.vt-seg button:focus-visible,.vt-chip:focus-visible,.vt-ic:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
/* 기록 탭 기본 화면 선택 (프로필) — 리스트·아카이브·달력 픽토그램 칩. p5 슬랜트·레드 글로우 */
.recdefgrid{display:flex;gap:2px;margin-top:6px;padding:4px;border:1px solid var(--glass-line);border-radius:20px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.recdefchip{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:11px 4px 9px;border-radius:16px;background:transparent;color:var(--muted);font-weight:800;font-size:12px;letter-spacing:-.01em;white-space:nowrap;transition:color .18s var(--ease-out),background .18s var(--ease-out),scale .18s var(--ease-press)}.recdefchip:active{scale:.97}
.recdefchip svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){.recdefchip:not(.on):hover{color:var(--text)}}
.recdefchip.on{color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}

/* 탐색 기본 지역 (프로필) — 전국/지역 2분할 + HUD 드롭다운 */
.expref .pcap{margin-bottom:10px}
.expref-seg>.expref-mode{min-height:48px}
.exreg-select{margin-top:9px}
.exreg-trigger{width:100%;height:50px;padding:0 12px 0 14px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border);border-radius:12px;background:var(--surface2);color:var(--text);transition:border-color .16s}
@media(hover:hover){.exreg-trigger:hover{border-color:var(--glass-line-hi)}}
.exreg-id{display:flex;align-items:baseline;gap:9px;min-width:0}
.exreg-id i{font-style:normal;font-size:12px;font-weight:700;color:var(--muted)}
.exreg-id b{font-size:15px;font-weight:900}
.exreg-chev{width:25px;height:25px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:transform .18s}
.exreg-chev svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}
.exreg-select.open .exreg-chev{transform:rotate(180deg)}
.exreg-drop{margin-top:7px;padding:10px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:0 14px 34px rgba(0,0,0,.38);position:relative;overflow:hidden;animation:exregDropIn .18s cubic-bezier(.2,.9,.3,1) both}
.exreg-drop[hidden]{display:none}
.exreg-head{position:relative;display:flex;align-items:center;justify-content:space-between;margin:0 2px 8px;font-size:12px;font-weight:800;color:var(--muted)}
.exreg-head b{font-size:11px;font-weight:700;color:var(--faint)}
.exreg-grid{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.exreg-opt{height:38px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:12.5px;font-weight:800;transition:color .14s,scale .2s var(--ease-press)}.exreg-opt:active{scale:.96}
@media(hover:hover){.exreg-opt:not(.on):hover{color:var(--text)}}
.exreg-opt.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
.exreg-opt svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2}
.expref-hint{margin-top:9px}
@keyframes exregDropIn{from{opacity:0;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.exreg-drop{animation:none}}

/* HUD (달·페이저·히트·레이아웃) — 스크롤 위 고정 헤더 */
.calhud{padding:2px 14px 9px;border-bottom:1px solid var(--border);background:var(--bg);position:relative;z-index:3}
.calnavrow{display:flex;align-items:center;gap:9px}
.calchev{width:34px;height:34px;flex:none;border-radius:9px;border:1px solid var(--border);background:var(--surface2);color:var(--text);display:flex;align-items:center;justify-content:center;transition:.14s}
.calchev:not(:disabled):hover{border-color:var(--accentDim)}
.calchev svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.calchev:disabled{opacity:.28;pointer-events:none}
.caltitle{flex:1;min-width:0}
.calmonth{font-weight:900;font-size:18px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calmonth-trigger{display:flex;align-items:center;gap:4px;max-width:100%;padding:0;border:0;background:transparent;color:var(--text);text-align:left}
.calmonth-trigger>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.calmonth-trigger svg{width:14px;height:14px;flex:none;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2}
.calmonth-trigger:hover{color:var(--accent)}
.cal-month-hint{margin:0 0 18px;font-size:13px;line-height:1.5;color:var(--muted)}
.cal-year-row{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.cal-year-row .calchev{width:44px;height:44px}
.cal-year-select{position:relative;flex:1;min-width:0;color:var(--text)}
.cal-year-select select{appearance:none;width:100%;height:48px;padding:0 36px 0 18px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);color:var(--text);font:inherit;font-size:20px;font-weight:800;cursor:pointer}
.cal-year-select svg{position:absolute;right:14px;top:16px;width:16px;height:16px;pointer-events:none;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2}
.cal-month-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.cal-month-option{min-width:0;min-height:68px;padding:10px 4px 8px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
.cal-month-option b{font-family:var(--fn);font-size:20px;line-height:1.2}
.cal-month-option b span{margin-left:3px;font-family:var(--fb);font-size:12px;font-weight:600}
.cal-month-option small{min-height:14px;font-size:10px;line-height:14px;color:var(--muted)}
.cal-month-option.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent)}
.cal-month-option.on small{color:var(--accent)}
.cal-month-option:not(:disabled):hover{border-color:var(--accent);background:var(--surface2)}
.cal-month-option:disabled,.cal-month-shortcuts button:disabled{opacity:.35;cursor:default}
.cal-month-shortcuts{display:flex;gap:8px;margin-top:18px}
.cal-month-shortcuts button{flex:1;min-height:44px;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);color:var(--muted);font-size:12px;font-weight:700}
.cal-month-shortcuts button:not(:disabled):hover,.cal-month-shortcuts button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.calheat{font-family:var(--fn);font-size:10.5px;color:var(--faint);margin-top:1px}
.calheat .lifek{color:var(--gold)}
.calheat .plank{color:var(--accent);text-shadow:0 0 8px rgba(63,224,208,.3)}
.calheat .spendk{color:var(--gold);font-weight:700;text-shadow:0 0 8px rgba(255,207,92,.28)}
/* ── 프로필 총 지출 ── */
.spendpanel .pcap{margin-bottom:12px}
.spendpanel .pcap-x{margin-left:auto;font-family:var(--fn);text-transform:none;letter-spacing:0;font-size:10px;color:var(--faint);font-weight:600}
.spendbig{font-size:clamp(25px,7.3vw,32px);font-weight:800;color:var(--gold);letter-spacing:-.02em;text-shadow:0 0 18px rgba(255,207,92,.22);line-height:1.05}
.spendseg{margin-top:13px}
.calspark{flex:none;opacity:.92}
.calctrls{margin-top:9px}
.calopt-toggles .toggle:first-of-type{border-top:none;padding-top:2px}
.cal-scroll{padding:0}
/* 라이트 앱 안의 어두운 달력 미감은 화면용 스테이지 경계만 또렷하게 한다. 내보내기 샌드박스에는 적용되지 않는다. */
html[data-theme=light] .cal-scroll .cal-stage:not(.theme-paper){margin-top:8px;outline:1px solid rgba(63,78,96,.24);outline-offset:-1px}
.cal-empty{padding:56px 24px}

/* ---- STAGE (미감 스코프 루트) ---- */
.cal-stage{background:var(--cbg);color:var(--ctext);font-family:var(--cbody);padding:10px 10px 34px;min-height:100%;position:relative;z-index:1}
.cal-stage .thumb{position:relative;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;background-color:var(--csurface2);overflow:hidden;flex:none}
.cal-stage .thumb .ph{color:var(--cfaint);font-weight:800;line-height:1}
.cal-stage .lifestar{position:absolute;color:var(--cstar);line-height:1;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.55),0 0 1px rgba(0,0,0,.55);z-index:2}
html[data-theme=light] .cal-stage .lifestar{color:var(--life-star-bright)} /* 평점·미감 토큰은 유지하고 인생테마 별만 밝게 */
/* 포스터 평점 오버레이 — 좌하단 슬랜트 컷 HUD 칩(액센트 상단 라인). 포스터 중심 레이아웃(그리드·포스터월)만 노출,
   아젠다/타임라인은 기존 텍스트(★n) 유지. 내보내기(.cal-export)도 같은 마크업이라 PNG에 그대로 실림. */
.cal-stage .prate{position:absolute;left:0;bottom:0;z-index:2;display:none;align-items:baseline;font-family:var(--cmono);font-weight:800;line-height:1;color:#fff;background:linear-gradient(115deg,rgba(4,6,10,.82),rgba(4,6,10,.5));border-top:1px solid color-mix(in srgb,var(--caccent) 78%,transparent);clip-path:polygon(0 0,calc(100% - 6px) 0,100% 100%,0 100%);padding:2.5px 8px 2.5px 4px;font-size:9px;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.65);pointer-events:none}
.cal-stage .prate i{font-style:normal;color:var(--cstar);font-size:.88em;margin-right:2px;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--cstar) 70%,transparent))}
/* 평점 옆 등급 아이콘 — 칩(.prate)·서브라인(.subrate) 공통 마크업. 기본(모바일)은 숨김, 노출은
   데스크탑(desktop.css .cal-scroll)·PNG(.cal-export 블록)만 — 아이콘이 뜨면 ★(i)를 대신한다 */
.cal-stage .prate svg,.cal-stage .subrate svg{display:none}
.cal-stage .subrate i{font-style:normal}
.cal-stage.mobile.layout-grid .fleck .prate{display:inline-flex}
.cal-stage.mobile.layout-grid .fleck .prate i{display:none} /* 극소 타일 — 숫자만 */
.cal-stage.mobile.layout-grid[data-density=compact] .fleck .prate{font-size:8px;padding:2px 6px 2px 3px}
.cal-stage.mobile.layout-wall .prate{display:inline-flex;left:4px;top:21px;bottom:auto;font-size:10px;padding:3px 9px 3px 5px}
/* 몇 번째 기록 순번 칩(#N) — prate 와 세트인 슬랜트 컷 HUD (# 글리프는 액센트). 기본 숨김, 레이아웃 스코프가 노출 결정.
   아젠다·타임라인은 썸네일 좌하단(prate 미노출 자리), 포스터월은 좌측 HUD 열 스택, 그리드는 데스크탑(.cal-scroll)·PNG(.cal-export)만 — 모바일 극소 타일 제외 */
.cal-stage .pseq{position:absolute;left:0;bottom:0;z-index:2;display:none;align-items:baseline;font-family:var(--cmono);font-weight:800;line-height:1;color:#fff;background:linear-gradient(115deg,rgba(4,6,10,.85),rgba(4,6,10,.55));border-top:1px solid color-mix(in srgb,var(--caccent) 78%,transparent);clip-path:polygon(0 0,calc(100% - 6px) 0,100% 100%,0 100%);padding:2.5px 8px 2.5px 4px;font-size:9px;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.65);pointer-events:none}
.cal-stage .pseq i{font-style:normal;color:var(--caccent);font-size:.85em;margin-right:1.5px;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--caccent) 70%,transparent))}
.cal-stage.layout-agenda .acard .thumb .pseq,.cal-stage.layout-timeline .tlcard .thumb .pseq{display:inline-flex}
.cal-stage.layout-timeline .tlcard .thumb .pseq{font-size:8px;padding:2px 6px 2px 3px} /* 타임라인 좁은 썸네일(조밀 32px) — 4자리(#999+)도 잘리지 않게 */
.cal-stage.mobile.layout-wall .pseq{display:inline-flex;left:4px;top:21px;bottom:auto;font-size:10px;padding:3px 9px 3px 5px;border-top:none;border-bottom:1px solid color-mix(in srgb,var(--caccent) 78%,transparent);clip-path:polygon(0 0,100% 0,calc(100% - 6px) 100%,0 100%)}
.cal-stage.mobile.layout-wall .prate+.pseq{top:39px} /* 평점 칩과 동시 노출 — 좌측 HUD 열에서 한 칸 아래로 */
/* 일정(예정) 엔트리의 순번 — 플레이하면 갖게 될 예정 번호. 플랜 글로우 링과 같은 블루로 구분 */
.cal-stage .thumb.plan .pseq,.cal-stage .pent.plan .pseq{border-color:rgba(95,182,255,.8)}
.cal-stage .thumb.plan .pseq i,.cal-stage .pent.plan .pseq i{color:#5fb6ff;filter:drop-shadow(0 0 3px rgba(95,182,255,.6))}
/* 아젠다·타임라인 카드 배지 줄 (옵션: LEFT·공개 HINT) */
.cal-stage .cbadges{display:flex;align-items:center;gap:5px;margin-top:4px;flex-wrap:wrap}
.cal-stage .cbadges .leftbadge{margin-left:0}
/* 일정(미플레이) 포스터 — 은은한 푸른 글로우 링, 달력 테마와 무관한 공통 시그널 (그리드 fleck·아젠다/타임라인 thumb·포스터월 pent) */
.cal-stage .thumb.plan,.cal-stage .pent.plan{border-color:rgba(95,182,255,.55);box-shadow:0 0 0 1px rgba(95,182,255,.42),0 0 10px rgba(95,182,255,.34),0 0 22px rgba(63,224,208,.16);animation:calPlanGlow 3.2s ease-in-out infinite}
@keyframes calPlanGlow{0%,100%{box-shadow:0 0 0 1px rgba(95,182,255,.42),0 0 10px rgba(95,182,255,.34),0 0 22px rgba(63,224,208,.16)}50%{box-shadow:0 0 0 1px rgba(95,182,255,.68),0 0 14px rgba(95,182,255,.5),0 0 26px rgba(63,224,208,.3)}}
@media(prefers-reduced-motion:reduce){.cal-stage .thumb.plan,.cal-stage .pent.plan{animation:none}}
/* iOS(html.ios, app.js 부트 판별) — 정적 box-shadow 는 타 플랫폼과 동일 렌더되지만(webkit 대조 검증),
   box-shadow 키프레임 애니메이션은 기기 합성에서 링을 다르게 보이게 함 → 기본 프레임 고정(reduced-motion 과 동일) */
html.ios .cal-stage .thumb.plan,html.ios .cal-stage .pent.plan{animation:none}
/* 재방문 포스터 — 예정 링과 같은 방식의 연주황 글로우 링 (재방 예정은 예정 블루가 우선 — calPosterHTML). 제목 옆 RE 딱지와 세트 */
.cal-stage .thumb.revisit,.cal-stage .pent.revisit{border-color:rgba(233,161,139,.6);box-shadow:0 0 0 1px rgba(233,161,139,.45),0 0 10px rgba(233,161,139,.36),0 0 22px rgba(255,207,92,.15);animation:calRevisitGlow 3.2s ease-in-out infinite}
@keyframes calRevisitGlow{0%,100%{box-shadow:0 0 0 1px rgba(233,161,139,.45),0 0 10px rgba(233,161,139,.36),0 0 22px rgba(255,207,92,.15)}50%{box-shadow:0 0 0 1px rgba(233,161,139,.7),0 0 14px rgba(233,161,139,.52),0 0 26px rgba(255,207,92,.28)}}
@media(prefers-reduced-motion:reduce){.cal-stage .thumb.revisit,.cal-stage .pent.revisit{animation:none}}
html.ios .cal-stage .thumb.revisit,html.ios .cal-stage .pent.revisit{animation:none}
/* 달력 카드 제목 옆 RE 딱지 — 아젠다·타임라인·포스터월 */
.cal-stage .at .rvbadge,.cal-stage .tt .rvbadge{font-size:8.5px;margin-left:5px}
.cal-stage .cap-t .rvbadge{font-size:8px;margin-left:4px;padding:0 4px}

/* ---- GRID (모바일 포스터-플렉 모자이크) ---- */
.cal-stage.mobile.layout-grid .grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--chairline);border-left:1px solid var(--chairline);border-radius:var(--cradius);overflow:hidden}
.cal-stage.mobile.layout-grid .dow{padding:6px 0;text-align:center;font-family:var(--cmono);font-size:9px;font-weight:700;letter-spacing:.4px;color:var(--cmuted);background:var(--csurface);border-right:1px solid var(--chairline);border-bottom:1px solid var(--chairline)}
.cal-stage.mobile.layout-grid .dow.sun{color:var(--cdanger)}
.cal-stage.mobile.layout-grid .dow.sat{color:var(--caccent)}
.cal-stage.mobile.layout-grid .cell{min-width:0;overflow:hidden;min-height:64px;border-right:1px solid var(--chairline);border-bottom:1px solid var(--chairline);padding:3px 3px 4px}
.cal-stage.mobile.layout-grid .cell.pad{background:rgba(127,127,127,.05)} /* 전/다음 달 — 살짝 침하 */
.cal-stage.mobile.layout-grid .daynum.out{opacity:.3}
.cal-stage.mobile.layout-grid .cell.has{cursor:pointer;-webkit-tap-highlight-color:transparent}
.cal-stage.mobile.layout-grid .cell.has:active{background:var(--csurface)}
.cal-stage.mobile.layout-grid .daynum{font-family:var(--cmono);font-size:10px;font-weight:700;color:var(--cfaint);margin-bottom:3px;line-height:1}
.cal-stage.mobile.layout-grid .cell.has .daynum{color:var(--ctext)}
.cal-stage.mobile.layout-grid .daynum.sun,.cal-stage.mobile.layout-grid .cell.has .daynum.sun{color:var(--cdanger)}
.cal-stage.mobile.layout-grid .daynum.sat,.cal-stage.mobile.layout-grid .cell.has .daynum.sat{color:var(--caccent)}
.cal-stage.mobile.layout-grid .daynum.hol,.cal-stage.mobile.layout-grid .cell.has .daynum.hol{color:var(--cdanger)}
/* 여유(기본): 포스터 쇼케이스 — 1개=풀폭, 2개=반폭×포스터 높이, 여백 살짝(2px) */
.cal-stage.mobile.layout-grid .flecks{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:2px}
.cal-stage.mobile.layout-grid .flecks.n1{grid-template-columns:1fr} /* 1개인 날은 포스터 크게 */
.cal-stage.mobile.layout-grid .flecks.n2{aspect-ratio:3/4} /* 2개인 날: 반 폭 × 세로로 길게 — 1개짜리 포스터와 같은 높이 */
.cal-stage.mobile.layout-grid .flecks.n2 .fleck{aspect-ratio:auto;min-height:0}
.cal-stage.mobile.layout-grid .fleck{aspect-ratio:3/4;border-radius:3px;border:1px solid var(--chairline)}
.cal-stage.mobile.layout-grid .fleck .ph{font-size:8px}
.cal-stage.mobile.layout-grid .fleck .lifestar{top:0;right:1px;font-size:8px}
.cal-stage.mobile.layout-grid .more{position:absolute;right:1px;bottom:1px;font-family:var(--cmono);font-size:8px;font-weight:800;color:var(--caccentText);background:var(--caccent);border-radius:4px;padding:1px 4px;line-height:1;box-shadow:0 0 0 1px rgba(0,0,0,.2)}
/* 조밀: 확대 없이 균일 반폭 타일 — 행 높이 축소, 한 화면에 최대한 많이 (표시 수도 3→4, JS cap) */
.cal-stage.mobile.layout-grid[data-density=compact] .cell{min-height:52px;padding:2px}
.cal-stage.mobile.layout-grid[data-density=compact] .daynum{margin-bottom:2px}
.cal-stage.mobile.layout-grid[data-density=compact] .flecks{gap:1px}
.cal-stage.mobile.layout-grid[data-density=compact] .flecks.n1{grid-template-columns:1fr 1fr}
.cal-stage.mobile.layout-grid[data-density=compact] .flecks.n2{aspect-ratio:auto}
.cal-stage.mobile.layout-grid[data-density=compact] .flecks.n2 .fleck{aspect-ratio:3/4}
/* 조밀 5개 이상은 타일 전부가 DOM에 있음(.many, JS) — 모바일은 4개까지만 노출(+더보기),
   전부 보기는 데스크탑(desktop.css .cal-scroll)·PNG(.cal-export)가 반높이 타일로 해제 */
.cal-stage.mobile.layout-grid[data-density=compact] .flecks.many .fleck:nth-child(n+5){display:none}

/* ---- AGENDA (단일 컬럼 카드) ---- */
.cal-stage.layout-agenda .agenda{padding:2px 2px 10px}
.cal-stage.layout-agenda .day-sec{padding:12px 4px 4px;border-bottom:1px solid var(--chairline)}
.cal-stage.layout-agenda .day-sec:last-child{border-bottom:none}
.cal-stage.layout-agenda .day-label{display:flex;align-items:baseline;gap:9px;margin-bottom:8px}
.cal-stage.layout-agenda .day-label .dd{font-size:17px;font-weight:800;color:var(--ctext)}
.cal-stage.layout-agenda .day-label .dw{font-family:var(--cmono);font-size:11px;color:var(--cmuted)}
.cal-stage.layout-agenda .day-label .dw.sun{color:var(--cdanger)}
.cal-stage.layout-agenda .day-label .dw.sat{color:var(--caccent)}
.cal-stage.layout-agenda .day-label.hol .dd,.cal-stage.layout-agenda .day-label.hol .dw{color:var(--cdanger)}
.cal-stage.layout-agenda .day-label .dn{margin-left:auto;font-family:var(--cmono);font-size:10px;color:var(--cfaint)}
.cal-stage.layout-agenda .acards{display:grid;grid-template-columns:1fr;gap:7px}
.cal-stage.layout-agenda .acard{position:relative;display:flex;gap:11px;min-width:0;background:var(--csurface);border:1px solid var(--chairline);border-radius:calc(var(--cradius) + 2px);padding:8px;align-items:center;box-shadow:var(--cshadow)}
.cal-stage.layout-agenda .acard .thumb{width:46px;height:62px;border-radius:6px}
.cal-stage.layout-agenda .acard .thumb .ph{font-size:16px}
.cal-stage.layout-agenda .acard .thumb .lifestar{top:4px;right:4px;left:auto;margin-left:0;font-size:12px}
.cal-stage.layout-agenda .am{min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center}
.cal-stage.layout-agenda .am .at{font-size:14px;font-weight:700;line-height:1.3;color:var(--ctext);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:break-word}
.cal-stage.layout-agenda .am .asub{font-family:var(--cmono);font-size:10px;color:var(--cmuted);margin-top:3px}
.cal-stage.layout-agenda .am .ast{font-size:11px;color:var(--cfaint);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-stage.layout-agenda .akey{flex:none;align-self:center}
.cal-stage.layout-agenda .akey svg{display:block}
/* 플레이 시간대(시작→끝) 오른쪽 HUD 블록. 날짜 시트(opt.span)·아젠다·타임라인 카드(옵션 TIME) 공통 */
.cal-stage .aspan{flex:none;align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative;padding:2px 3px 2px 12px;margin-left:1px;font-family:var(--cmono);text-align:center}
.cal-stage .aspan::before{content:"";position:absolute;left:2px;top:7px;bottom:7px;width:2px;border-radius:2px;background:linear-gradient(180deg,var(--caccent),color-mix(in srgb,var(--caccent) 20%,transparent))}
.cal-stage .aspan .ss{font-size:14.5px;font-weight:800;line-height:1;letter-spacing:.02em;color:var(--ctext);white-space:nowrap}
.cal-stage .aspan .se{font-size:12px;font-weight:700;line-height:1;letter-spacing:.02em;color:var(--cmuted);white-space:nowrap}
.cal-stage .aspan .sarrow{width:0;height:0;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:4px solid var(--caccent);opacity:.85;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--caccent) 55%,transparent))}
.cal-stage .aspan.noend .slabel{font-size:8px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--cfaint);margin-top:2px}
/* 타임라인 카드는 폰트·썸네일이 아젠다보다 작아 시간대도 한 톤 작게 */
.cal-stage.layout-timeline .aspan{padding-left:10px}
.cal-stage.layout-timeline .aspan .ss{font-size:13px}
.cal-stage.layout-timeline .aspan .se{font-size:11px}
.cal-stage.layout-agenda .pool .day-label .dd{font-size:15px}
/* 아젠다 조밀 — 카드·썸네일·간격 압축, 제목 1줄 */
.cal-stage.layout-agenda[data-density=compact] .day-sec{padding:8px 4px 3px}
.cal-stage.layout-agenda[data-density=compact] .day-label{margin-bottom:6px}
.cal-stage.layout-agenda[data-density=compact] .acards{gap:5px}
.cal-stage.layout-agenda[data-density=compact] .acard{padding:6px;gap:9px}
.cal-stage.layout-agenda[data-density=compact] .acard .thumb{width:38px;height:51px}
.cal-stage.layout-agenda[data-density=compact] .am .at{font-size:13px;-webkit-line-clamp:1}
.cal-stage .cal-poolhint{padding:14px 6px 4px;font-size:12px;color:var(--cfaint);text-align:center}
/* 달력 '날짜 미정' 칸 [fb:fc705c62] — 그리드 아래, 기간(10월 중·올해 중)별 포스터 줄. 달력 테마 토큰(--c*)만 써 모든 달력 테마·라이트/다크를 따른다 */
.cal-stage .calflex{margin-top:12px;padding:10px 10px 2px;border:1px dashed var(--chairline);border-radius:var(--cradius);background:color-mix(in srgb,var(--csurface) 55%,transparent)}
.cal-stage .calflex .cf-h{display:flex;align-items:baseline;gap:8px;margin:0 2px 8px}
.cal-stage .calflex .cf-h b{font-size:13px;font-weight:800;color:var(--ctext)}
.cal-stage .calflex .cf-n{margin-left:auto;font-family:var(--cmono);font-size:10px;color:var(--cfaint);white-space:nowrap}
.cal-stage .calflex .cf-g{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;padding:9px 0 10px;border-top:1px solid var(--chairline)}
.cal-stage .calflex .cf-lbl{min-width:54px;padding:4px 7px;border:1px dashed color-mix(in srgb,var(--caccent) 60%,transparent);border-radius:6px;font-size:11px;font-weight:800;line-height:1.2;color:var(--caccent);text-align:center;white-space:nowrap}
.cal-stage .calflex .cf-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:10px 8px;min-width:0}
.cal-stage .calflex .cf-it{min-width:0;display:flex;flex-direction:column;gap:4px;-webkit-tap-highlight-color:transparent}
.cal-stage .calflex .cf-it.tap{cursor:pointer}
.cal-stage .calflex .cf-it.tap:active{transform:scale(.97);transition:transform .1s}
.cal-stage .calflex .cf-it:focus-visible{outline:2px solid var(--caccent);outline-offset:3px;border-radius:6px}
.cal-stage .calflex .cf-po{width:100%;height:auto;aspect-ratio:3/4;border-radius:5px;border:1px solid var(--chairline)}
.cal-stage .calflex .cf-po .ph{font-size:15px}
.cal-stage .calflex .cf-t{font-size:11px;font-weight:700;line-height:1.25;color:var(--ctext);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:anywhere}
.cal-stage .calflex .cf-s{margin-top:-2px;font-size:10px;line-height:1.2;color:var(--cfaint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-stage .calflex .cf-due{margin-top:-2px;font-size:10px;font-weight:800;line-height:1.2;color:var(--cdanger);white-space:nowrap}
/* 기록 추가 — 방문일 지정 방식(날짜·연·월만·연도만)과 날짜 미정의 연·월 선택 */
.qa-prec{margin-bottom:8px}
.qa-flexdate{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.qa-flexdate:has(>select[hidden]){grid-template-columns:minmax(0,1fr)}
.qa-flexdate[hidden],.qa-flexdate>select[hidden],#qaForm input[type=date][hidden]{display:none}

/* 달력 항목 탭 어포던스 — 그리드 외 레이아웃(월/아젠다/타임라인/풀)도 시트 오픈 */
.cal-stage [data-act="calday"],.cal-stage [data-act="recsheet"]{cursor:pointer;-webkit-tap-highlight-color:transparent}
.cal-stage .pent.tap:active,.cal-stage .acard.tap:active,.cal-stage .tlcard.tap:active{transform:scale(.98);transition:transform .1s}

/* ---- day-detail sheet ---- */
/* 옵션 시트 세그먼트 컨트롤 (앱 크롬) */
.calseg{display:flex;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.calseg button{flex:1;padding:11px 4px;font-size:clamp(11px,3.34vw,13px);font-weight:700;color:var(--muted);background:var(--surface2);border-right:1px solid var(--border);white-space:nowrap;transition:.14s}
.calseg button:last-child{border-right:none}
.calseg button[aria-pressed=true]{background:var(--p5);color:var(--paper)}
.tecatseg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:4px;border:1px solid var(--glass-line);border-radius:18px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.tecatseg button{min-width:0;min-height:46px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;border:0;border-radius:14px;background:transparent;color:var(--muted);transition:color .18s var(--ease-out),background .18s var(--ease-out)}
.tecatseg button b{font-size:13px;line-height:1.2;white-space:nowrap}.tecatseg button small{font-size:11px;line-height:1.2;color:var(--faint);white-space:nowrap}
.tecatseg button[aria-pressed=true]{color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}.tecatseg button[aria-pressed=true] small{color:rgba(255,255,255,.78)}.tecatseg button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}

.cal-daysheet .acard.tap{cursor:pointer;transition:transform .12s}
.cal-daysheet .acard.tap:active{transform:scale(.985)}
.cal-daysheet .sh-head .daydow{font-family:var(--fn);font-size:13px;font-weight:600;margin-left:5px;color:var(--faint)}
.cal-daysheet .sh-head .daydow.sun,.cal-daysheet .sh-head .daydow.hol{color:var(--danger)}
.cal-daysheet .sh-head .daydow.sat{color:var(--accent)}
.daysheet-stage{padding:0;min-height:0}
.daysheet-actions{display:grid;grid-template-columns:1fr;gap:8px;margin-top:14px}.daysheet-actions .btn{width:100%;margin:0}.daysheet-actions [data-da=federation] span:first-child{display:grid;place-items:center}.daysheet-actions [data-da=federation] svg{width:22px;height:22px}
/* 날짜 시트(리디자인) — 기록은 리스트 탭 월별 보기의 팬텀 카드 그대로(.rec-month .mcard: 같은 기록은 어디서나 같은 모양), 무대 바탕만 비워 시트 면에 얹는다.
   오른쪽·아래 여백은 카드 하드 섀도(3px) 자리(순번 칩은 카드 안쪽 여백에 들어간다). 작업은 기록 액션 시트와 같은 무광 묶음 목록(.recsheet-list) */
.cal-stage.mobile.layout-month.daysheet-cards{flex:none;min-height:0;padding:0 3px 3px 0;background:none}
.cal-stage.mobile.layout-month.daysheet-cards .mcards{gap:11px}
.daysheet-empty{margin:0 2px 12px;color:var(--muted);font-size:13px;font-weight:600}
.daysheet-cards+.daysheet-list{margin-top:12px}
.daysheet-list .btn.g{position:relative;padding-left:12px}
/* 앞 아이콘 칸 — 작은 둥근 우물에 의미 색: 기록 추가는 본문색, 계획·연방(일정)은 파랑 */
.daysheet-list .btn.g>svg{flex:none;box-sizing:border-box;width:32px;height:32px;padding:7px;border-radius:10px;color:var(--text);background:color-mix(in srgb,currentColor 10%,transparent)}
.daysheet-list .btn.g:is([data-da=save-plan],[data-da=plan],[data-da=federation])>svg{color:var(--info);background:color-mix(in srgb,currentColor 13%,transparent)}
.daysheet-list .btn.g[data-da=federation]>svg{padding:6px;stroke-width:3.4}.daysheet-list .btn.g[data-da=federation] .fed-icon-route{opacity:.62}
.dshare-records{margin-top:0}.dshare-hint{margin:11px 2px 12px}.dshare-sheet .msh-row>.avatar{flex:0 0 auto}
.record-receive-from{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);margin-bottom:12px}.record-receive-from>.avatar{flex:0 0 auto}.record-receive-from>div{min-width:0;flex:1}.record-receive-from b,.record-receive-from small{display:block}.record-receive-from small{margin-top:3px;color:var(--muted);font-size:12px}.record-receive-from>svg{width:20px;color:var(--muted);fill:none;stroke:currentColor}
.record-receive-list{display:grid;gap:7px}.record-receive-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.record-receive-row span{min-width:0}.record-receive-row b,.record-receive-row small{display:block}.rr-date{flex:0 0 82px}.rr-date b{font-family:var(--fn);font-size:13px;color:var(--text)}.rr-date small,.rr-copy small{margin-top:3px;color:var(--muted);font-size:11px}.rr-copy{flex:1}.rr-copy b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-receive-note{margin:13px 2px 0;color:var(--text);font-size:13px;line-height:1.55}.record-receive-once{margin:5px 2px 14px;color:var(--muted);font-size:12px}.record-receive-copy{width:100%}

/* ---- 미감 시그니처: 옵시디언 (계기판 그리드 + 청록 글로우) ---- */
.cal-stage.theme-obsidian{background:
  linear-gradient(rgba(146,164,184,.05) 1px,transparent 1px) -1px -1px/72px 72px,
  linear-gradient(90deg,rgba(146,164,184,.05) 1px,transparent 1px) -1px -1px/72px 72px,
  radial-gradient(680px 300px at 84% -12%, rgba(63,224,208,.06), transparent 60%),
  var(--cbg)}
.cal-stage.theme-obsidian .dow,.cal-stage.theme-obsidian .calmc{text-transform:uppercase;letter-spacing:.1em}

/* ---- WALL (모바일 크로놀로지컬 포스터 갤러리) ---- */
.cal-stage.mobile.layout-wall .wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px;padding:4px 2px}
.cal-stage.mobile.layout-wall .pent{position:relative;aspect-ratio:3/4;border-radius:calc(var(--cradius) - 1px);overflow:hidden;border:1px solid var(--chairline);background-size:cover;background-position:center;background-color:var(--csurface2);display:flex;align-items:center;justify-content:center}
.cal-stage.mobile.layout-wall .pent .ph{font-size:24px;color:var(--cfaint);font-weight:800}
.cal-stage.mobile.layout-wall .wbadge{position:absolute;top:4px;left:4px;font-family:var(--cmono);font-size:9px;font-weight:700;background:var(--caccent);color:var(--caccentText);border-radius:5px;padding:1px 5px;box-shadow:0 0 0 1px rgba(0,0,0,.22)}
.cal-stage.mobile.layout-wall .pent .lifestar{top:4px;right:5px;font-size:13px}
.cal-stage.mobile.layout-wall .wcap{position:absolute;left:0;right:0;bottom:0;padding:16px 6px 5px;display:flex;flex-direction:column;gap:1px;min-width:0;background:linear-gradient(transparent,rgba(0,0,0,.86));color:#fff}
.cal-stage.mobile.layout-wall .wcap .cap-t{font-size:10px;font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:break-word}
.cal-stage.mobile.layout-wall .wcap .cap-s{font-family:var(--cmono);font-size:9px;color:rgba(255,255,255,.86);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-stage.mobile.layout-wall[data-density=compact] .wall{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:4px}
.cal-stage.mobile.layout-wall[data-density=cozy] .wall{grid-template-columns:repeat(auto-fill,minmax(126px,1fr))}

/* ---- ARCHIVE (P5 콜링카드 아카이브 — 100방 어워즈 PNG 충실 재현; 기록 리스트 표시 형태 전용) ----
   컬러는 --arch* 변수 — 라이트(원본 종이)/다크(잉크지) 두 스킨을 같은 구조로 갈아끼운다. 팬텀 강제 페어링.
   리스트 탭 월별 보기(.layout-month)도 같은 팔레트·바탕을 공유한다(카드 면 --archCard*는 월별 전용). */
.cal-stage.mobile.layout-month,.cal-stage.mobile.layout-archive{
  --archP:#EFE9DD;--archP2:rgba(11,11,13,.04);--archInk:#17130C;--archMut:#7A7264;--archFnt:#A29A8A;
  --archFrame:#FDFBF6;--archSh:#C6BAAA;--archShPlan:#AFC3D6;--archChip:#FFFDF8;--archChipFg:#332C22;--archChipLine:#D5CABC;
  --archWeek:#7A7164;--archSun:#C24C43;--archSat:#4779A3;--archTime:#956A12;--archTimeEnd:#7C6845;
  --archRed:#D8000C;--archBlue:#3E7BB8;--archPpl:#57503F;--archCard:#FBF8F0;--archCardLine:#D5CABC;
  background:var(--archP);
  background-image:repeating-linear-gradient(-24deg,transparent 0 240px,rgba(216,0,12,.05) 240px 252px),
    repeating-linear-gradient(66deg,transparent 0 380px,var(--archP2) 380px 390px);
  padding:18px 13px 40px}
/* 다크 모드 — 잉크지 + 화이트 프레임 + 딥레드 하드 섀도 (구조 동일, 변수만 스왑) */
html:not([data-theme=light]) .cal-stage.mobile.layout-month,html:not([data-theme=light]) .cal-stage.mobile.layout-archive{
  --archP:#15131A;--archP2:rgba(242,237,228,.03);--archInk:#EDE5D6;--archMut:#9A9083;--archFnt:#756D60;
  --archFrame:#F2EDE4;--archSh:#6E0007;--archShPlan:#2E5C8F;--archChip:#0B0B0D;--archChipFg:#F2EDE4;--archChipLine:rgba(242,237,228,.28);
  --archWeek:#B8B2A6;--archSun:#FF6B60;--archSat:#7FB4E8;--archTime:#FFCF5C;--archTimeEnd:#D9A94E;--archPpl:#9A9083;--archCard:#1D1A21;--archCardLine:rgba(242,237,228,.12)}
.cal-stage.mobile.layout-archive .arch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 15px}
.cal-stage.mobile.layout-archive[data-density=compact] .arch{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px}
.cal-stage.mobile.layout-archive .acell{min-width:0}
.cal-stage.mobile.layout-archive .apo{position:relative}
/* 홀짝 교차 기울임 — PNG 의 손맛 (셀 단위) */
.cal-stage.mobile.layout-archive .acell:nth-child(2n) .apo{transform:rotate(.7deg)}
.cal-stage.mobile.layout-archive .acell:nth-child(2n+1) .apo{transform:rotate(-.6deg)}
.cal-stage.mobile.layout-archive .acell:nth-child(4n+3) .apo{transform:rotate(1deg)}
.cal-stage.mobile.layout-archive .acell:nth-child(5n) .apo{transform:rotate(-1deg)}
/* 포스터 = 프레임 + 하드 오프셋 섀도. 일정(plan)도 링 없이 동일 프레임 — 구분은 넘버·티켓 칩의 블루 섀도가 담당 */
.cal-stage.mobile.layout-archive .apo .thumb{width:100%;aspect-ratio:3/4;border-radius:0;border:3px solid var(--archFrame);box-shadow:4px 4px 0 var(--archSh),5px 8px 13px color-mix(in srgb,var(--archSh) 24%,transparent);background-color:#1a1a1e}
.cal-stage.mobile.layout-archive .arch-poster{display:block;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none}
.cal-stage.mobile.layout-archive .apo .thumb.plan,.cal-stage.mobile.layout-archive .apo .thumb.revisit{border-color:var(--archFrame);box-shadow:4px 4px 0 var(--archSh),5px 8px 13px color-mix(in srgb,var(--archSh) 24%,transparent);animation:none}
.cal-stage.mobile.layout-archive .apo .thumb.plan{box-shadow:4px 4px 0 var(--archShPlan),5px 8px 13px color-mix(in srgb,var(--archShPlan) 24%,transparent)}
.cal-stage.mobile.layout-archive .thumb .ph{font-size:17px;color:var(--archMut)}
/* 인생테마 — 골드 프레임 + 글로우 + 골드 넘버 칩 + 인생 태그 */
.cal-stage.mobile.layout-archive .acell.life .thumb{border-color:#E8B84B;box-shadow:4px 4px 0 #6b4d0d,5px 8px 13px color-mix(in srgb,#8a6410 26%,transparent),0 0 12px rgba(232,184,75,.35)}
.cal-stage.mobile.layout-archive .acell.life .anum{background:#E8B84B;color:#231803;box-shadow:2px 2px 0 #0B0B0D}
.cal-stage.mobile.layout-archive .alife{position:absolute;top:-8px;right:-5px;z-index:3;background:#E8B84B;color:#231803;font-size:9.5px;font-weight:800;padding:2px 5px 3px;transform:rotate(3deg);box-shadow:1.5px 2px 0 rgba(11,11,13,.85)}
/* 넘버 칩(001~) — 잉크 칩 + 레드 오프셋(일정은 블루), 프레임 모서리 오버랩 */
.cal-stage.mobile.layout-archive .anum{position:absolute;top:-8px;left:-6px;z-index:3;background:var(--archChip);color:var(--archChipFg);outline:1px solid var(--archChipLine);font-family:var(--cmono);font-size:13px;line-height:1;padding:3px 5px 2px;transform:rotate(-4deg);box-shadow:2px 2px 0 var(--archRed)}
.cal-stage.mobile.layout-archive .acell.plan .anum{box-shadow:2px 2px 0 var(--archBlue)}
/* 캡션 — 티켓 스트립(날짜·요일·타임)·제목(블랙한산스)·매장·평점 행 */
.cal-stage.mobile.layout-archive .acap{padding:9px 1px 0;display:flex;flex-direction:column;gap:2px}
.cal-stage.mobile.layout-archive .atkt{display:flex;align-items:baseline;gap:4px;background:var(--archChip);color:var(--archChipFg);outline:1px solid var(--archChipLine);padding:3px 7px 3.5px;margin:0 0 3.5px;transform:skewX(-6deg);box-shadow:2px 2px 0 var(--archRed);width:max-content;max-width:100%}
.cal-stage.mobile.layout-archive .acell.plan .atkt{box-shadow:2px 2px 0 var(--archBlue)}
.cal-stage.mobile.layout-archive .atkt>*{transform:skewX(6deg)}
.cal-stage.mobile.layout-archive .atkt .atd{font-family:var(--cmono);font-weight:400;font-size:11.5px;letter-spacing:.6px;line-height:1}
.cal-stage.mobile.layout-archive .atkt .atw{font-style:normal;font-size:8.5px;font-weight:700;color:var(--archWeek)}
.cal-stage.mobile.layout-archive .atkt.sun .atw,.cal-stage.mobile.layout-archive .atkt.hol .atw{color:var(--archSun)}
.cal-stage.mobile.layout-archive .atkt.sat .atw{color:var(--archSat)}
.cal-stage.mobile.layout-archive .atkt .ats{font-family:var(--cmono);font-weight:400;font-size:11.5px;letter-spacing:.6px;line-height:1;color:var(--archTime);margin-left:2px}
.cal-stage.mobile.layout-archive .atkt.unk .atd{color:var(--archFnt);font-size:10px;letter-spacing:0}
/* 플레이 시간대 화살표 — 여유·데스크탑·PNG 는 시작→끝, 모바일 조밀은 시작만 */
.cal-stage.mobile.layout-archive .atkt .atarr{display:inline-flex;align-items:center;margin:0 -1.5px;color:var(--archTime);opacity:.9}
.cal-stage.mobile.layout-archive .atkt .atarr svg{width:7px;height:7px;fill:currentColor}
.cal-stage.mobile.layout-archive .atkt .ats.end{margin-left:0;font-size:10px;color:var(--archTimeEnd)}
.cal-stage.mobile.layout-archive[data-density=compact] .atkt .atarr,.cal-stage.mobile.layout-archive[data-density=compact] .atkt .ats.end{display:none}
.cal-stage.mobile.layout-archive .aopen{margin-top:3px;font-size:9px}
.cal-stage.mobile.layout-archive .at{font-family:var(--cheading);font-weight:400;font-size:11px;line-height:1.18;color:var(--archInk);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:break-word}
.cal-stage.mobile.layout-archive.rec-arch .at{font-family:'Pretendard',-apple-system,'Apple SD Gothic Neo',sans-serif;font-weight:700;font-size:11.5px;line-height:1.22;letter-spacing:-.02em} /* 기록 테마명 — 굵은 Black Han Sans 가 튄다는 의견(2026-09-29)으로 Pretendard 700. 세리프 시안은 어색하다는 의견으로 철회. PNG 는 archFontCSS 의 Pretendard 임베드를 그대로 쓴다 */
/* 기록 테마명 글꼴 설정(bt_rec_font) — 기본은 위 Pretendard, 고르면 html[data-recfont] 로 덮는다. 설정 미리보기(.recfont-sample)도 같은 값 */
.recfont-sample[data-recfont-sample=pretendard]{font-family:'Pretendard',-apple-system,'Apple SD Gothic Neo',sans-serif;font-weight:700;letter-spacing:-.02em}
html[data-recfont=bhs] .cal-stage.mobile.layout-month .mt,html[data-recfont=bhs] .cal-stage.mobile.layout-archive.rec-arch .at,.recfont-sample[data-recfont-sample=bhs]{font-family:'Black Han Sans','Pretendard',sans-serif;font-weight:400;letter-spacing:0}html[data-recfont=bhs] .cal-stage.mobile.layout-month .mt{font-size:15px;line-height:1.22}
html[data-recfont=hahmlet] .cal-stage.mobile.layout-month .mt,html[data-recfont=hahmlet] .cal-stage.mobile.layout-archive.rec-arch .at,.recfont-sample[data-recfont-sample=hahmlet]{font-family:'Hahmlet','Noto Serif KR','AppleMyungjo',serif;font-weight:600;letter-spacing:-.02em}html[data-recfont=hahmlet] .cal-stage.mobile.layout-month .mt{font-size:16px;line-height:1.25}
html[data-recfont=jua] .cal-stage.mobile.layout-month .mt,html[data-recfont=jua] .cal-stage.mobile.layout-archive.rec-arch .at,.recfont-sample[data-recfont-sample=jua]{font-family:'Jua','Pretendard',sans-serif;font-weight:400;letter-spacing:0}html[data-recfont=jua] .cal-stage.mobile.layout-month .mt{font-size:16px;line-height:1.25}
html[data-recfont=sunflower] .cal-stage.mobile.layout-month .mt,html[data-recfont=sunflower] .cal-stage.mobile.layout-archive.rec-arch .at,.recfont-sample[data-recfont-sample=sunflower]{font-family:'Sunflower','Pretendard',sans-serif;font-weight:700;letter-spacing:-.01em}html[data-recfont=sunflower] .cal-stage.mobile.layout-month .mt{font-size:16px;line-height:1.25}
/* 아카이브 조밀 — 굵게(Black Han Sans)가 아닌 글꼴은 획이 가늘어 작게 보인다는 의견으로 1px 키운다(이전 디자인 기본 글꼴 BHS 는 제외) */
:is(html[data-recfont]:not([data-recfont=bhs]),html:not([data-recfont]):not([data-skin=classic])) .cal-stage.mobile.layout-archive.rec-arch[data-density=compact] .at{font-size:12.5px}:is(html[data-recfont]:not([data-recfont=bhs]),html:not([data-recfont]):not([data-skin=classic])) .cal-stage.mobile.cal-export.layout-archive.rec-arch[data-density=compact] .at{font-size:13.5px}
.recfont-intro-sheet .rfi-list{margin-top:14px}
.recfont-list{display:grid;margin-top:2px;border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;background:var(--surface)}
.recfont-opt{display:grid;grid-template-columns:minmax(0,1fr) 22px;column-gap:12px;align-items:center;min-height:58px;padding:9px 14px;text-align:left;color:var(--text);background:none;border:0;font:inherit;cursor:pointer}.recfont-opt+.recfont-opt{border-top:1px solid var(--hairline)}
.recfont-sample{grid-column:1;min-width:0;font-size:16px;line-height:1.3;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.recfont-name{grid-column:1;margin-top:2px;color:var(--muted);font-size:11.5px;font-weight:700;line-height:1.3}
.recfont-opt>i{grid-column:2;grid-row:1 / 3;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--border);box-sizing:border-box}
.recfont-opt.on>i{border:0;background:var(--lens);box-shadow:var(--lens-sh);display:grid;place-items:center}.recfont-opt.on>i::after{content:"";width:7px;height:7px;border-radius:50%;background:#fff}
.recfont-opt:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}
.cal-stage.mobile.layout-archive[data-density=cozy] .at{font-size:13.5px}
.cal-stage.mobile.layout-archive[data-density=cozy] .ast{font-size:10px}
.cal-stage.mobile.layout-archive[data-density=cozy] .arate svg{width:13px;height:13px}
.cal-stage.mobile.layout-archive[data-density=cozy] .arate b{font-size:15px}
.cal-stage.mobile.layout-archive[data-density=cozy] .aplan{font-size:10px}
.cal-stage.mobile.layout-archive .ast{font-size:8.5px;font-weight:600;color:var(--archMut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-stage.mobile.layout-archive .arate{display:flex;align-items:center;gap:3.5px;margin-top:2.5px}
.cal-stage.mobile.layout-archive .arate svg{width:11.5px;height:11.5px;flex:none}
.cal-stage.mobile.layout-archive .arate b{font-family:var(--cmono);font-weight:400;font-size:13px;letter-spacing:.4px;line-height:1;color:var(--archInk)}
.cal-stage.mobile.layout-archive .appl{display:inline-flex;align-items:flex-end;gap:1px;color:var(--archPpl);flex:none;margin-left:auto}
.cal-stage.mobile.layout-archive .appl b{font-family:var(--cmono);font-weight:400;font-size:9px;margin-left:1px;line-height:1}
.cal-stage.mobile.layout-archive .aplan{font-size:8.5px;font-weight:700;color:var(--archBlue)}
html:not([data-theme=light]) .cal-stage.mobile.layout-archive .aplan{color:#5fb6ff}
.cal-stage.mobile.layout-archive .at .rvbadge{font-size:8px;margin-left:4px;padding:0 4px;vertical-align:2px}
.cal-stage.mobile.layout-archive .thumb .prate,.cal-stage.mobile.layout-archive .thumb .pseq,.cal-stage.mobile.layout-archive .thumb .lifestar{display:none}
/* 실패 스탬프 — 어워즈 러버스탬프 (옵션 무관 상시) */
.cal-stage.mobile.layout-archive .afail{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) rotate(-13deg);z-index:2;text-align:center;border:2.5px solid #E0473E;background:rgba(11,11,13,.42);padding:4px 9px;pointer-events:none;box-shadow:0 0 0 1.5px rgba(11,11,13,.3),inset 0 0 0 1px rgba(224,71,62,.35)}
.cal-stage.mobile.layout-archive .afail b{display:block;font-family:var(--cmono);font-weight:400;font-size:13px;line-height:1;letter-spacing:2px;color:#E0473E;text-shadow:1px 1px 0 rgba(11,11,13,.7)}
.cal-stage.mobile.layout-archive[data-density=compact] .afail b{font-size:11px;letter-spacing:1.5px}
/* 디데이·힌트 수(골드)·남은시간(그린) — 포스터 좌하단. 밀도에 따라 포스터와 같은 비율로 축소 */
.cal-stage.mobile.layout-archive .cbadges{position:absolute;left:5px;bottom:7px;right:5px;margin:0;gap:3px;z-index:2;flex-wrap:wrap}
.cal-stage.mobile.layout-archive .cbadges .planbadge{margin:0;display:inline-block;background:rgba(4,10,7,.6)}
.cal-stage.mobile.layout-archive .cbadges .leftbadge{filter:drop-shadow(0 1px 3px rgba(0,0,0,.55));background:rgba(4,10,7,.6);margin-left:0}
/* 아카이브 장식 딱지는 PNG 임베드 베바스(--cmono)로 통일. 예약 오픈 딱지는 날짜 팝업과 같은 공용 .ro-mini 글꼴을 유지한다. */
.cal-stage.mobile.layout-archive .cbadges .planbadge,
.cal-stage.mobile.layout-archive .cbadges .leftbadge i,.cal-stage.mobile.layout-archive .cbadges .leftbadge b{font-family:var(--cmono);font-weight:400;letter-spacing:.07em}
.cal-stage.mobile.layout-archive .cbadges .leftbadge i{font-size:7.5px;padding:2.5px 4px}
.cal-stage.mobile.layout-archive .cbadges .leftbadge b{font-size:9.5px;padding:2.5px 5px}
.cal-stage.mobile.layout-archive[data-density=compact] .cbadges{left:4px;bottom:5px;right:4px;gap:2px}
.cal-stage.mobile.layout-archive[data-density=compact] .cbadges .leftbadge i{font-size:6.5px;padding:2px 3.5px}
.cal-stage.mobile.layout-archive[data-density=compact] .cbadges .leftbadge b{font-size:8px;padding:2px 4px}

/* 신기능 안내의 아카이브 미리보기 — 시트 안 미니 스테이지 */
.cal-stage.mobile.layout-archive.ai-mock{padding:14px 12px 18px;min-height:0}
/* 아카이브 도구 줄·리스트 탭 보기 줄(전체/월별) 공용 여백 */
.reclistctrl,.reclistbar{padding:0 18px 8px}
/* 리스트 탭 검색 [fb:a66d0816] — 보기 줄 검색 버튼으로 열면 보기 줄 자리를 검색창 + 닫기가 대신한다, 아카이브 도구 줄도 같음 [fb:cbd6a17c] (데스크탑 공통 폭은 .reclistbar 가 받음) */
.recsearchrow{display:flex;align-items:center;gap:6px}
.recsearchrow .searchbar{flex:1;min-width:0;width:auto;height:44px;margin:0}
.recsearch-close{flex:none;height:40px;padding:0 6px;color:var(--muted);font-size:13.5px;font-weight:700;white-space:nowrap;transition:color .14s}
.recsearch-close:hover{color:var(--text)}
/* 검색 결과 수 — 검색창 아래 한 줄(전체 방 수 요약과 별개). 검색어가 없으면 비워 숨긴다 */
.recsearchrow{flex-wrap:wrap}
.recsearch-n{flex:1 0 100%;margin:2px 4px 0;color:var(--muted);font-size:12px;font-weight:700}
.recsearch-n:empty{display:none}

/* 방 수 요약 — 내 기록(제목 아래·보기 탭 위, 모든 탭 공통)·프로필(이름 아래) 공용 한 줄. 누르면 집계 내역 시트.
   번호에 포함한 기록 기준 '내 방 수'와 '예정 포함'. 카드 대신 얇은 캡슐 하나, 숫자만 또렷하게 */
.roomsum-row{padding:0 18px 6px;min-width:0}
.roomsum-row.me{padding-bottom:12px;margin-top:-8px}
.roomsum{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:36px;padding:0 10px 0 14px;border:1px solid var(--border);border-radius:999px;
  background:color-mix(in srgb,var(--surface2) 72%,transparent);color:var(--muted);font-size:12.5px;font-weight:700;line-height:1.2;text-align:left;white-space:nowrap;transition:border-color .14s,background .14s}
.roomsum:hover{border-color:color-mix(in srgb,var(--text) 22%,var(--border))}
.roomsum:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.roomsum .rs-i{display:inline-flex;align-items:baseline;gap:4px;min-width:0}
.roomsum .rs-v{color:var(--text);font-family:var(--fn);font-variant-numeric:tabular-nums;font-size:16px;font-weight:850}
.roomsum .rs-u{color:var(--text);font-weight:800}
.roomsum .rs-sep{color:var(--faint)}
.roomsum .rs-go{display:inline-flex;margin-left:-2px;color:var(--faint)}
.roomsum .rs-go svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.roomsum.is-loading{cursor:default}.roomsum.is-loading .rs-v{color:var(--faint)}
/* 집계 내역 시트 — 방(번호 포함)과 건(전체 기록·일정)을 묶음으로 나눈다 */
.roomsum-sheet .rsx-group{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.roomsum-sheet .rsx-group+.rsx-group{margin-top:12px}
.rsx-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:9px 14px}
.rsx-row+.rsx-row{border-top:1px solid var(--border)}
.rsx-k{display:flex;flex-direction:column;gap:2px;min-width:0;color:var(--text);font-size:14px;font-weight:800}
.rsx-k small{color:var(--faint);font-size:11.5px;font-weight:600;word-break:keep-all}
.rsx-v{flex:none;color:var(--text);font-family:var(--fn);font-variant-numeric:tabular-nums;font-size:18px;font-weight:850;white-space:nowrap}
.rsx-v small{margin-left:2px;font-family:inherit;font-size:12.5px;font-weight:800;color:var(--muted)}
.rsx-row.total{background:color-mix(in srgb,var(--gold) 8%,transparent)}
.rsx-row.total .rsx-v{color:var(--gold)}
.rsx-note{margin:12px 2px 2px;color:var(--muted);font-size:12px;line-height:1.6;word-break:keep-all}

/* ---- MONTH (리스트 탭 월별 보기 — 옛 달력 아젠다 부활, 아카이브 팬텀 미감 [fb:e307fc4e]) ----
   날짜 머리 = 잉크 칩 Bebas 날짜 + 레드 하드 섀도, 카드 = 종이/잉크 면 + 하드 오프셋 섀도, 시간대 = 아카이브 티켓 칩.
   밀도 단계 없음. 일정은 아카이브처럼 블루 섀도로만 구분(글로우 링 없음). 스크롤 높이를 채워 빈 달도 바탕이 이어진다. */
.scroll:has(>#recBody>.rec-month),.scroll:has(>#frBody>.rec-month){display:flex;flex-direction:column}
#recBody:has(>.rec-month),#frBody:has(>.rec-month){flex:1 0 auto;display:flex;flex-direction:column}
.cal-stage.mobile.layout-month{flex:1 0 auto;min-height:0;padding:16px 14px 44px}
.cal-stage.mobile.layout-month .mday{padding-bottom:20px}
.cal-stage.mobile.layout-month .mday:last-child{padding-bottom:0}
.cal-stage.mobile.layout-month .mday-h{display:flex;align-items:center;gap:8px;min-width:0;margin:0 1px 10px;padding:2px 0}
.cal-stage.mobile.layout-month .mday-h.tap{cursor:pointer}
.cal-stage.mobile.layout-month .mdd{position:relative;flex:none;min-width:36px;text-align:center;color:var(--archInk);font-family:var(--cmono);font-weight:400;font-size:21px;line-height:1;letter-spacing:.6px;padding:5px 7px 4px;border-radius:8px} /* 날짜 숫자 — 전체 보기와 같은 둥근 유리(면·림은 아래 유리 규칙) */
.cal-stage.mobile.layout-month .mdw{flex:none;font-style:normal;font-family:var(--cheading);font-weight:400;font-size:14px;line-height:1;color:var(--archInk)}
.cal-stage.mobile.layout-month .mday-h.sat .mdw{color:var(--archSat)}
.cal-stage.mobile.layout-month .mday-h.sun .mdw,.cal-stage.mobile.layout-month .mday-h.hol .mdw{color:var(--archSun)}
.cal-stage.mobile.layout-month .mtoday{flex:none;font-size:9.5px;font-weight:800;line-height:1;color:#F2EDE4;background:var(--archRed);padding:3px 5px 2px;border-radius:4px}
.cal-stage.mobile.layout-month .mdn{margin-left:auto;min-width:0;font-size:10.5px;font-weight:700;color:var(--archMut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-stage.mobile.layout-month .mday-h.flex .mdd{font-family:var(--fb);font-size:14px;font-weight:800;letter-spacing:-.01em;padding:7px 9px 6px} /* 날짜 미정 묶음 — 날짜 숫자 자리에 기간 */
.cal-stage.mobile.layout-month .mday-h.flex .mdw{font-family:var(--fb);font-size:12px;font-weight:700;color:var(--archMut)}
.cal-stage.mobile.layout-month .mday-h svg{flex:none;width:15px;height:15px;margin-left:-3px;fill:none;stroke:var(--archFnt);stroke-width:2}
.cal-stage.mobile.layout-month .mday-h.tap:hover .mdw{text-decoration:underline;text-underline-offset:3px}
.cal-stage.mobile.layout-month .mday-h:focus-visible,.cal-stage.mobile.layout-month .mcard:focus-visible{outline:2px solid var(--archRed);outline-offset:3px}
.cal-stage.mobile.layout-month .mcards{display:flex;flex-direction:column;gap:12px}
.cal-stage.mobile.layout-month .mcard{position:relative;display:flex;align-items:center;gap:12px;min-width:0;padding:11px 12px 11px 11px;background:var(--archCard);border:1px solid var(--archCardLine);box-shadow:3px 3px 0 var(--archSh)}
.cal-stage.mobile.layout-month .mcard.plan{box-shadow:3px 3px 0 var(--archShPlan)}
.cal-stage.mobile.layout-month .mcard.tap{cursor:pointer;transition:transform .1s,box-shadow .1s}
.cal-stage.mobile.layout-month .mcard.tap:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--archSh)}
.cal-stage.mobile.layout-month .mpo{position:relative;flex:none;align-self:center} /* 포스터는 카드 세로 가운데(전체 보기와 같음) */
.cal-stage.mobile.layout-month .mpo .thumb{width:50px;aspect-ratio:3/4;border-radius:0;border:2.5px solid var(--archFrame);box-shadow:2.5px 2.5px 0 var(--archSh);background-color:#1a1a1e;transform:rotate(-1.2deg);animation:none}
.cal-stage.mobile.layout-month .mcard:nth-child(2n) .mpo .thumb{transform:rotate(1deg)}
.cal-stage.mobile.layout-month .mpo .thumb.plan{box-shadow:2.5px 2.5px 0 var(--archShPlan)}
.cal-stage.mobile.layout-month .mcard.life .mpo .thumb{border-color:#E8B84B;box-shadow:2.5px 2.5px 0 #6b4d0d}
.cal-stage.mobile.layout-month .thumb .ph{font-size:16px;color:#A29A8A}
.cal-stage.mobile.layout-month .mm{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
/* 기록 리스트·날짜 시트 테마명 — Pretendard 700(본문과 같은 가족, 자간 -.02em). 아카이브 .rec-arch .at 과 같은 글꼴 */
.cal-stage.mobile.layout-month .mt{font-family:'Pretendard',-apple-system,'Apple SD Gothic Neo',sans-serif;font-weight:700;font-size:15.5px;line-height:1.28;letter-spacing:-.02em;color:var(--archInk);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:break-word}
.cal-stage.mobile.layout-month .mt .rvbadge{font-size:8px;margin-left:4px;padding:0 4px;vertical-align:2px}
.cal-stage.mobile.layout-month .mt .obbadge{vertical-align:2px}
.cal-stage.mobile.layout-month .ms{font-size:10.5px;font-weight:600;color:var(--archMut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-stage.mobile.layout-month .mr{display:flex;align-items:center;gap:4px;margin-top:2px;min-width:0}
.cal-stage.mobile.layout-month .mr svg{width:13px;height:13px;flex:none}
.cal-stage.mobile.layout-month .mr b{font-family:var(--cmono);font-weight:400;font-size:15px;letter-spacing:.4px;line-height:1;color:var(--archInk)}
.cal-stage.mobile.layout-month .alife{flex:none;background:#E8B84B;color:#231803;font-size:9px;font-weight:800;line-height:1;padding:2px 5px 3px;transform:rotate(-2deg);box-shadow:1.5px 1.5px 0 rgba(11,11,13,.8);margin-right:3px}
.cal-stage.mobile.layout-month .mfail{flex:none;font-family:var(--cmono);font-size:11px;letter-spacing:1.4px;line-height:1;color:#E0473E;border:1.5px solid #E0473E;padding:2px 5px 1px;transform:rotate(-4deg);margin-left:4px}
.cal-stage.mobile.layout-month .cbadges{margin-top:4px;gap:4px}
.cal-stage.mobile.layout-month .cbadges .planbadge{margin:0}
/* 기록 카드 D-day 딱지 — 옆 예약 오픈 딱지 모양(설정 bt_ro_badge → html[data-robadge])을 따라간다. 이전 모양(old)·아카이브 포스터 위 D-day(시그니처)는 그대로.
   높이 17px·글자 구조를 예약 오픈 딱지의 날짜·시각 묶음(.ro-w)과 같게 해 두 딱지의 글자가 한 줄에 맞는다.
   일정 카드의 주 정보라 옆 딱지(10px 600)보다 한 단계 위 — 11px 700·진한 틴트·테두리. 당일·기록 독촉은 단계색을 채운 딱지로(글로우·깜빡임 없이, 예약 오픈 '오늘·내일' 칩과 같은 채움 문법) (fb:c1a33863) */
:is(html[data-robadge=b],html[data-robadge=a],html[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge{--pb-c:var(--info);position:relative;display:inline-flex;align-items:center;flex:0 0 auto;height:17px;box-sizing:border-box;margin:0;padding:0 6px;vertical-align:middle;font-family:var(--fn);font-size:11px;font-weight:700;letter-spacing:0;line-height:1;font-variant-numeric:tabular-nums;color:var(--pb-c);text-shadow:none;animation:none;white-space:nowrap;--pb-fill:var(--p5);--pb-on:#fff}
:is(html[data-robadge=b],html[data-robadge=a],html[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge.dd7{--pb-c:var(--gold)}
:is(html[data-robadge=b],html[data-robadge=a],html[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge.dd3{--pb-c:var(--dhot)}
:is(html[data-robadge=b],html[data-robadge=a],html[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge:is(.dd0,.due){--pb-c:#FF4458}
:is(html[data-robadge=b],html[data-robadge=a],html[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge.due{font-family:var(--fb);font-size:10.5px;font-weight:800;letter-spacing:-.01em}
html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge{transform:none;border:0;border-radius:var(--r-tag);background:linear-gradient(180deg,color-mix(in srgb,var(--pb-c) 22%,transparent),color-mix(in srgb,var(--pb-c) 9%,transparent))}
html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(180deg,color-mix(in srgb,var(--pb-c) 85%,#fff),color-mix(in srgb,var(--pb-c) 45%,transparent) 55%,color-mix(in srgb,var(--pb-c) 72%,transparent));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t{display:inline-flex;align-items:baseline}html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t::before,.ro-mini:not(.rv-a,.rv-e,.rv-old) .ro-w::before{content:"\200b";display:inline-flex;align-items:center;height:12px;font-family:var(--fb);font-weight:800;font-size:.95em}.ro-mini .ro-w::before{margin-right:-.36em} /* 묶음 gap 상쇄 — 폭 그대로 */ /* 기본 — '오늘·내일' 칸과 같은 보이지 않는 기준 칸을 두 묶음에 늘 넣어, 날짜·오늘 어느 쪽이든 옆 D-day 와 글자 줄이 같다 */
html[data-robadge=a] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t{display:inline-flex;align-items:baseline}
html[data-robadge=a] .cal-stage.mobile.layout-month .cbadges .planbadge{transform:skewX(-10deg);border:1px solid color-mix(in srgb,var(--pb-c) 80%,transparent);border-radius:4px;background:color-mix(in srgb,var(--pb-c) 17%,transparent)}
html[data-robadge=e] .cal-stage.mobile.layout-month .cbadges .planbadge{gap:0;padding:0 1px 3px;transform:none;border:0;border-radius:0;background:linear-gradient(90deg,var(--pb-c) 0 7px,color-mix(in srgb,var(--pb-c) 40%,transparent) 7px) left bottom/100% 1px no-repeat}
html[data-robadge=e] .cal-stage.mobile.layout-month .cbadges .planbadge:not(.due) .pb-t{font-family:'Bebas Neue','Archivo Narrow',sans-serif;font-weight:400;font-size:14px;letter-spacing:.04em;text-box:trim-both cap alphabetic}
/* 날짜 미정 기간 딱지 — 한글이라 '기록해 주세요'(.due)와 같은 본문 글꼴, 숫자 전용 글꼴·글자 다듬기는 쓰지 않는다 */
:is(html[data-robadge=b],html[data-robadge=a],html[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .ddflex{font-family:var(--fb);font-size:10.5px;font-weight:800;letter-spacing:-.01em}
html[data-robadge=e] .cal-stage.mobile.layout-month .cbadges .ddflex:not(.due) .pb-t{font-family:var(--fb);font-weight:800;font-size:10.5px;letter-spacing:-.01em;text-box:normal}
html[data-theme=light]:is([data-robadge=b],[data-robadge=a],[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge{--pb-c:#3E7BB8}
html[data-theme=light]:is([data-robadge=b],[data-robadge=a],[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge.dd7{--pb-c:#8C660C}
html[data-theme=light]:is([data-robadge=b],[data-robadge=a],[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge.dd3{--pb-c:#B5540E}
html[data-theme=light]:is([data-robadge=b],[data-robadge=a],[data-robadge=e]) .cal-stage.mobile.layout-month .cbadges .planbadge:is(.dd0,.due){--pb-c:#C40226;--pb-fill:#C40226}
html[data-theme=light][data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge{background:linear-gradient(180deg,color-mix(in srgb,var(--pb-c) 7%,rgba(255,255,255,.8)),color-mix(in srgb,var(--pb-c) 17%,rgba(255,255,255,.35)))}
html[data-theme=light][data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge::after{background:linear-gradient(180deg,color-mix(in srgb,var(--pb-c) 45%,#fff),color-mix(in srgb,var(--pb-c) 45%,transparent) 55%,color-mix(in srgb,var(--pb-c) 72%,transparent))}
/* 기준 칸은 옆 예약 오픈 딱지(10px)와 같은 크기로 두고, 커진 D-day 글자는 줄 높이를 줄여 그 칸 안에 넣는다 — 글자만 커지고 글자 줄은 그대로(스플릿은 옆 날짜·시각과 같은 모노 10px 기준 글자를 하나 더) */
:is(html[data-robadge=b],html[data-robadge=a]) .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t{line-height:.8}html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t::before{font-size:9.5px;line-height:1}
html[data-robadge=a] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t::before{font-size:10px;line-height:1}html[data-robadge=a] .cal-stage.mobile.layout-month .cbadges .planbadge .pb-t::after{content:"\200b";font-family:var(--fn);font-size:10px;font-weight:600;line-height:1}
html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge:is(.dd0,.due){background:linear-gradient(180deg,color-mix(in srgb,var(--pb-fill) 88%,#fff),var(--pb-fill));color:var(--pb-on)}html[data-robadge=b] .cal-stage.mobile.layout-month .cbadges .planbadge:is(.dd0,.due)::after{background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,.08) 55%,rgba(0,0,0,.12))}
html[data-robadge=a] .cal-stage.mobile.layout-month .cbadges .planbadge:is(.dd0,.due){border-color:var(--pb-fill);background:var(--pb-fill);color:var(--pb-on)}
html[data-robadge=e] .cal-stage.mobile.layout-month .cbadges .planbadge:is(.dd0,.due){padding:0 5px;border-radius:3px;background:var(--pb-fill);color:var(--pb-on)} /* 인쇄 숫자 — 밑줄 대신 채운 칸(옆 '오늘·내일' 칩과 같은 3px 모서리) */
.cal-stage.mobile.layout-month .mempty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:64px 16px;text-align:center}
.cal-stage.mobile.layout-month .mempty b{font-family:var(--cheading);font-weight:400;font-size:16px;color:var(--archInk)}
.cal-stage.mobile.layout-month .mempty span{font-size:11.5px;color:var(--archMut)}
.cal-stage.mobile.layout-month .mempty .btn{margin-top:8px} /* 월별 검색 빈 달 — 결과 있는 달로 이동·검색어 지우기 [fb:6c40d676] */
/* ---- 리스트 탭 전체 보기(.rec-all) — 월별 카드(.mcard 면·포스터·평점·딱지)를 날짜 묶음 없이 한 줄기로.
   날짜는 카드 안 왼쪽 칸(.rdate, 점선으로 끊은 티켓 꼭지). 순번(.rnum)·플레이 시간대(.rtime)는 평행사변형·하드 섀도 대신
   옅은 유리 — 반투명 면 + 윗면이 밝은 1px 림, 모서리는 알약보다 덜 둥글게(6·10px). 내 기록·친구 기록 공용 */
.scroll:has(>#recBody>.rec-all),.scroll:has(>#frBody>.rec-all){display:flex;flex-direction:column}
#recBody:has(>.rec-all),#frBody:has(>.rec-all){flex:1 0 auto;display:flex;flex-direction:column}
.cal-stage.mobile.layout-month.rec-all{flex:1 0 auto;min-height:0;padding:16px 14px 44px}
.rec-all .rcards{display:flex;flex-direction:column;gap:12px}
.cal-stage.mobile.layout-month.rec-all .mcard{gap:12px;padding:11px 12px 11px 0}
.cal-stage.mobile.layout-month.rec-all .mpo{align-self:center} /* 포스터는 카드 세로 가운데 */
.rec-all .rdate{flex:none;align-self:stretch;width:48px;margin:-11px 0;padding:10px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-right:1px dashed color-mix(in srgb,var(--archInk) 17%,transparent);font-style:normal;line-height:1}
.rec-all .rdate i{font-style:normal}
.rec-all .rdate .ry{font-family:var(--cmono);font-size:11px;letter-spacing:.8px;color:var(--archFnt)}
.rec-all .rdate .rm{font-size:10px;font-weight:800;letter-spacing:-.01em;color:var(--archMut)}
.rec-all .rdate .rd{font-family:var(--cmono);font-weight:400;font-size:27px;letter-spacing:.5px;line-height:.84;color:var(--archInk)}
.rec-all .rdate .rw{font-size:10.5px;font-weight:800;color:var(--archWeek)}
.rec-all .rdate.sat .rw{color:var(--archSat)}
.rec-all .rdate.sun .rw,.rec-all .rdate.hol .rw{color:var(--archSun)}
.rec-all .rdate.today .rw{padding:2px 4px 1px;border-radius:4px;background:var(--archRed);color:#F2EDE4;font-size:9.5px}
.rec-all .rdate.unk .rd{color:var(--archFnt)}
.rec-all .rdate.flex .rw{color:var(--archMut);white-space:nowrap} /* 날짜 미정 일정 — 큰 숫자는 달(연도만이면 해), 아래 '월 중'·'년 중' */
.rec-all .rdate.flex.yr .rd{font-size:16px;letter-spacing:0}
/* 시작 시간(시간대 표시 끔) — 요일 아래 가는 헤어라인 + 작은 마름모 위에 금색 모노 숫자. 옛 전체 리스트 .dslot 의 팬텀판(글로우 없이) */
.rec-all .rdate .rs{position:relative;align-self:stretch;margin-top:4px;text-align:center;padding-top:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
  font-family:var(--cmono);font-size:11.5px;letter-spacing:.6px;line-height:1;color:var(--archTime)}
.rec-all .rdate .rs::before{content:"";position:absolute;top:1px;left:50%;width:30px;height:1px;translate:-50% 0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--archTime) 55%,transparent),transparent)}
.rec-all .rdate .rs::after{content:"";position:absolute;top:0;left:50%;width:3px;height:3px;translate:-50% 0;rotate:45deg;background:var(--archTime)}
/* 유리 = 옅은 면 + 림(::after — 윗면이 밝고 아래로 잦아드는 1px 테두리, 탭 렌즈 .rt-glass::after 와 같은 마스크 방식) */
:is(.rec-all,.rec-month) .rnum,:is(.rec-all,.rec-month) .rtime,.rec-all .rtog,.rec-month .mdd{--gl-rim:linear-gradient(180deg,rgba(255,255,255,.24),rgba(255,255,255,.06) 52%,rgba(255,255,255,.11));
  background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.018));box-shadow:0 2px 7px -4px rgba(0,0,0,.6)}
:is(.rec-all,.rec-month) .rnum::after,:is(.rec-all,.rec-month) .rtime::after,.rec-all .rtog::after,.rec-month .mdd::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:var(--gl-rim);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
:is(.rec-all,.rec-month) .rnum{position:absolute;top:-7px;left:-9px;z-index:3;padding:4px 6px 3px;border-radius:6px;font-family:var(--cmono);font-size:12px;letter-spacing:.9px;line-height:1;color:var(--archInk);
  background:linear-gradient(180deg,color-mix(in srgb,var(--archCard) 64%,rgba(255,255,255,.22)),color-mix(in srgb,var(--archCard) 80%,transparent));
  box-shadow:0 3px 8px -3px rgba(0,0,0,.55);-webkit-backdrop-filter:blur(8px) saturate(150%);backdrop-filter:blur(8px) saturate(150%)}
.cal-stage.mobile.layout-month:is(.rec-all,.rec-month).noposter .rnum{position:relative;top:auto;left:auto;align-self:flex-start;margin:0 0 5px} /* 포스터 끔(전체 보기 옵션) — 순번 칩을 제목 위 제자리로 */
:is(.rec-all,.rec-month) .rtime{position:relative;flex:none;align-self:center;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:56px;padding:8px 9px 7px;border-radius:10px;box-shadow:none}
:is(.rec-all,.rec-month) .rtime b{font-family:var(--cmono);font-weight:400;font-size:18px;letter-spacing:.7px;line-height:1;color:var(--archTime)}
:is(.rec-all,.rec-month) .rtime i{display:flex;color:var(--archTimeEnd);opacity:.7} /* 시작→끝 꺾쇠 */
:is(.rec-all,.rec-month) .rtime i svg{width:9px;height:6px;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
:is(.rec-all,.rec-month) .rtime small{font-family:var(--cmono);font-size:14px;letter-spacing:.6px;line-height:1;color:var(--archTimeEnd)}
:is(.rec-all,.rec-month) .rtime{--gl-rim:linear-gradient(180deg,rgba(255,255,255,.17),rgba(255,255,255,.04) 55%,rgba(255,255,255,.07));background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.012))}
/* 다크 — 시간 글자는 흰색(끝 시각·화살표는 한 단계 옅게) */
html:not([data-theme=light]) :is(.rec-all,.rec-month) .rtime b{color:#fff}
html:not([data-theme=light]) :is(.rec-all,.rec-month) .rtime small{color:rgba(255,255,255,.76)}
html:not([data-theme=light]) :is(.rec-all,.rec-month) .rtime i{color:rgba(255,255,255,.62);opacity:1}
:is(.rec-all,.rec-month) .mcard.plan .rnum,:is(.rec-all,.rec-month) .mcard.plan .rtime{--gl-rim:linear-gradient(180deg,color-mix(in srgb,var(--archBlue) 75%,#fff),color-mix(in srgb,var(--archBlue) 30%,transparent) 55%,color-mix(in srgb,var(--archBlue) 45%,transparent))}
:is(.rec-all,.rec-month) .mcard.plan .rtime{background:linear-gradient(180deg,color-mix(in srgb,var(--archBlue) 15%,transparent),color-mix(in srgb,var(--archBlue) 4%,transparent))}
:is(.rec-all,.rec-month) .mcard.life .rnum{--gl-rim:linear-gradient(180deg,rgba(255,221,140,.85),rgba(232,184,75,.3) 55%,rgba(232,184,75,.5));color:#E8B84B}
html[data-theme=light] :is(.rec-all,.rec-month) .rnum,html[data-theme=light] :is(.rec-all,.rec-month) .rtime,html[data-theme=light] .rec-all .rtog,html[data-theme=light] .rec-month .mdd{--gl-rim:linear-gradient(180deg,#fff,rgba(23,19,12,.1) 55%,rgba(23,19,12,.17));
  background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.32));box-shadow:0 1px 2px rgba(70,50,20,.06),0 4px 10px -8px rgba(70,50,20,.22)}
html[data-theme=light] :is(.rec-all,.rec-month) .rnum{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.7));box-shadow:0 3px 8px -3px rgba(70,50,20,.32)}
html[data-theme=light] :is(.rec-all,.rec-month) .mcard.plan .rnum,html[data-theme=light] :is(.rec-all,.rec-month) .mcard.plan .rtime{--gl-rim:linear-gradient(180deg,#fff,color-mix(in srgb,var(--archBlue) 30%,transparent) 55%,color-mix(in srgb,var(--archBlue) 48%,transparent))}
html[data-theme=light] :is(.rec-all,.rec-month) .mcard.plan .rtime{background:linear-gradient(180deg,rgba(255,255,255,.8),color-mix(in srgb,var(--archBlue) 9%,rgba(255,255,255,.4)))}
html[data-theme=light] :is(.rec-all,.rec-month) .mcard.life .rnum{--gl-rim:linear-gradient(180deg,#fff,rgba(201,147,15,.35) 55%,rgba(201,147,15,.55));color:#8A6410}
/* 친구·모임원 기록 — 카드 안 본문(.rmain: 날짜·포스터·내용)만 테마 상세로 열리고, 오른쪽 칸(.rside)에 시간 + '같이 한 테마' 유리 동그라미 */
.rec-all .rcard-fr .rmain{flex:1;min-width:0;align-self:stretch;display:flex;align-items:center;gap:12px}
.rec-all .rcard-fr .rmain.tap{cursor:pointer}
.rec-all .rcard-fr .rmain:focus-visible{outline:2px solid var(--archRed);outline-offset:3px}
.rec-all .rside{flex:none;align-self:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.rec-all .rtog{position:relative;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;color:var(--archMut);transition:color .14s,scale .14s}
.rec-all .rtog svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.rec-all .rtog.on{--gl-rim:linear-gradient(180deg,color-mix(in srgb,var(--archRed) 80%,#fff),color-mix(in srgb,var(--archRed) 35%,transparent) 55%,color-mix(in srgb,var(--archRed) 55%,transparent));
  color:var(--archRed);background:linear-gradient(180deg,color-mix(in srgb,var(--archRed) 16%,transparent),color-mix(in srgb,var(--archRed) 5%,transparent))}
.rec-all .rtog:active{scale:.92}
.rec-all .rtog:focus-visible{outline:2px solid var(--archRed);outline-offset:2px}
@media(hover:hover){.rec-all .rtog:hover{color:var(--archInk)}.rec-all .rtog.on:hover{color:var(--archRed)}}
.cal-stage.mobile.layout-month.rec-all .rcard-fr:has(>.rmain.tap:active){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--archSh)}
.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan.tap:active{box-shadow:1px 1px 0 var(--archShPlan)}
@media(hover:hover){.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.tap:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--archSh)}.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan.tap:hover{box-shadow:4px 4px 0 var(--archShPlan)}}
/* 기록 리스트(전체·월별) 카드 — 붉은·파랑 3px 하드 섀도 대신 부드러운 중립 그림자·8px 모서리·윗면 옅은 빛.
   달력 날짜 시트(2026-09-29 유저)에서 먼저 쓰던 모양을 리스트 전체로 넓힘(같은 날 유저). 일정 구분은 D-n 딱지·파랑 시간 칩이 맡는다 */
.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard,.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan{border-radius:var(--r-sm);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 1px 2px rgba(0,0,0,.35),0 12px 24px -18px rgba(0,0,0,.9);transition:transform .14s var(--ease-out),box-shadow .14s}
.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.tap:active,.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan.tap:active,.cal-stage.mobile.layout-month.rec-all .rcard-fr:has(>.rmain.tap:active){transform:scale(.99);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 1px 2px rgba(0,0,0,.35),0 12px 24px -18px rgba(0,0,0,.9)}
@media(hover:hover){.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.tap:hover,.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan.tap:hover{transform:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 2px 4px rgba(0,0,0,.35),0 16px 28px -18px rgba(0,0,0,.95)}}
html[data-theme=light] .cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard,html[data-theme=light] .cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan,html[data-theme=light] .cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.tap:active,html[data-theme=light] .cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan.tap:active,html[data-theme=light] .cal-stage.mobile.layout-month.rec-all .rcard-fr:has(>.rmain.tap:active){box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 2px rgba(60,48,30,.07),0 12px 24px -18px rgba(60,48,30,.38)}
@media(hover:hover){html[data-theme=light] .cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.tap:hover,html[data-theme=light] .cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard.plan.tap:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 2px 4px rgba(60,48,30,.08),0 16px 28px -18px rgba(60,48,30,.45)}}
@media(prefers-reduced-motion:reduce){.cal-stage.mobile.layout-month:is(.rec-all,.rec-month) .mcard{transition:none}}
@media(max-width:359px){
  .cal-stage.mobile.layout-month.rec-all{padding-left:11px;padding-right:11px}
  .cal-stage.mobile.layout-month.rec-all .mcard{gap:9px;padding-right:9px}
  .rec-all .rdate{width:40px}.rec-all .rdate .rd{font-size:24px}.rec-all .rdate .rs{font-size:10.5px;letter-spacing:.3px}
  .cal-stage.mobile.layout-month.rec-all .mpo .thumb{width:44px}
  .cal-stage.mobile.layout-month.rec-all .mt{font-size:14px}
  :is(.rec-all,.rec-month) .rtime{min-width:47px;padding:6px 6px 5px}.rec-all .rcard-fr .rmain{gap:9px}:is(.rec-all,.rec-month) .rtime b{font-size:16px}:is(.rec-all,.rec-month) .rtime small{font-size:12px}
}

/* ---- 팬텀 미감 — 아카이브 외 레이아웃에서 쓸 P5 구조 스타일 (미감 재사용 대비 — 현재는 아카이브 전용 페어링) ---- */
.cal-stage.theme-phantom:not(.layout-archive):not(.layout-month){background-image:repeating-linear-gradient(-24deg,transparent 0 240px,rgba(216,0,12,.05) 240px 252px)}
.cal-stage.theme-phantom.layout-wall .pent{border:2px solid #FDFBF6;box-shadow:3px 3px 0 rgba(23,19,12,.7);border-radius:0}
.cal-stage.theme-phantom.layout-wall .pent:nth-child(2n){transform:rotate(.5deg)}
.cal-stage.theme-phantom.layout-wall .pent:nth-child(2n+1){transform:rotate(-.4deg)}
.cal-stage.theme-phantom:not(.layout-archive) .pseq,.cal-stage.theme-phantom:not(.layout-archive) .prate{background:#17130C;border:none;clip-path:none;transform:skewX(-8deg);box-shadow:2px 2px 0 var(--caccent);margin:4px 0 0 4px;color:#F2EDE4}
.cal-stage.theme-phantom .pseq i{color:#FF6B60;filter:none}
.cal-stage.theme-phantom .prate i{color:#FFCF5C;filter:none}
.cal-stage.theme-phantom .acard,.cal-stage.theme-phantom .tlcard{box-shadow:3px 3px 0 rgba(23,19,12,.16)}
.cal-stage.theme-phantom .lifestar{color:#C9930F;text-shadow:0 0 6px rgba(201,147,15,.55),0 1px 2px rgba(0,0,0,.4)}

/* ---- TIMELINE (좌측 날짜 레일; 모바일 거터 축소) ---- */
.cal-stage.layout-timeline .timeline{position:relative;padding:10px 6px 14px 0}
.cal-stage.layout-timeline .tlrow{position:relative;padding-left:62px;min-height:54px}
.cal-stage.layout-timeline .timeline::before{content:"";position:absolute;left:44px;top:6px;bottom:6px;width:2px;background:var(--cgrid)}
.cal-stage.layout-timeline .tldate{position:absolute;left:0;top:5px;width:34px;text-align:right;font-family:var(--cmono)}
.cal-stage.layout-timeline .tldate .d{font-size:15px;font-weight:800;color:var(--ctext)}
.cal-stage.layout-timeline .tldate .w{font-size:9px;color:var(--cmuted)}
.cal-stage.layout-timeline .tldate .w.sun{color:var(--cdanger)}
.cal-stage.layout-timeline .tldate .w.sat{color:var(--caccent)}
.cal-stage.layout-timeline .tldate.hol .d,.cal-stage.layout-timeline .tldate.hol .w{color:var(--cdanger)}
.cal-stage.layout-timeline .tldot{position:absolute;left:39px;top:9px;width:12px;height:12px;border-radius:50%;background:var(--caccent);border:3px solid var(--cbg);box-shadow:0 0 0 1px var(--caccent)}
.cal-stage.layout-timeline .tlentries{display:flex;flex-direction:column;gap:7px;padding:2px 0 16px}
.cal-stage.layout-timeline .tlcard{position:relative;display:flex;gap:9px;min-width:0;background:var(--csurface);border:1px solid var(--chairline);border-radius:calc(var(--cradius) + 2px);padding:7px;box-shadow:var(--cshadow)}
.cal-stage.layout-timeline .tlcard .thumb{width:40px;height:54px;border-radius:6px}
.cal-stage.layout-timeline .tlcard .thumb .ph{font-size:14px}
.cal-stage.layout-timeline .tlcard .thumb .lifestar{top:2px;left:3px;font-size:11px}
.cal-stage.layout-timeline .tm{min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center}
.cal-stage.layout-timeline .tm .tt{font-size:12.5px;font-weight:700;line-height:1.3;color:var(--ctext);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:break-word}
.cal-stage.layout-timeline .tm .tsub{font-family:var(--cmono);font-size:10px;color:var(--cmuted);margin-top:2px}
/* 타임라인 조밀 — 행·카드·썸네일 압축, 제목 1줄 */
.cal-stage.layout-timeline[data-density=compact] .tlrow{min-height:44px}
.cal-stage.layout-timeline[data-density=compact] .tlentries{gap:5px;padding:2px 0 10px}
.cal-stage.layout-timeline[data-density=compact] .tlcard{padding:5px}
.cal-stage.layout-timeline[data-density=compact] .tlcard .thumb{width:32px;height:43px}
.cal-stage.layout-timeline[data-density=compact] .tm .tt{-webkit-line-clamp:1}

/* ---- 미감 시그니처 ---- */
.cal-stage.theme-aurora{background:
  radial-gradient(680px 460px at 12% -8%, rgba(78,150,168,.18), transparent 60%),
  radial-gradient(600px 420px at 92% 4%, rgba(108,108,180,.15), transparent 62%),
  radial-gradient(520px 480px at 70% 112%, rgba(176,116,150,.11), transparent 60%),
  linear-gradient(176deg,#0e1322,#0a0e16 60%,#080b12)}
.cal-stage.theme-aurora .acard,.cal-stage.theme-aurora .tlcard{-webkit-backdrop-filter:blur(8px) saturate(116%);backdrop-filter:blur(8px) saturate(116%)}
.cal-stage.theme-paper{background:
  repeating-linear-gradient(180deg,transparent 0 26px,rgba(28,26,22,.035) 26px 27px),
  radial-gradient(circle at 1px 1px,rgba(28,26,22,.02) 1px,transparent 0) 0 0/4px 4px,
  var(--cbg)}
.cal-stage.theme-mono *{border-radius:0 !important}
.cal-stage.theme-mono{background:
  repeating-linear-gradient(0deg,var(--cgrid) 0 1px,transparent 1px 60px),
  repeating-linear-gradient(90deg,var(--cgrid) 0 1px,transparent 1px 60px),
  var(--cbg)}
.cal-stage.theme-mono .dow,.cal-stage.theme-mono .day-label .dw,.cal-stage.theme-mono .tldate .w{text-transform:uppercase;letter-spacing:.08em}
.cal-stage.theme-dusk{background:radial-gradient(680px 460px at 50% -20%, rgba(233,161,139,.08), transparent 60%),var(--cbg)}

/* ---- 옵션 시트: 미감 스와치 칩 ---- */
.calthemes{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.calthemechip{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 2px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);transition:.14s}
.calthemechip.on{border-color:var(--p5);background:rgba(228,3,43,.08)}
.calthemechip .tsw{width:34px;height:34px;border-radius:8px;display:flex;align-items:flex-end;gap:2px;padding:3px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.calthemechip .tsw i{flex:1;height:58%;border-radius:2px}
.calthemechip .tsw i:first-child{height:100%}
.calthemechip .tnm{font-size:10.5px;font-weight:700;color:var(--muted)}
.calthemechip.on .tnm{color:var(--text)}

/* ============================================================== 내보내기 샌드박스
   .cal-export = 오프스크린 960px 데스크톱 충실 레이아웃(참고 파일 재현). 화면엔 렌더 안 됨.
   .cal-stage 도 함께 붙어 base(thumb/ph/lifestar)·미감 시그니처를 공유. */
.cal-export{padding:0}
.cal-export .month{background:var(--cbg2);border:1px solid var(--chairline);border-radius:var(--cradius);overflow:hidden;box-shadow:var(--cshadow)}
.cal-export .m-head{display:flex;align-items:baseline;gap:12px;padding:18px 22px;border-bottom:1px solid var(--chairline)}
.cal-export .m-head .my{font-family:var(--cheading);font-size:22px;font-weight:800;letter-spacing:-.5px;color:var(--ctext)}
.cal-export .m-head .mc{font-family:var(--cmono);font-size:11px;color:var(--cmuted)}
.cal-export .thumb .ph{font-size:8px;line-height:1.15;text-align:center;padding:3px}
/* 합본 헤더 */
.cal-export .exp-head{padding:4px 2px 18px;margin-bottom:14px;border-bottom:1px solid var(--chairline)}
.cal-export .exp-title{margin-bottom:13px;display:flex;align-items:center}
.cal-export .exp-title svg{display:block;filter:drop-shadow(0 0 10px rgba(255,207,92,.28))}
.cal-export .exp-stats{display:flex;gap:14px 26px;flex-wrap:wrap;align-items:flex-end}
.cal-export .exp-stat{display:flex;flex-direction:column;gap:2px}
.cal-export .exp-stat b{font-family:var(--cheading);font-size:26px;font-weight:800;line-height:1;color:var(--ctext)}
.cal-export .exp-stat span{font-family:var(--cmono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--cmuted)}
.cal-export .exp-range{margin-left:auto;font-family:var(--cmono);font-size:12px;color:var(--cfaint);align-self:flex-end}
/* 내보내기는 기기 무관 고정 960px 렌더 (buildExportSandbox) — 모바일 저장도 데스크탑과 동일 산출물.
   여유 규격: 날짜 숫자 확대·포스터 여백·타일 완화 (화면용 데스크탑 규칙은 desktop.css의 .cal-scroll 스코프) */
.cal-stage.cal-export.layout-grid .dow{padding:9px 0;font-size:10.5px}
.cal-stage.cal-export.layout-grid .cell{min-height:116px;padding:7px 7px 8px}
.cal-stage.cal-export.layout-grid .daynum{font-size:13px;margin-bottom:6px}
.cal-stage.cal-export.layout-grid .flecks{gap:4px}
.cal-stage.cal-export.layout-grid .flecks.n1{grid-template-columns:1fr 1fr}
.cal-stage.cal-export.layout-grid .flecks.n2{aspect-ratio:auto}
.cal-stage.cal-export.layout-grid .flecks.n2 .fleck{aspect-ratio:3/4}
.cal-stage.cal-export.layout-grid .fleck .ph{font-size:11px}
.cal-stage.cal-export.layout-grid .more{font-size:9.5px;padding:2px 6px}
/* 그리드 순번 칩 — PNG 는 고정 960px 데스크탑 규격이라 노출(화면용 데스크탑 규칙은 desktop.css .cal-scroll 스코프와 동일 기하).
   prate(좌하단)와 겹치지 않게 좌상단 미러 — border·슬랜트 컷도 상하 반전 */
.cal-stage.cal-export.layout-grid .fleck .pseq{display:inline-flex;bottom:auto;top:0;border-top:none;border-bottom:1px solid color-mix(in srgb,var(--caccent) 78%,transparent);clip-path:polygon(0 0,100% 0,calc(100% - 6px) 100%,0 100%)}
.cal-stage.cal-export.layout-grid[data-density=compact] .fleck .pseq{font-size:8px;padding:2px 6px 2px 3px}
/* 평점 옆 등급 아이콘 — PNG 도 데스크탑(.cal-scroll)과 같은 노출·기하 (아이콘+점수, ★ 숨김) */
.cal-stage.cal-export .prate{align-items:center;gap:3px}
.cal-stage.cal-export .prate svg{display:block;width:11px;height:11px}
.cal-stage.cal-export .prate i{display:none}
.cal-stage.cal-export.layout-grid[data-density=compact] .fleck .prate svg{width:10px;height:10px}
.cal-stage.cal-export.layout-wall .prate svg{width:12px;height:12px}
.cal-stage.cal-export.layout-wall .prate+.pseq{top:42px}
.cal-export .subrate svg{display:inline-block;width:12px;height:12px;vertical-align:-2.5px;margin-right:2px}
.cal-export .subrate i{display:none}
.cal-stage.cal-export.layout-grid[data-density=compact] .cell{min-height:84px;padding:4px}
/* 조밀 5~8개(.many.cN) — PNG 는 데스크탑과 동일: 앞 (8-N)개는 정상 타일(두 줄 스팬),
   넘치는 2(N-4)개만 반높이(3/2)로 한 칸에 두 개씩 (총높이 = 2×2). 9개부턴 4개+더보기 */
.cal-stage.mobile.cal-export.layout-grid[data-density=compact] .flecks.many .fleck{display:flex;grid-row:span 2}
.cal-stage.mobile.cal-export.layout-grid[data-density=compact] .flecks.many.c5 .fleck:nth-child(n+4),
.cal-stage.mobile.cal-export.layout-grid[data-density=compact] .flecks.many.c6 .fleck:nth-child(n+3),
.cal-stage.mobile.cal-export.layout-grid[data-density=compact] .flecks.many.c7 .fleck:nth-child(n+2),
.cal-stage.mobile.cal-export.layout-grid[data-density=compact] .flecks.many.c8 .fleck{grid-row:span 1;aspect-ratio:3/2}
.cal-stage.mobile.cal-export.layout-grid[data-density=compact] .flecks.many .more{display:none}
.cal-stage.cal-export.layout-wall .wall{grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:8px}
.cal-stage.cal-export.layout-wall[data-density=cozy] .wall{grid-template-columns:repeat(auto-fill,minmax(158px,1fr))}
.cal-stage.cal-export.layout-wall[data-density=compact] .wall{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:6px}
/* 아카이브 PNG 내보내기 — 1480px 고정(데스크탑 규격·기기 무관), 여유 5열·조밀 7열.
   섀도는 box-shadow 금지 관례에 따라 drop-shadow, 스큐 칩은 어긋남 방지로 transform 해제. 컬러는 --arch* 변수(다크 자동). */
.cal-stage.mobile.cal-export.layout-archive{padding:30px 28px 52px}
.cal-stage.mobile.cal-export.layout-archive .arch{grid-template-columns:repeat(5,minmax(0,1fr));gap:28px 20px}
.cal-stage.mobile.cal-export.layout-archive[data-density=compact] .arch{grid-template-columns:repeat(7,minmax(0,1fr));gap:21px 15px}
.cal-stage.mobile.cal-export.layout-archive .apo .thumb{border-width:4px;box-shadow:none;filter:drop-shadow(5px 5px 0 var(--archSh)) drop-shadow(2px 4px 6px color-mix(in srgb,var(--archSh) 24%,transparent))}
.cal-stage.mobile.cal-export.layout-archive .apo .thumb.plan,.cal-stage.mobile.cal-export.layout-archive .apo .thumb.revisit{box-shadow:none;filter:drop-shadow(5px 5px 0 var(--archSh)) drop-shadow(2px 4px 6px color-mix(in srgb,var(--archSh) 24%,transparent))}
.cal-stage.mobile.cal-export.layout-archive .apo .thumb.plan{filter:drop-shadow(5px 5px 0 var(--archShPlan)) drop-shadow(2px 4px 6px color-mix(in srgb,var(--archShPlan) 24%,transparent))}
.cal-stage.mobile.cal-export.layout-archive .acell.life .thumb{box-shadow:none;filter:drop-shadow(5px 5px 0 #6b4d0d) drop-shadow(2px 4px 6px color-mix(in srgb,#8a6410 26%,transparent)) drop-shadow(0 0 10px rgba(232,184,75,.38))}
.cal-stage.mobile.cal-export.layout-archive .anum{font-size:17px;padding:4px 7px 3px;top:-11px;left:-9px;transform:none;box-shadow:none;filter:drop-shadow(2.5px 2.5px 0 var(--archRed))}
.cal-stage.mobile.cal-export.layout-archive .acell.plan .anum{filter:drop-shadow(2.5px 2.5px 0 var(--archBlue))}
.cal-stage.mobile.cal-export.layout-archive .acell.life .anum{filter:drop-shadow(2.5px 2.5px 0 #0B0B0D)}
.cal-stage.mobile.cal-export.layout-archive .alife{font-size:11.5px;padding:3px 7px 4px;top:-10px;right:-7px;transform:none;box-shadow:none;filter:drop-shadow(1.5px 2px 0 rgba(11,11,13,.85))}
.cal-stage.mobile.cal-export.layout-archive .atkt{transform:none;box-shadow:none;filter:drop-shadow(2px 2px 0 var(--archRed))}
.cal-stage.mobile.cal-export.layout-archive .acell.plan .atkt{filter:drop-shadow(2px 2px 0 var(--archBlue))}
.cal-stage.mobile.cal-export.layout-archive .atkt>*{transform:none}
.cal-stage.mobile.cal-export.layout-archive .atkt .atd,.cal-stage.mobile.cal-export.layout-archive .atkt .ats{font-size:13.5px}
.cal-stage.mobile.cal-export.layout-archive .atkt .atw{font-size:10px}
.cal-stage.mobile.cal-export.layout-archive .atkt .atarr{display:inline-flex}
.cal-stage.mobile.cal-export.layout-archive .atkt .ats.end{display:inline}
.cal-stage.mobile.cal-export.layout-archive .atkt .atarr svg{width:8px;height:8px}
.cal-stage.mobile.cal-export.layout-archive .atkt .ats.end{font-size:12px}
.cal-stage.mobile.cal-export.layout-archive .acap{padding-top:10px;gap:2.5px}
.cal-stage.mobile.cal-export.layout-archive .at{font-size:14.5px}
.cal-stage.mobile.cal-export.layout-archive[data-density=compact] .at{font-size:12.5px}
.cal-stage.mobile.cal-export.layout-archive .ast{font-size:10px}
.cal-stage.mobile.cal-export.layout-archive .arate{gap:4.5px;margin-top:4px}
.cal-stage.mobile.cal-export.layout-archive .arate b{font-size:16px}
.cal-stage.mobile.cal-export.layout-archive .arate svg{width:14px;height:14px}
.cal-stage.mobile.cal-export.layout-archive .appl svg{width:8px;height:11px}
.cal-stage.mobile.cal-export.layout-archive .appl b{font-size:10.5px}
.cal-stage.mobile.cal-export.layout-archive .aopen{font-size:10.5px}
.cal-stage.mobile.cal-export.layout-archive .afail{border-width:3px;padding:3px 10px 5px;box-shadow:none}
.cal-stage.mobile.cal-export.layout-archive .afail b{font-size:16px;text-shadow:none;letter-spacing:2px}
.cal-stage.mobile.cal-export.layout-archive .cbadges{left:7px;bottom:9px;gap:4px}
.cal-stage.mobile.cal-export.layout-archive .cbadges .leftbadge{filter:none}
.cal-stage.mobile.cal-export.layout-archive .cbadges .leftbadge i{font-size:10px;padding:3.5px 7px}
.cal-stage.mobile.cal-export.layout-archive .cbadges .leftbadge b{font-size:13px;padding:3.5px 8px}
.cal-stage.mobile.cal-export.layout-archive[data-density=compact] .cbadges{gap:3px}
.cal-stage.mobile.cal-export.layout-archive[data-density=compact] .cbadges .leftbadge i{font-size:8.5px;padding:3px 5.5px}
.cal-stage.mobile.cal-export.layout-archive[data-density=compact] .cbadges .leftbadge b{font-size:11px;padding:3px 6.5px}
/* html-to-image 는 시스템 폴백 폰트로 래스터화(skipFonts) — 레이아웃 때보다 글리프가 넓어져
   스팬 내부 줄바꿈이 생길 수 있다("13 plays" 두 줄 사고). 짧은 리드아웃은 전부 한 줄 고정. */
.cal-export .m-head .my,.cal-export .m-head .mc,.cal-export .exp-stat span,.cal-export .exp-range,
.cal-export .day-label .dn,.cal-export .day-label .dw,.cal-export .asub,.cal-export .tsub,
.cal-export .wbadge{white-space:nowrap}
/* 예정(미플레이) 링 — WebKit(사파리/iOS)은 foreignObject 래스터화에서 box-shadow 를 우하단으로
   어긋난 사각형으로 그린다(블러·스프레드 무관, Chromium 은 정상). filter:drop-shadow 는 양쪽 엔진
   모두 정확히 래스터됨 → 내보내기는 box-shadow 를 끄고 drop-shadow 로 화면 글로우를 재현.
   애니메이션도 반드시 꺼야 함(노드별 캡처 위상이 제각각 → 얼룩) */
.cal-export .thumb.plan,.cal-export .pent.plan{animation:none;box-shadow:none;filter:drop-shadow(0 0 3px rgba(95,182,255,.65)) drop-shadow(0 0 9px rgba(95,182,255,.35)) drop-shadow(0 0 16px rgba(63,224,208,.18))}
.cal-export .thumb.revisit,.cal-export .pent.revisit{animation:none;box-shadow:none;filter:drop-shadow(0 0 3px rgba(233,161,139,.7)) drop-shadow(0 0 9px rgba(233,161,139,.38)) drop-shadow(0 0 16px rgba(255,207,92,.16))}
.cal-export .rvbadge{text-shadow:none;transform:none} /* WebKit foreignObject 래스터의 text-shadow·skew 어긋남 방지 */

/* ===== 리뷰 PNG 내보내기 — 기록의 여백 =====
   고정 900px 캔버스를 미리보기에서만 축소. 캡처 노드는 원본 크기로 렌더해 기기 폭과 무관하다.
   foreignObject 래스터 오차를 막기 위해 카드 내부 box/text-shadow·animation은 전부 금지하고
   포스터 외곽의 불필요한 장식 효과는 쓰지 않는다. */
.review-export-sheet .sh-head{align-items:flex-start}
.rxe-sheet-kicker{margin-top:4px;font-size:11px;font-weight:700;color:var(--muted)}
.review-export-hint{margin:0 2px 12px;line-height:1.55}
.review-export-order{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 2px 12px;padding:11px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface2)}
.review-export-order>span:first-child{display:flex;flex-direction:column;gap:3px;min-width:0}.review-export-order b{font-size:13px;color:var(--text)}.review-export-order small{font-size:10.5px;line-height:1.45;color:var(--muted)}
.review-export-order-field{height:38px;display:flex;align-items:center;flex:0 0 auto;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.review-export-order-field:focus-within{border-color:var(--accentDim)}
.review-export-order-field i{padding-left:11px;color:var(--gold);font-family:var(--fn);font-size:13px;font-style:normal;font-weight:800}.review-export-order-field input{width:62px;height:100%;padding:0 9px 0 4px;border:0;outline:0;background:transparent;color:var(--text);font-family:var(--fn);font-size:15px;font-weight:800;text-align:right}
.review-export-order-field input::-webkit-inner-spin-button,.review-export-order-field input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.review-export-preview{width:100%;overflow:hidden;margin-bottom:13px;border:1px solid var(--border);border-radius:10px;background:#05080B}
.review-export-preview>article{transform-origin:top left}
.review-export-save{margin-bottom:4px}

/* 달력·기록 아카이브 PNG — 완성된 파일 자체를 축소 표시한 뒤 확인 저장 */
.png-export-sheet .sh-head{align-items:flex-start}.png-export-kicker{margin-top:4px;color:var(--muted);font-size:10px;font-weight:750}.png-export-hint{margin:0 2px 11px;line-height:1.5}.png-export-preview{width:100%;max-height:56dvh;overflow:auto;border:1px solid var(--border);border-radius:10px;background:#09090B}.png-export-preview img{display:block;width:100%;height:auto}.png-export-meta{margin:7px 2px 11px;color:var(--faint);font-family:var(--fn);font-size:9px;text-align:right}.png-export-save{margin-bottom:4px}

.review-export-card{position:relative;width:900px;overflow:hidden;background:#05080B;color:#F3F7FA;font-family:var(--fb);isolation:isolate}
.review-export-card,.review-export-card *{box-sizing:border-box;animation:none!important;box-shadow:none!important;text-shadow:none!important}
.review-export-card svg{display:block}
.rxe-hero{position:relative;height:510px;overflow:hidden;background:linear-gradient(135deg,#13252A,#070A0D 68%)}
.rxe-poster{position:absolute;inset:-18px;background-size:cover;background-position:center 34%;filter:saturate(.82) contrast(1.08) brightness(.78);transform:scale(1.035)}
.rxe-poster:empty{background-image:radial-gradient(circle at 76% 34%,rgba(99,242,227,.22),transparent 28%),linear-gradient(135deg,#172E33,#090C10 70%)}
.rxe-scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,8,11,.97) 0%,rgba(5,8,11,.86) 34%,rgba(5,8,11,.28) 72%,rgba(5,8,11,.55) 100%),linear-gradient(0deg,#05080B 0%,transparent 34%,rgba(5,8,11,.32) 100%)}
.rxe-top{position:absolute;z-index:2;left:52px;right:52px;top:42px;display:flex;justify-content:space-between;align-items:center;padding-bottom:19px;border-bottom:1px solid rgba(185,220,225,.23)}
.rxe-brandmark{width:24px;height:32px}.rxe-brandmark svg{width:100%;height:100%;fill:none;stroke:#69EEE3;stroke-width:7}
.rxe-index{display:flex;align-items:baseline;font-family:var(--fn)}.rxe-index b{font-size:17px;letter-spacing:.04em;color:#E9C86B}
.rxe-title{position:absolute;z-index:2;left:52px;right:276px;bottom:52px}.rxe-sys{margin-bottom:14px;font-size:14px;font-weight:750;letter-spacing:-.01em;color:#B3C1C7}
.rxe-title h1{max-width:100%;margin:0;color:#F6F8FA;font-size:69px;font-weight:950;line-height:.98;letter-spacing:-.055em;word-break:keep-all;overflow-wrap:anywhere}.rxe-title h1.long{font-size:58px;line-height:1.02}.rxe-title h1.xlong{font-size:49px;line-height:1.04}
.rxe-title p{display:flex;align-items:center;gap:8px;margin:18px 0 0;color:#C4D0D6;font-size:18px;font-weight:700;line-height:1.35}.rxe-title p span{color:#91A2A9;font-weight:500}
.rxe-score{position:absolute;z-index:3;right:38px;bottom:32px;width:216px;height:216px;display:grid;place-items:center}
.rxe-score>svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.rxe-score circle{fill:rgba(5,8,11,.64);stroke-width:3}.rxe-score .track{stroke:rgba(201,217,222,.18)}.rxe-score .value{fill:none;stroke-linecap:round}
/* foreignObject 캡처에서 backdrop-filter가 원 바깥의 사각형으로 번져 단색 배경만 쓴다. */
.rxe-score-inner{position:relative;width:166px;height:166px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid rgba(220,237,240,.14);border-radius:50%;background:rgba(5,8,11,.94)}
.rxe-score small{margin-bottom:6px;font-size:12px;font-weight:750;color:#93A3AA}.rxe-score-value{display:flex;align-items:baseline;justify-content:center;gap:9px}.rxe-score strong{font-family:var(--fn);font-size:56px;line-height:.88;letter-spacing:-.065em;color:#fff}.rxe-score em{font-family:var(--fn);font-size:15px;font-style:normal;color:#81939D}.rxe-score-grade{display:flex;align-items:center;justify-content:center;gap:7px;min-width:70px;margin-top:12px;padding-top:8px;border-top:1px solid rgba(220,237,240,.12);color:#63F2E3}.rxe-score-grade svg{width:22px;height:22px;flex:none}.rxe-score-grade span{font-size:12.5px;font-weight:850;line-height:1}
.rxe-run{display:grid;grid-template-columns:1.05fr 1.18fr 1fr 1.48fr 1fr;min-height:136px;padding:0 52px;border-bottom:1px solid rgba(146,196,201,.16);background:rgba(7,12,15,.9)}
.rxe-run.crime-scene{grid-template-columns:1.05fr 1.18fr 1fr 1.48fr}
.rxe-run>div{position:relative;display:flex;flex-direction:column;justify-content:center;gap:7px;padding:0 18px;border-left:1px solid rgba(146,196,201,.13)}.rxe-run>div:first-child{padding-left:0;border-left:0}.rxe-run>div:last-child{padding-right:0}
.rxe-run small{font-size:12px;font-weight:700;color:#7E929B}.rxe-run strong{font-size:16px;font-weight:750;line-height:1.25;color:#DFE7EA;white-space:nowrap;font-variant-numeric:tabular-nums}.rxe-run strong.clear{color:#69EEE3}.rxe-run strong.failed{color:#FF6B5E}.rxe-run em{font-size:11px;font-style:normal;font-weight:800;color:#E9C86B}
.rxe-run .leftbadge{align-self:flex-start;margin:0;border-radius:3px;transform:skewX(-9deg)}.rxe-run .leftbadge i{padding:4px 7px;font-size:9px}.rxe-run .leftbadge b{padding:4px 7px;font-size:12.5px}
.rxe-run .leftbadge.nohint i{padding:5px 8px;font-size:9.5px}
.rxe-run em.rxe-rec{color:#91A2A9;font-size:10.5px;letter-spacing:-.01em}
.rxe-block{position:relative;padding:44px 52px 4px}.rxe-cap{display:grid;grid-template-columns:26px auto 1fr;align-items:center;gap:12px;margin-bottom:28px}.rxe-cap>span{color:#7E929B;font-family:var(--fn);font-size:12px;font-weight:750}
.rxe-cap>div{display:flex;min-width:max-content;white-space:nowrap}.rxe-cap b{font-size:21px;font-weight:850;line-height:1;letter-spacing:-.025em;white-space:nowrap}.rxe-cap>i{height:1px;margin-left:12px;background:rgba(143,187,192,.18)}
.rxe-sense-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.rxe-sense-grid.count-4{grid-template-columns:repeat(4,1fr)}.rxe-sense-grid.count-5{grid-template-columns:repeat(5,1fr);gap:12px}.rxe-sense-grid.count-5 .rxe-sense{padding:20px 16px 18px}.rxe-sense{padding:22px 20px 20px;border:1px solid rgba(143,187,192,.17);border-radius:2px;background:rgba(12,20,24,.82)}
.rxe-sense-head{display:grid;grid-template-columns:1fr auto;align-items:end}.rxe-sense-head span{font-size:16px;font-weight:800;color:#C3D0D5}.rxe-sense-head b{font-family:var(--fn);font-size:32px;line-height:1;color:#F5F8F9}.rxe-sense-head em{grid-column:1/-1;margin-top:8px;font-size:12.5px;font-style:normal;font-weight:700;color:#69EEE3}
.rxe-ticks{display:flex;align-items:end;gap:5px;height:22px;margin-top:19px}.rxe-ticks i{flex:1;height:6px;background:rgba(143,187,192,.12)}.rxe-ticks i.on{height:10px;background:#69EEE3}
/* 장치:자물쇠 — 체감 지표 섹션 폭 전체 캡슐. 색은 앱 --accent/--gold 의 리터럴(내보내기는 :root 변수 미해석).
   box-shadow 금지(WebKit foreignObject 에서 어긋남) — 앱 캡슐의 글로우는 의도적으로 뺐다. */
.rxe-sense-grid+.rxe-dlr{margin-top:14px}
.rxe-dlr{padding:20px;border:1px solid rgba(143,187,192,.17);border-radius:2px;background:rgba(12,20,24,.82)}
.rxe-dlr-head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}
.rxe-dlr-head>span{display:inline-flex;align-items:baseline;gap:8px}
.rxe-dlr-head>span.lock{justify-content:flex-end}
.rxe-dlr-head em{font-style:normal;font-size:16px;font-weight:800;color:#C3D0D5}
.rxe-dlr-head b{font-family:"IBM Plex Mono","SF Mono",ui-monospace,monospace;font-size:32px;line-height:1}
.rxe-dlr-head .dev b{color:#3FE0D0}.rxe-dlr-head .lock b{color:#FFCF5C}
.rxe-dlr-cap{font-size:12.5px;font-weight:700;color:#8DA0A8;white-space:nowrap}
.rxe-dlr-bar{display:flex;gap:5px;height:14px;margin-top:17px;border-radius:999px}
.rxe-dlr-bar i{border-radius:999px}
.rxe-dlr-bar i.dev{background:linear-gradient(90deg,#1E9E92,#3FE0D0)}
.rxe-dlr-bar i.lock{background:linear-gradient(90deg,#FFCF5C,#C99A2E)}
.rxe-analysis .rxe-cap>div{align-items:baseline;gap:12px}.rxe-analysis .rxe-cap small{display:inline-flex;align-items:baseline;gap:5px;font-family:var(--fb);font-size:12px;font-weight:750;letter-spacing:-.01em}.rxe-analysis .rxe-cap small strong{font-family:var(--fn);font-size:14px;font-weight:850;letter-spacing:0}
.rxe-analysis-grid{display:grid;grid-template-columns:338px minmax(0,1fr);align-items:center;gap:18px;padding:12px 4px 18px;border-top:1px solid rgba(143,187,192,.1);border-bottom:1px solid rgba(143,187,192,.1)}.rxe-analysis-grid.solo{grid-template-columns:1fr;padding:26px 20px}
.rxe-radar{width:330px;height:297px;overflow:visible}.rxe-rings polygon{fill:none;stroke:rgba(141,176,182,.18);stroke-width:1}.rxe-radar-labels{fill:#C3D0D5;font-family:var(--fb);font-size:17px;font-weight:800}
.rxe-evals{display:grid;grid-template-columns:repeat(6,1fr);align-content:center;column-gap:4px;row-gap:15px;padding:10px 2px 10px 8px}.rxe-eval{position:relative;grid-column:span 2;width:116px;height:116px;display:grid;place-items:center;justify-self:center}.rxe-eval:nth-child(4){grid-column:2/span 2}.rxe-eval:nth-child(5){grid-column:4/span 2}.rxe-eval>svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.rxe-analysis-grid.solo .rxe-evals{width:438px;justify-self:center}
.rxe-eval-copy{position:relative;width:88px;height:88px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(197,220,224,.1);border-radius:50%;background:#080D10}.rxe-eval-copy>span{font-size:14px;font-weight:800;line-height:1;color:#C7D2D6;letter-spacing:-.025em}.rxe-eval-copy>div{display:flex;align-items:baseline;justify-content:center;gap:4px}.rxe-eval-copy b{font-family:var(--fn);font-size:31px;font-weight:850;line-height:.85;letter-spacing:-.045em}.rxe-eval-copy b.word{font-family:var(--fb);font-size:17px;letter-spacing:-.03em}.rxe-eval-copy small{font-family:var(--fn);font-size:11.5px;font-weight:700;color:#71858E}.rxe-eval.unset{opacity:.35}
.rxe-review{padding-bottom:48px}.rxe-quote{position:relative;padding:31px 34px 33px 68px;border-left:2px solid #69EEE3;background:rgba(12,18,22,.72)}
.rxe-quote>b{position:absolute;left:24px;top:17px;color:#69EEE3;font-family:Georgia,serif;font-size:52px;font-weight:400;line-height:1}.rxe-quote p{margin:0;color:#E0E7EA;font-size:28px;font-weight:500;line-height:1.62;letter-spacing:-.018em;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.rxe-quote.medium p{font-size:25px;line-height:1.67}.rxe-quote.long p{font-size:22px;line-height:1.7}
.rxe-quote p b{font-weight:900;color:#F2F7F9}.rxe-quote p i{font-style:italic}
/* 스포일러 런 치환 칩 — 원문을 이미지에 남기지 않는다. box-shadow·filter 금지(래스터 어긋남) */
.rxe-spoiler-chip{display:inline-block;margin:0 8px;padding:2px 14px 3px;vertical-align:2px;color:#FF8DA0;border:1px solid rgba(228,3,43,.55);
  background:repeating-linear-gradient(-45deg,rgba(228,3,43,.20) 0 8px,rgba(228,3,43,.07) 8px 16px);
  font-size:.62em;font-weight:800;letter-spacing:.16em;white-space:nowrap}
.rxe-empty-review{display:flex;align-items:center;justify-content:center;padding:48px;border:1px solid rgba(143,187,192,.15);color:#9EADB4;font-size:20px;font-weight:700}
.rxe-foot{min-height:116px;display:flex;align-items:center;justify-content:space-between;padding:0 52px;border-top:1px solid rgba(143,187,192,.18);background:#070C0F}.rxe-foot>div:first-child{display:flex;flex-direction:column;gap:6px}.rxe-foot b{font-size:13px;font-weight:750;color:#C2CED2;word-break:keep-all}.rxe-foot small{font-family:var(--fn);font-size:11px;color:#71858E}.rxe-url{font-family:var(--fe);font-size:17px;font-weight:800;letter-spacing:.1em;color:#E9C86B}
/* ---------- 인스타 티켓(1080×1350 · 4:5) — 리뷰 공유용 큰 글씨 카드. 지표 색은 hot/good 스케일 인라인, 등급 색은 스코어바 인라인 ---------- */
.rxi-card{position:relative;width:1080px;height:1350px;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:54px 70px;color:#F3F7FA;font-family:'Pretendard','Pretendard Variable',-apple-system,'Apple SD Gothic Neo',sans-serif;isolation:isolate;background:radial-gradient(120% 90% at 50% -10%,rgba(105,238,227,.10),transparent 60%),linear-gradient(170deg,#0D1A20,#05080B 70%)}
.rxi-card,.rxi-card *{box-sizing:border-box;animation:none!important;box-shadow:none!important;text-shadow:none!important}
.rxi-card svg{display:block}
.rxi-poster{position:absolute;inset:0;background-size:cover;background-position:center 30%;filter:saturate(.9) contrast(1.04) brightness(.88)}
.rxi-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,8,11,.16) 0%,rgba(5,8,11,.34) 34%,rgba(5,8,11,.55) 66%,rgba(5,8,11,.74) 100%)}
.rxi-ticket{position:relative;width:100%;background:rgba(7,12,15,.8);border:2px solid rgba(105,238,227,.5);display:flex;flex-direction:column}
.rxi-stub{display:flex;justify-content:space-between;align-items:center;padding:28px 52px}
.rxi-adm{font-family:'Bebas Neue',sans-serif;font-size:30px;letter-spacing:.28em;color:#69EEE3;white-space:nowrap}
.rxi-no{font-family:'Bebas Neue',sans-serif;font-size:36px;font-weight:400;letter-spacing:.06em;color:#E9C86B}.rxi-no b{font-weight:700}
.rxi-perf{position:relative;height:0;border-top:4px dashed rgba(143,187,192,.35);margin:0 8px}
.rxi-perf::before,.rxi-perf::after{content:'';position:absolute;top:-30px;width:56px;height:56px;border-radius:50%;background:#081014}
.rxi-perf::before{left:-44px;border-right:2px solid rgba(105,238,227,.5)}
.rxi-perf::after{right:-44px;border-left:2px solid rgba(105,238,227,.5)}
.rxi-main{padding:40px 52px 36px}
.rxi-eyebrow{font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:.3em;color:#5E7079;margin-bottom:14px}
.rxi-main h1{margin:0;font-family:'Black Han Sans',sans-serif;font-weight:400;font-size:100px;line-height:1.02;color:#F6F8FA;word-break:keep-all;overflow-wrap:anywhere}
.rxi-main h1.long{font-size:76px}.rxi-main h1.xlong{font-size:60px;line-height:1.1}
.rxi-store{margin-top:14px;font-size:32px;font-weight:700;color:#93A3AA}
.rxi-info{margin-top:24px;display:flex;align-items:center;gap:13px;font-size:29px;font-weight:750;color:#C6D1D6;white-space:nowrap;font-variant-numeric:tabular-nums}
.rxi-dot{font-style:normal;color:#5E7079;font-weight:700}
/* 앱 leftbadge(스큐 캡슐 딱지)의 티켓 스케일 — 내보내기 제약상 리터럴 색·폰트, box-shadow 없음 */
.rxi-leftbadge{display:inline-flex;align-items:stretch;white-space:nowrap;transform:skewX(-10deg);border:2px solid rgba(76,190,126,.55);border-radius:8px;overflow:hidden}
.rxi-leftbadge i{font-style:normal;font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:25px;letter-spacing:.14em;line-height:1;display:flex;align-items:center;padding:9px 13px;background:#4CBE7E;color:#04160C}
.rxi-leftbadge b{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:31px;line-height:1;display:flex;align-items:center;padding:9px 14px;color:#63E2A0;background:rgba(76,190,126,.12)}
.rxi-leftbadge.hint{border-color:rgba(255,207,92,.6)}
.rxi-leftbadge.hint i{background:#FFCF5C;color:#241A04}
.rxi-leftbadge.hint b{color:#FFD97C;background:rgba(255,207,92,.1)}
.rxi-leftbadge.nohint{border-color:rgba(255,207,92,.6)}
.rxi-leftbadge.nohint i{background:#FFCF5C;color:#241A04;padding:10px 14px}
.rxi-info b{font-weight:900;color:#69EEE3}.rxi-info b.fail{color:#FF6B5E}
.rxi-senses{margin-top:32px;display:grid;gap:16px}
.rxi-sense{display:grid;grid-template-columns:150px 1fr 268px;align-items:center;gap:22px}
.rxi-sense>span:first-child{font-size:30px;font-weight:800;color:#C3D0D5}
.rxi-tickrow{display:flex;gap:6px;height:28px}
.rxi-tickrow i{flex:1;background:rgba(143,187,192,.13)}
.rxi-val{display:flex;align-items:baseline;justify-content:flex-end;gap:12px}
.rxi-val b{font-family:'Bebas Neue',sans-serif;font-size:46px;line-height:.9}
.rxi-val em{font-style:normal;font-size:27px;font-weight:800}
.rxi-details{display:grid;grid-template-columns:repeat(5,1fr);margin-top:30px;border:1px solid rgba(143,187,192,.16)}
.rxi-details>div{padding:18px 6px 16px;text-align:center}
.rxi-details>div+div{border-left:1px solid rgba(143,187,192,.16)}
.rxi-details span{display:block;font-size:24px;font-weight:800;color:#9FAFB6}
.rxi-details b{display:block;margin-top:6px;font-family:'Bebas Neue',sans-serif;font-size:56px;line-height:.9}
.rxi-details b.word{font-family:inherit;font-size:30px;line-height:1.5;font-weight:800}
.rxi-score{display:flex;align-items:center;justify-content:space-between;margin-top:32px;padding:22px 36px;border:1px solid rgba(143,187,192,.3)}
.rxi-score small{font-family:'Bebas Neue',sans-serif;font-size:28px;letter-spacing:.3em;color:#93A3AA}
.rxi-score-v{display:flex;align-items:baseline;gap:18px}
.rxi-score-v b{font-family:'Bebas Neue',sans-serif;font-size:104px;line-height:.8}
.rxi-score-v em{display:inline-flex;align-items:center;gap:12px;font-style:normal;font-size:34px;font-weight:900;letter-spacing:.06em}
.rxi-score-v em svg{flex:none}
.rxi-btm{display:flex;justify-content:space-between;align-items:center;padding:26px 52px 30px}
.rxi-code{width:380px;height:54px;opacity:.85;background:repeating-linear-gradient(90deg,#C6D1D6 0 5px,transparent 5px 9px,#C6D1D6 9px 12px,transparent 12px 19px,#C6D1D6 19px 21px,transparent 21px 27px)}
.rxi-url{font-family:'Bebas Neue',sans-serif;font-size:30px;letter-spacing:.2em;color:#E9C86B}
/* 내보내기 시트 스타일 픽커 — 계획 PNG 픽커(plan-export-style-picks) 재사용, 2열 + 카드 미감 스와치 */
.rxe-style-picks{grid-template-columns:1fr 1fr;margin:0 0 12px}
.rxe-style-picks>button[data-rxe-style-pick=archive]>i{background:linear-gradient(180deg,#13252A 0 46%,#070A0D 46%)}
.rxe-style-picks>button[data-rxe-style-pick=ticket]>i{background:#0A1114;border:1px dashed rgba(105,238,227,.6)}

/* ============================================================== 리뷰 · 장르 필터 */
/* 장르 칩 (필터 시트 내 다중 선택) */
.fgenres{display:flex;flex-wrap:wrap;gap:7px}
.gchip{font-size:13px;font-weight:700;color:var(--muted);min-height:36px;display:inline-flex;align-items:center;padding:0 14px;border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);flex:0 0 auto;white-space:nowrap;border:1px solid var(--glass-line);transition:color .14s,scale .2s var(--ease-press)}
@media (hover:hover){.gchip:not(.on):hover{color:var(--text)}} /* 터치 기기는 탭 후 hover가 잔존해 해제한 칩 글자가 muted 로 안 돌아오므로 포인터 기기 한정 */
.gchip.on{color:#fff;background:var(--lens);box-shadow:var(--lens-sh);border-color:transparent}.gchip:active{scale:.96}
.filter-field-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:0 0 7px 2px}.field .filter-field-head>label{min-width:0;margin:2px 0 0}.filter-bulk{display:flex;gap:4px;flex:none}.filter-bulk button{height:28px;padding:0 10px;color:var(--muted);border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:11px;font-weight:800;white-space:nowrap}.filter-bulk button:active:not(:disabled){transform:scale(.96)}.filter-bulk button:disabled{opacity:.32}
.filter-fast-field{margin-bottom:18px}.filter-fast-toggle{--avfast-ring:var(--muted);--avfast-mark:var(--gold);width:42px;height:42px;display:grid;place-items:center;padding:0;border-radius:50%}.filter-fast-toggle svg{width:22px;height:22px;display:block;overflow:visible}.filter-fast-toggle.on{--avfast-ring:var(--paper);--avfast-mark:var(--gold)}
/* 내 메모 토글 — IC.book 은 채움 기본값이라 라인 아이콘 스타일을 명시(다크/라이트 공통 가시성) */
.filter-fast-toggle[data-fmemo] svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.rec-player-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.rec-player-head>label{margin:0}.rec-ask{position:relative;min-height:30px;color:var(--muted)}.rec-ask.selected{color:var(--text);border-color:var(--glass-line-hi)}.review-rec-panel{margin-top:11px}.review-rec-panel[hidden]{display:none}
.rec-editor{padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.rec-editor-head{display:flex;align-items:center;gap:9px;margin-bottom:10px}.rec-editor-head>span{display:flex;flex-direction:column;gap:1px;margin-right:auto}.rec-editor-head i{color:var(--faint);font-family:var(--fe);font-size:7.5px;font-style:normal;font-weight:800;letter-spacing:.12em}.rec-editor-head b{color:var(--text);font-size:12.5px}.rec-editor-head strong{color:var(--text);font-family:var(--fn);font-size:12.5px}.rec-editor-head button{height:28px;padding:0 10px;color:var(--muted);border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);font-size:11px;font-weight:700}.rec-editor-head button:disabled{opacity:.3}.rec-picks{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px}.rec-picks button{height:33px;color:var(--muted);border:1px solid var(--glass-line);border-radius:8px;background:var(--glass-bg);font-family:var(--fn);font-size:12px;font-weight:800}.rec-picks button.on{color:var(--text);border-color:color-mix(in srgb,var(--p5) 45%,var(--border));background:color-mix(in srgb,var(--p5) 12%,var(--surface2))}.rec-picks button.edge{color:#fff;background:var(--lens);border-color:transparent;box-shadow:var(--lens-sh)}.rec-picks button:disabled{opacity:.2}.rec-editor>small{display:block;margin-top:8px;color:var(--faint);font-size:11px;line-height:1.45}
.te-rec .rec-editor{clip-path:none;border-radius:16px;background:var(--surface)}.te-rec .rec-editor-head strong{color:var(--text)}.te-rec .rec-editor-head button{min-height:30px;padding:0 11px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:11px}.te-rec .rec-picks button{border-radius:8px}.te-rec .rec-picks button.on{color:var(--text);border-color:color-mix(in srgb,var(--p5) 40%,var(--border));background:color-mix(in srgb,var(--p5) 12%,var(--surface2))}.te-rec .rec-picks button.edge{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}.te-rec .rec-editor>small{font-size:11px}html[data-theme=light] .te-rec .rec-editor{background:var(--surface)}html[data-theme=light] .te-rec .rec-picks button.edge{color:#fff;border-color:transparent;background:var(--lens)}
.rec-filter-field{margin-bottom:18px}.rec-filter-lead{display:flex;flex-direction:column;gap:3px;margin:0 2px 10px}.rec-filter-lead b{font-size:13px;color:var(--text)}.rec-filter-lead small{font-size:10px;line-height:1.45;color:var(--muted)}.rec-filter-picks{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px}.rec-filter-picks button{height:32px;display:flex;align-items:center;justify-content:center;gap:1px;min-width:0;color:var(--muted);border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);transition:color .14s,scale .2s var(--ease-press)}.rec-filter-picks button:active{scale:.96}.rec-filter-picks b{font-family:var(--fn);font-size:13px;line-height:1}.rec-filter-picks span{font-size:11px;line-height:1;transform:translateY(1px)}.rec-filter-picks button.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
/* 검색 필터 평점 범위 — 한 트랙에 최소·최대 손잡이 두 개. 입력은 손잡이만 받고(겹친 트랙 통과), 트랙 양끝은 손잡이 반지름(11px)만큼 들여 손잡이 중심과 맞춘다 */
.rate-filter-field{margin-bottom:18px}.rate-filter-lead{margin-bottom:4px}.rate-range{--lo:0%;--hi:100%;position:relative;height:34px;margin:0 2px}.rate-range::before{content:"";position:absolute;left:11px;right:11px;top:50%;height:4px;margin-top:-2px;border-radius:999px;background:linear-gradient(90deg,var(--surface3) 0 var(--lo),var(--p5) var(--lo) var(--hi),var(--surface3) var(--hi) 100%)}.rate-range input{position:absolute;inset:0;z-index:1;width:100%;height:100%;margin:0;padding:0;appearance:none;-webkit-appearance:none;background:transparent;pointer-events:none;touch-action:none}.rate-range input.top{z-index:2}.rate-range input::-webkit-slider-runnable-track{height:34px;background:transparent}.rate-range input::-webkit-slider-thumb{width:22px;height:22px;margin-top:6px;appearance:none;-webkit-appearance:none;border:2px solid var(--p5);border-radius:50%;background:var(--surface);pointer-events:auto;cursor:grab}.rate-range input::-moz-range-track{background:transparent}.rate-range input::-moz-range-thumb{width:18px;height:18px;border:2px solid var(--p5);border-radius:50%;background:var(--surface);pointer-events:auto;cursor:grab}.rate-range input:focus-visible{outline:none}.rate-range input:focus-visible::-webkit-slider-thumb{outline:2px solid var(--text);outline-offset:2px}.rate-range input:focus-visible::-moz-range-thumb{outline:2px solid var(--text);outline-offset:2px}.rate-range-ticks{position:relative;height:12px;margin:0 2px;color:var(--faint);font:10px/1 var(--fn)}.rate-range-ticks span{position:absolute;top:0;transform:translateX(-50%)}.rate-range-ticks span:nth-child(1){left:11px}.rate-range-ticks span:nth-child(2){left:50%}.rate-range-ticks span:nth-child(3){left:calc(100% - 11px)}
.fchip svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;vertical-align:-2px}
.trow .end .ratebadge.norating{background:var(--surface2)}
.trow .end .ratebadge.norating::after{display:none}
.trow .end .ratebadge.norating .rt{color:var(--faint)}

/* 리뷰 작성 시트 */
.sheet-tall{max-height:92vh}
.rev-theme{font-weight:800;font-size:16px;margin:0 0 14px;color:var(--text);word-break:keep-all}
.axis-group{margin:4px 0}
.sheet .axis-group{margin:12px 0 0;padding:0 14px 4px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
html[data-theme=light] .sheet .axis-group{background:#fff}
.axg-cap{font-size:13.5px;letter-spacing:-.015em;color:var(--text);font-weight:800;margin:14px 0 4px 2px}
/* 평가 축 — 라벨/값 헤더 + 행 전체 폭 둥근 칸(6px). 머리 점은 중립색, 점수 색은 칸에만 */
.axisrow{margin:13px 0 16px}
.axh{display:flex;align-items:baseline;justify-content:space-between;margin:0 3px 7px 2px}
.axl{font-size:13px;font-weight:800;color:var(--muted);letter-spacing:.01em;display:inline-flex;align-items:center}
.axl::before{content:"";width:6px;height:6px;margin-right:8px;border-radius:50%;background:var(--faint)}
.axl-sub{margin-left:4px;font-size:11px;font-weight:600;color:var(--faint);letter-spacing:0}
.axv{font-family:var(--fn);font-weight:800;font-size:16px;color:var(--text);line-height:1;white-space:nowrap}
.axv i{font-style:normal;font-family:var(--fb);font-size:11px;font-weight:700;color:var(--faint);margin-left:6px;letter-spacing:0}
.axv.unset{font-family:var(--fb);font-size:11.5px;font-weight:600;color:var(--faint)}
.axh-r{display:inline-flex;align-items:center;gap:9px}
.axclear{display:inline-flex;align-items:center;gap:3px;height:22px;min-height:28px;padding:0 8px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);color:var(--muted);font-family:var(--fb);font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer;transition:.15s}
.axclear[hidden]{display:none} /* hidden 속성이 display 규칙에 밀리지 않게 */
.axclear svg{width:10px;height:10px;stroke:currentColor;fill:none;stroke-width:2}
.axclear:active{color:var(--text);border-color:var(--muted);transform:scale(.95)}
.axnone{display:inline-flex;align-items:center;height:22px;min-height:28px;padding:0 9px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);color:var(--muted);font-family:var(--fb);font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer;transition:.15s}
.axnone:active{transform:scale(.95)}
.axnone.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
/* pan-y 고정 — 세로 스크롤은 브라우저에 넘기고 가로 드래그만 trackDrag 가 가져간다. none 으로 되돌리면 시트 스크롤이 먹통 */
.axbar{display:flex;gap:5px;touch-action:pan-y;cursor:pointer;padding:4px 6px 4px 1px}
.aseg{flex:1;height:24px;border-radius:6px;background:var(--surface3);pointer-events:none;transition:background-color .1s}
.aseg.on{background:var(--segc,var(--accent))}
/* 현재 값(마지막 켜진 칸) — 살짝 솟아 P5 커서처럼 */

.axg-note{font-family:var(--fb);font-weight:500;font-size:11px;color:var(--faint);letter-spacing:0;margin-left:6px}
.btn.g.danger{color:var(--danger);background:color-mix(in srgb,var(--danger) 13%,var(--surface2));border-color:color-mix(in srgb,var(--danger) 36%,transparent);box-shadow:none}
.btn.g.danger svg,.btn.danger svg,.btn.danger-solid svg{stroke:currentColor}

/* 회원가입 비밀번호 규칙 표시 */
.pwrules{display:flex;gap:7px;flex-wrap:wrap;margin:-4px 0 12px}
.pwrule{display:inline-flex;align-items:center;gap:6px;font-family:var(--fb);font-size:11.5px;font-weight:600;color:var(--faint);padding:4px 11px;border:1px solid var(--border);border-radius:999px;background:var(--surface);transition:.22s}
.pwrule .dot{width:6px;height:6px;border-radius:50%;background:var(--surface3);transition:.22s}
.pwrule.ok{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--border));background:color-mix(in srgb,var(--success) 9%,var(--surface))}
.pwrule.ok .dot{background:var(--success)}
.pwmatch{font-size:11.5px;font-weight:700;margin-top:6px;min-height:1em}
.pwmatch.ok{color:var(--success)}
.pwmatch.no{color:var(--danger)}

/* 평점 게이지(드래그) — 스텝퍼와 함께 총점/기록 평점 조절 */
.rategauge{margin-top:12px;padding:8px 2px;touch-action:pan-y;cursor:pointer;user-select:none} /* pan-y — .axbar 주석 참고 */
.rategauge .rg-track{position:relative;height:8px;border-radius:5px;background:var(--surface3);overflow:visible}
.rategauge .rg-fill{position:absolute;top:0;left:0;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--gold),var(--p5));transition:width .06s linear}
.rategauge .rg-thumb{position:absolute;top:50%;width:20px;height:20px;border-radius:50%;background:var(--text);border:3px solid var(--p5);transform:translate(-50%,-50%);box-shadow:0 2px 8px rgba(0,0,0,.45);transition:left .06s linear}
.rategauge.unset .rg-thumb{display:none}
.rategauge.unset .rg-fill{width:0!important}

/* 무한 스크롤 로딩 센티넬 */
.themesentinel{display:flex;align-items:center;justify-content:center;padding:14px 0 24px;opacity:.35}
.themesentinel svg{width:26px;height:26px}
.themesentinel.loading{animation:sentpulse 1s ease-in-out infinite}
@keyframes sentpulse{0%,100%{opacity:.25}50%{opacity:.7}}

/* AI CSV 프롬프트 생성 (일괄 입력) */
.aiprompt{margin-bottom:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);padding:0 12px}
.aiprompt>summary{cursor:pointer;padding:12px 2px;font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px;list-style:none;user-select:none}
.aiprompt>summary::-webkit-details-marker{display:none}
.aiprompt>summary::marker{content:''}
.aiprompt>summary svg{width:18px;height:18px;stroke:var(--gold);flex:0 0 auto}
.aiprompt[open]{padding-bottom:12px}
.aiprompt textarea{min-height:88px}
#aiPromptStatus{color:var(--gold);min-height:1em}

/* 리뷰 카드 */
.revcard{border-radius:16px;margin:8px 18px 0;border:1px solid var(--border);background:var(--surface);padding:12px 14px;position:relative}
/* 리뷰 섹션 폭 정합 — 상세의 리뷰는 .dbody(padding 18px) 안에 있는데 카드가 18px 마진을 또 가져 다른 패널보다 36px 좁았다.
   dbody 안에서는 이중 인셋을 제거해 패널·카드 폭을 통일 (체감 지표 그리드 삐져나옴 해결). */
.dbody .section{padding-left:0;padding-right:0}
.dbody .revcard,.dbody .review-current-empty{margin-left:0;margin-right:0}
.review-duplicate-toggle{width:100%;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:9px 12px;border:1px solid var(--border);border-radius:14px;background:var(--surface2);color:var(--muted);text-align:left}
.review-duplicate-toggle>span{min-width:0;display:flex;align-items:baseline;gap:7px}.review-duplicate-toggle b{font-size:12px}.review-duplicate-toggle small{font-family:var(--fn);font-size:9px;color:var(--faint)}
.review-duplicate-toggle>i{position:relative;width:38px;height:22px;flex:0 0 auto;border-radius:999px;background:var(--surface3);transition:background .16s}.review-duplicate-toggle>i>u{position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--muted);text-decoration:none;transition:transform .16s,background .16s}
.review-duplicate-toggle.on{color:var(--text)}.review-duplicate-toggle.on>i{background:var(--sw-lens);box-shadow:var(--sw-lens-sh)}.review-duplicate-toggle.on>i>u{transform:translateX(16px);background:var(--sw-knob);box-shadow:var(--sw-knob-sh)}
.review-duplicate-toggle:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.review-current-empty{margin:8px 18px 0;padding:18px 12px;border:1px dashed var(--border);color:var(--faint);font-size:12px;text-align:center}
.revcard.duplicate-review{border-color:color-mix(in srgb,var(--info) 34%,var(--border))}.revsource{width:100%;display:flex;align-items:center;gap:7px;margin:-3px 0 10px;padding:0 0 8px;border-bottom:1px solid var(--hairline);color:var(--muted);text-align:left}.revsource span{font-size:9px;color:var(--info);font-weight:800}.revsource b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.revsource svg{width:13px;height:13px;margin-left:auto;flex:0 0 auto;stroke:currentColor;fill:none}
.revhead{display:flex;align-items:center;gap:10px}
.revhead .avatar{width:34px;height:34px;border-radius:9px;font-size:14px}
.revcard .ri{flex:1;min-width:0}
.revexport{height:30px;display:inline-flex;align-items:center;gap:4px;padding:0 11px;flex:0 0 auto;border:1px solid var(--glass-line);border-radius:999px;color:var(--text);font-size:11px;font-weight:800;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.revexport svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}
.revexport:active{transform:scale(.95)}
.revcard .rn{font-weight:700;font-size:14px;display:flex;align-items:center;gap:6px}
.revcard .rmeta{font-family:var(--fn);font-size:11px;color:var(--faint);margin-top:2px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.revcard .rmeta b{color:var(--text);font-size:12px}
.revcard .rmeta svg{flex:0 0 auto}
.review-rec-badge{display:inline-flex;align-items:center;min-height:19px;padding:2px 7px;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 38%,transparent);background:color-mix(in srgb,var(--gold) 8%,transparent);clip-path:polygon(4px 0,100% 0,100% calc(100% - 4px),calc(100% - 4px) 100%,0 100%,0 4px);font-family:var(--fb);font-size:9px;font-weight:800;white-space:nowrap}
.revradar{margin-top:4px}
/* ===== 세부 평가 오각형 (인터랙티브 HUD 레이더) ===== */
.radarwrap{display:flex;align-items:center;justify-content:center}
.radarfig{flex:0 0 auto;display:flex;justify-content:center;position:relative}
.radarsvg{overflow:visible;touch-action:manipulation}
.radarsvg .rring{transition:opacity .3s}
.radarsvg .rax{transition:stroke .18s,stroke-width .18s}
/* 채워진 오각형 — 상세 진입 때만 중심에서 팽창. 정렬·좋아요 재렌더에서는 정적으로 유지. */
.radarsvg .rpoly{transform-box:view-box;transform-origin:50% 50%;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--rcol,var(--accent)) 45%,transparent));transition:opacity .2s}
.view-enter .radarsvg .rpoly{animation:rPolyIn .7s cubic-bezier(.2,.9,.3,1) both}
@keyframes rPolyIn{from{transform:scale(.15);opacity:0}to{transform:scale(1);opacity:1}}
/* 꼭짓점 점 — 순차 팝인 (각 점 자기 중심 기준) */
.radarsvg .rdot{transform-box:fill-box;transform-origin:center;transition:r .18s,filter .18s,opacity .18s}
.view-enter .radarsvg .rdot{animation:rDotIn .5s cubic-bezier(.2,1.4,.4,1) both}
@keyframes rDotIn{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
/* 값 버블 — 활성 축만, 스프링 팝 (버블 자기 중심 기준) */
.radarsvg .rval{opacity:0;transition:opacity .16s}
.radarsvg .rval.hot{opacity:1}
.radarsvg .rvalb{transform-box:fill-box;transform:scale(.5);transform-origin:center;transition:transform .24s cubic-bezier(.2,1.7,.4,1)}
.radarsvg .rval.hot .rvalb{transform:scale(1)}
/* 강조 시 꼭짓점에서 퍼지는 펄스 링 */
.radarsvg .rpulse{opacity:0}
.radarsvg .rpulse.hot{animation:rPulse .7s ease-out}
@keyframes rPulse{0%{opacity:.55;r:3}100%{opacity:0;r:18}}
/* 강조 상태 — 선택/호버한 축만 부각, 나머지 흐리게 */
.radarsvg .rdot.hot{r:5;filter:drop-shadow(0 0 6px currentColor)}
.radarsvg .rax.hot{stroke:var(--axcol,var(--accent));stroke-width:1.8;filter:drop-shadow(0 0 4px var(--axcol,var(--accent)))}
.radarsvg .rlab{transition:fill .18s,font-weight .18s}
.radarsvg .rlab.hot{fill:var(--text);font-weight:800}
.radarwrap.has-hot .rdot:not(.hot),.radarwrap.has-hot .rlab:not(.hot){opacity:.4}
.radarwrap.has-hot .rpoly{opacity:.55}
.radarsvg .rhit{cursor:pointer;pointer-events:all}
@media (prefers-reduced-motion:reduce){
  .view-enter .radarsvg .rpoly{animation:rPolyIn .01s both}
  .view-enter .radarsvg .rdot{animation:none}
  .radarsvg .rpulse.hot{animation:none}
}
.revtext{font-size:13.5px;line-height:1.55;color:var(--muted);margin-top:8px;white-space:pre-wrap;word-break:break-word}
.revtext.rich{white-space:normal}
.revtext.rich b{font-weight:850;color:var(--text)}
.revtext.rich i{font-style:italic}
/* 리뷰 스포일러 가림 — 인라인 멀티라인이라 사각 배경 + clone 만 어색하지 않다. blur 로 길이감만 남긴다. */
.rev-spoiler{display:inline;position:relative;padding:1px 5px;margin:0 1px;border:0;border-radius:0;cursor:pointer;
  font:inherit;line-height:inherit;color:inherit;text-align:inherit;vertical-align:baseline;
  background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--p5) 11%,var(--surface2)) 0 6px,color-mix(in srgb,var(--p5) 4%,var(--surface2)) 6px 12px);
  -webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background .16s}
.rev-spoiler::before{content:"";display:inline-block;width:11px;height:11px;margin-right:4px;vertical-align:-1px;
  background:color-mix(in srgb,var(--p5) 72%,var(--text));opacity:.75;
  -webkit-mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l18 18"/><path d="M10.6 5.2A10 10 0 0 1 12 5c7 0 10 7 10 7a17.6 17.6 0 0 1-3.2 4.3M6.1 6.1A17 17 0 0 0 2 12s3 7 10 7c2.3 0 4.2-.8 5.9-1.9"/><path d="M9.9 9.9a3 3 0 0 0 4.2 4.2"/></svg>') center/contain no-repeat;
          mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l18 18"/><path d="M10.6 5.2A10 10 0 0 1 12 5c7 0 10 7 10 7a17.6 17.6 0 0 1-3.2 4.3M6.1 6.1A17 17 0 0 0 2 12s3 7 10 7c2.3 0 4.2-.8 5.9-1.9"/><path d="M9.9 9.9a3 3 0 0 0 4.2 4.2"/></svg>') center/contain no-repeat}
.rev-spoiler .rsp-tx{filter:blur(5px);opacity:.55;user-select:none;-webkit-user-select:none;pointer-events:none}
.rev-spoiler:focus-visible{outline:2px solid color-mix(in srgb,var(--p5) 62%,transparent);outline-offset:1px}
/* 해제 상태 — 마킹만 남기고 원문 표시. 다시 탭하면 재가림. */
.rev-spoiler.open{background:color-mix(in srgb,var(--p5) 7%,transparent)}
.rev-spoiler.open::before{opacity:.4}
.rev-spoiler.open .rsp-tx{filter:none;opacity:1;user-select:text;-webkit-user-select:text}
.mine-tag{font-size:11px;color:var(--p5);background:color-mix(in srgb,var(--p5) 12%,transparent);border-radius:6px;padding:1px 6px;font-weight:800;line-height:1.35}
.revcard.mine{border-color:color-mix(in srgb,var(--p5) 30%,var(--border))}
.admin-review{border-left:3px solid var(--gold);background:rgba(255,207,92,.05)}
/* 운영자 딱지 — 리뷰 리스트에서 아바타·이름 옆에 붙는 작은 인라인 태그(별도 섹션 폐지) */
.opbadge{font-size:9px;font-family:var(--fe);font-weight:800;letter-spacing:.06em;color:#08090B;background:var(--gold);border-radius:4px;padding:1px 6px;flex:0 0 auto}
.empty-inline{font-size:13px;color:var(--faint);text-align:center;line-height:1.6}

/* ============================================================== 기록 행 (포스터·수정/리뷰/삭제) */
.recrow .recth{width:44px;height:58px;flex:0 0 auto}
.recrow .info{min-width:0}
.recrow .rgrade{display:flex;align-items:center;gap:5px;margin-top:5px;flex-wrap:wrap;row-gap:4px}
.recrow .rgrade .rv{font-weight:700;font-size:12px;color:var(--muted)}
.recrow .rgrade svg{flex:0 0 auto}
.recrow .rr{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.recrow .recact{width:32px;height:32px}
.recrow .recact svg{width:16px;height:16px}
.recrow .recact.del-btn:hover{color:var(--danger);border-color:rgba(255,107,94,.35)}
.recrow .recact[data-act^="revrec"]:hover{color:var(--gold);border-color:rgba(255,207,92,.4)}
/* 친구 기록 '같이 한 테마' 버튼 — 표시되면 신호색으로 켜짐 */
.recrow .frtog[aria-pressed="false"]:hover{color:var(--accent);border-color:var(--accentDim)}
.recrow .frtog.on{color:var(--accent);border-color:var(--accentDim);background:rgba(63,224,208,.10)}

/* ============================================================== 기록 시트 — 테마 카탈로그 검색 */
.theme-drop{margin:8px 0 2px;border:1px solid var(--accentDim);border-radius:11px;background:var(--surface);overflow:hidden auto;max-height:340px;-webkit-overflow-scrolling:touch;box-shadow:0 10px 28px rgba(0,0,0,.4)}
.theme-drop[hidden]{display:none}
.tdi{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 12px;border-top:1px solid var(--hairline);transition:.12s;background:none}
.tdi:first-child{border-top:none}
.tdi:hover,.tdi:active{background:var(--surface2)}
.tdth{width:30px;height:40px;border-radius:5px;background-size:cover;background-position:center;border:1px solid var(--border);flex:0 0 auto;display:flex;align-items:center;justify-content:center;overflow:hidden}
.tdth .ph{font-weight:900;font-size:13px;color:rgba(231,236,242,.5)}
.tdm{flex:1;min-width:0}
.tdm .t{display:block;font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdm .s{display:block;font-size:11px;color:var(--faint);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.matchline{min-height:16px;margin:7px 2px 0;font-size:11.5px;line-height:1.45;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
/* 기록 폼: 연결 상태와 동작을 한 줄에, 좁은 화면에서는 자연스럽게 줄바꿈 */
.qa-catalog{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-top:7px}
.qa-catalog .matchline{flex:1 1 160px;min-width:0;margin:0;overflow-wrap:anywhere;color:var(--muted)}
.qa-catalog .matchline.ok{color:var(--success)}
.qa-catalog .matchline.warn{color:var(--warning)}
.qa-catalog .qa-catalog-action{flex:0 0 auto;min-height:36px;color:var(--text);border-color:var(--border);white-space:nowrap}
.qa-catalog-action[hidden]{display:none!important}
.matchline svg{flex:0 0 auto}
.matchline b{font-weight:700}
.matchline.ok{color:var(--success)}
.matchline.warn{color:var(--warning)}
.matchline.new{color:var(--faint)}

/* 탈출 남은 시간 3칸 (남음/플레이/총) — 하나 입력 시 자동 계산 */
.timetrio{display:flex;gap:8px}
.tt-col{flex:1;min-width:0}
.tt-l{display:block;font-family:var(--fe);text-transform:uppercase;letter-spacing:.08em;font-size:9px;color:var(--faint);font-weight:700;margin:0 0 5px 2px}
.tt-in{height:42px;padding:0 10px;font-family:var(--fn);font-size:14px;text-align:center}

/* 기록 편집 — 미평가/미정 상태 표시 */
.field label .opt,.toggle .lbl .opt{font-size:11.5px;font-weight:600;color:var(--faint);margin-left:5px;letter-spacing:0}
.toggle.unset .sw{opacity:.4}
.toggle.unset .sw i{background:var(--faint)}

/* ============================================================== SF-GAME POLISH
   HUD 브래킷·시스템 보이스·게임필 마이크로 인터랙션 (전부 기존 토큰, transform/opacity 위주) */

/* 시스템 로그 라인 — 빈/에러 상태의 SYSTEM 보이스 */
.syscode{font-family:var(--fn);font-size:10px;letter-spacing:.22em;color:var(--accentDim);text-transform:uppercase;margin-bottom:10px}

/* 결과 카운트라인 — 조용한 캡션 + 골드 수치 */
.countline{font-family:var(--fb);letter-spacing:.02em;font-size:11px}
.countline b{color:var(--gold);font-weight:700;font-family:var(--fn);letter-spacing:.02em}

/* HUD 코너 브래킷 — 패널/스탯/리뷰/인증 카드가 타게팅 프레임처럼 읽힘
   (clip-path 가 모서리를 깎으므로 0 오프셋 — 음수 금지) */




/* 상세 히어로 — 레티클 코너 */
.dhero{overflow:hidden}
.dhero::before{content:"";position:absolute;top:12px;left:12px;width:20px;height:20px;border-top:1.5px solid rgba(63,224,208,.55);border-left:1.5px solid rgba(63,224,208,.55);z-index:4;pointer-events:none}
.dhero::after{content:"";position:absolute;bottom:12px;right:12px;width:20px;height:20px;border-bottom:1.5px solid rgba(63,224,208,.55);border-right:1.5px solid rgba(63,224,208,.55);z-index:4;pointer-events:none}

/* 상세 히어로 버튼 — 포스터 위에 뜬 유리 동그라미(1차 확장안). 피드백은 같은 재질의 캡슐 */
.iconbtn.hero{border-radius:50%;background:linear-gradient(180deg,rgba(30,36,44,.38),rgba(8,9,11,.5));border-color:rgba(255,255,255,.16);color:var(--paper);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 6px 16px -8px rgba(0,0,0,.55);backdrop-filter:blur(14px) saturate(150%);-webkit-backdrop-filter:blur(14px) saturate(150%);transition:transform .18s var(--ease-press),background .16s}
.iconbtn.hero svg{width:18px;height:18px}
.iconbtn.hero:active{transform:scale(.93)}
.iconbtn.hero:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* 기록/아카이브/친구/친구기록/채팅 리스트 — 탐색과 같은 스태거 진입 (뷰 진입 시에만 · 삭제/갱신 재렌더에는 재생 안 함).
   기본 딜레이(.58s)는 열거 스태거의 다음 순번 — 15번째 이후가 딜레이 0으로 먼저 튀지 않게 (데스크탑 그리드 대응 14개 열거) */
.view-enter #recBody .recrow,.view-enter #recBody .rec-arch .acell,.view-enter #friendsBody .urow,.view-enter #frBody .recrow,.view-enter #chatsBody .urow{animation:rowInX .34s cubic-bezier(.2,.9,.3,1) .58s both}
#recBody .rec-arch .acell:nth-child(1){animation-delay:.02s}#recBody .rec-arch .acell:nth-child(2){animation-delay:.06s}
#recBody .rec-arch .acell:nth-child(3){animation-delay:.10s}#recBody .rec-arch .acell:nth-child(4){animation-delay:.14s}
#recBody .rec-arch .acell:nth-child(5){animation-delay:.18s}#recBody .rec-arch .acell:nth-child(6){animation-delay:.22s}
#recBody .rec-arch .acell:nth-child(7){animation-delay:.26s}#recBody .rec-arch .acell:nth-child(8){animation-delay:.30s}
#recBody .rec-arch .acell:nth-child(9){animation-delay:.34s}#recBody .rec-arch .acell:nth-child(10){animation-delay:.38s}
#recBody .rec-arch .acell:nth-child(11){animation-delay:.42s}#recBody .rec-arch .acell:nth-child(12){animation-delay:.46s}
#recBody .rec-arch .acell:nth-child(13){animation-delay:.50s}#recBody .rec-arch .acell:nth-child(14){animation-delay:.54s}
#recBody .recrow:nth-child(1),#friendsBody .urow:nth-child(1),#frBody .recrow:nth-child(1),#chatsBody .urow:nth-child(1){animation-delay:.02s}
#recBody .recrow:nth-child(2),#friendsBody .urow:nth-child(2),#frBody .recrow:nth-child(2),#chatsBody .urow:nth-child(2){animation-delay:.06s}
#recBody .recrow:nth-child(3),#friendsBody .urow:nth-child(3),#frBody .recrow:nth-child(3),#chatsBody .urow:nth-child(3){animation-delay:.10s}
#recBody .recrow:nth-child(4),#friendsBody .urow:nth-child(4),#frBody .recrow:nth-child(4),#chatsBody .urow:nth-child(4){animation-delay:.14s}
#recBody .recrow:nth-child(5),#friendsBody .urow:nth-child(5),#frBody .recrow:nth-child(5),#chatsBody .urow:nth-child(5){animation-delay:.18s}
#recBody .recrow:nth-child(6),#friendsBody .urow:nth-child(6),#frBody .recrow:nth-child(6),#chatsBody .urow:nth-child(6){animation-delay:.22s}
#recBody .recrow:nth-child(7),#friendsBody .urow:nth-child(7),#frBody .recrow:nth-child(7),#chatsBody .urow:nth-child(7){animation-delay:.26s}
#recBody .recrow:nth-child(8),#friendsBody .urow:nth-child(8),#frBody .recrow:nth-child(8),#chatsBody .urow:nth-child(8){animation-delay:.30s}
#recBody .recrow:nth-child(9),#friendsBody .urow:nth-child(9),#frBody .recrow:nth-child(9),#chatsBody .urow:nth-child(9){animation-delay:.34s}
#recBody .recrow:nth-child(10),#friendsBody .urow:nth-child(10),#frBody .recrow:nth-child(10),#chatsBody .urow:nth-child(10){animation-delay:.38s}
#recBody .recrow:nth-child(11),#friendsBody .urow:nth-child(11),#frBody .recrow:nth-child(11),#chatsBody .urow:nth-child(11){animation-delay:.42s}
#recBody .recrow:nth-child(12),#friendsBody .urow:nth-child(12),#frBody .recrow:nth-child(12),#chatsBody .urow:nth-child(12){animation-delay:.46s}
#recBody .recrow:nth-child(13),#friendsBody .urow:nth-child(13),#frBody .recrow:nth-child(13),#chatsBody .urow:nth-child(13){animation-delay:.50s}
#recBody .recrow:nth-child(14),#friendsBody .urow:nth-child(14),#frBody .recrow:nth-child(14),#chatsBody .urow:nth-child(14){animation-delay:.54s}
.view-enter #recBody .rec-all .mcard,.view-enter #frBody .rec-all .mcard{animation:rowInX .34s cubic-bezier(.2,.9,.3,1) both;animation-delay:calc(.02s + var(--k,14) * .04s)} /* 전체 보기 카드 — 앞 14장은 --k 순번(app.js recordRow), 나머지는 .58s */
/* 태블릿 폰프레임 — 긴 아카이브 전체와 외곽 뷰를 동시에 합성하지 않고 첫 두 화면 분량만 승격한다. */
@media(min-width:480px) and (max-width:999px){
  .view-enter.view-records:has(#recBody .rec-arch){animation:none}
  .view-enter #recBody .rec-arch .acell{animation:none}
  .view-enter #recBody .rec-arch .acell:nth-child(-n+8){animation:rowInX .34s cubic-bezier(.2,.9,.3,1) both;will-change:transform,opacity;backface-visibility:hidden}
}
@media(prefers-reduced-motion:reduce){#recBody .recrow,.view-enter #recBody .rec-all .mcard,.view-enter #frBody .rec-all .mcard,#recBody .rec-arch .acell,#friendsBody .urow,#frBody .recrow,#chatsBody .urow{animation:none}.view-enter #recBody .rec-arch .acell:nth-child(-n+8){animation:none;will-change:auto}}

/* 탭바 — nav-first DOM에서도 인디케이터 와이프 + 아이콘 부트는 실제 뷰 전환에만 재생 */
.frame:has(>.view-enter)>.tabbar .tab.on::before{animation:tabBar .22s ease-out}
@keyframes tabBar{from{transform:translateX(-50%) scale(.6);opacity:0}}
.frame:has(>.view-enter)>.tabbar .tab.on svg,.frame:has(>.view-enter)>.tabbar .tab.on .lb{animation:tabPop .22s cubic-bezier(.2,.9,.3,1)}
@keyframes tabPop{from{opacity:.35;transform:translateY(3px)}}
.tab .fab{transition:transform .16s,box-shadow .16s}
.tab:active .fab{transform:scale(.92)}

/* 상세 CTA — 호버/프레스 반응 */
.ctarow .c{position:relative}
.ctarow .c:not(.primary):hover{border-color:var(--glass-line-hi);color:var(--text)}
.ctarow .c.primary:not(.locked):hover{box-shadow:var(--lens-sh),0 6px 18px -6px color-mix(in srgb,var(--p5) 55%,transparent)}
.ctarow .c:active{transform:translateY(1px)}

/* 찜 하트 버스트 — 담을 때만 (해제는 무반응) */
.ctarow .c.pop svg{animation:heartPop .34s cubic-bezier(.34,1.56,.64,1)}
@keyframes heartPop{0%{transform:scale(.5)}55%{transform:scale(1.25)}100%{transform:scale(1)}}
.ctarow .c.pop::after{content:"";position:absolute;inset:0;border:1.5px solid var(--gold);border-radius:12px;animation:ringOut .4s ease-out forwards;pointer-events:none}
@keyframes ringOut{to{transform:scale(1.25);opacity:0}}

/* 상세 평점 분포 바 — 부팅 성장 */
.view-enter .ratingrow .dist .bar i{transform-origin:left;animation:barGrow .5s .15s cubic-bezier(.2,.9,.3,1) both}
@keyframes barGrow{from{transform:scaleX(0)}}
.view-enter .ratingrow>div:first-child svg{animation:glyphIn .45s cubic-bezier(.34,1.56,.64,1) .1s both}
@keyframes glyphIn{from{opacity:0;transform:scale(.4) rotate(-14deg)}}

/* 평점 글리프 틱 + 게이지 드래그 헤일로 */
#qaGlyph.tick,#revGlyph.tick{display:inline-block;animation:glyphTick .18s ease-out}
@keyframes glyphTick{50%{transform:scale(1.3)}}
.rategauge:active .rg-thumb{box-shadow:0 2px 8px rgba(0,0,0,.45),0 0 0 7px rgba(228,3,43,.16)}

/* 당겨서 새로고침 칩 — 키홀 HUD 칩이 당김 정도에 따라 내려오며 회전, 임계 도달 시 골드 점등 */
.ptrchip{position:absolute;left:50%;top:60px;z-index:6;width:46px;height:46px;border-radius:50%;
  background:var(--surface2);border:1px solid var(--accentDim);display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 24px rgba(0,0,0,.5),0 0 14px rgba(63,224,208,.12);pointer-events:none;
  transform:translate(-50%,calc(var(--p,0)*46px - 40px)) rotate(calc(var(--p,0)*180deg));
  opacity:min(calc(var(--p,0)*1.6),1)}
.ptrchip svg{width:22px;height:22px;stroke:var(--accent)}
.ptrchip.ready{border-color:rgba(255,207,92,.55);box-shadow:0 8px 24px rgba(0,0,0,.5),0 0 16px rgba(255,207,92,.25)}
.ptrchip.ready svg{stroke:var(--gold)}
.ptrchip.spin svg{animation:khpulse 1s ease-in-out infinite}
.ptrchip.out{opacity:0!important;transform:translate(-50%,-40px);transition:.22s}
/* 탭 데이터 갱신 — 당겨서 새로고침과 같은 키홀을 재사용하되, 빠른 요청은 JS 지연으로 표시하지 않는다. */
.ptrchip.tabload{--p:1;top:8px;width:38px;height:38px;transform:translate(-50%,0);opacity:1;animation:tabloadIn .16s ease-out both}
.ptrchip.tabload svg{width:18px;height:24px;stroke:var(--accent)!important;stroke-width:8}
@keyframes tabloadIn{from{opacity:0;transform:translate(-50%,-3px) scale(.88)}}

/* 탈출 남은 시간 배지 — P5 슬랜트: 성공 그린 'LEFT' 태그 + 모노 시간, 줄바꿈 없음 */
.leftbadge{display:inline-flex;align-items:stretch;white-space:nowrap;flex:0 0 auto;transform:skewX(-10deg);border:1px solid rgba(76,190,126,.5);border-radius:4px;overflow:hidden;margin-left:2px;box-shadow:0 2px 8px rgba(76,190,126,.16)}
.leftbadge i{font-style:normal;font-family:var(--fe);font-weight:700;font-size:8px;letter-spacing:.14em;line-height:1;display:flex;align-items:center;padding:2px 5px;background:var(--success);color:#04160C}
.leftbadge b{font-family:var(--fn);font-weight:700;font-size:11px;line-height:1;display:flex;align-items:center;padding:2px 6px;color:var(--success);background:rgba(76,190,126,.08)}
/* 공개 0회는 기존 NO HINT 단일 태그, 1회 이상은 LEFT 와 같은 투톤 HINT 개수 */
.leftbadge.nohint{border-color:rgba(255,207,92,.55);box-shadow:0 2px 8px rgba(255,207,92,.18)}
.leftbadge.nohint i{background:var(--gold);color:#241A04;padding:3px 6px}
.leftbadge.hintcount{border-color:rgba(255,207,92,.55);box-shadow:0 2px 8px rgba(255,207,92,.18)}
.leftbadge.hintcount i{background:var(--gold);color:#241A04}
.leftbadge.hintcount b{color:var(--gold);background:rgba(255,207,92,.09)}
.hint-badge-preview{display:inline-flex;margin-left:10px}.hint-badge-preview[hidden]{display:none}
.hint-privacy{width:100%;margin-top:10px;padding:10px 0 0;background:transparent;color:var(--text);text-align:left}

/* 상세 CTA 한 줄 유지 — 긴 라벨(운영자 리뷰)은 자동 축소 */
.ctarow .c{white-space:nowrap;min-width:0}
.ctarow .c.long{font-size:clamp(10px,3.1vw,12px);gap:4px}
.ctarow .c.long svg{width:14px;height:14px;flex:0 0 auto}
/* 플립처럼 폭이 좁으면 글자와 여백을 함께 줄이고 긴 잠금 안내에 폭을 더 배분한다. */
@media(max-width:389px){
  .btn.sm{padding-left:10px;padding-right:10px}
  .btn:not(.hidechoice),.rtab,.ctarow .c{gap:4px}
  .vt-seg button{padding:0 9px}.vt-chip{padding:0 9px}.vt-ic{width:36px}
  .qa-form-actions .btn{padding-left:6px;padding-right:6px}
  .ctarow .c.primary.locked{flex:1.5}
}

/* 날짜 미상 기록 배지 */
.recrow .d .unk{font-family:var(--fe);font-size:8px;letter-spacing:.08em;color:var(--faint);border:1px solid var(--border);border-radius:4px;padding:2px 4px;text-transform:uppercase}

/* 기존 알림 스탬프 — 기록·리뷰 외의 짧은 완료 메시지 */
.stampfx:not(.ticket){position:fixed;left:50%;top:38%;z-index:130;pointer-events:none;transform:translate(-50%,-50%) skewX(-9deg);background:var(--p5);color:var(--paper);padding:13px 30px;clip-path:polygon(6% 0,100% 0,94% 100%,0 100%);text-align:center;box-shadow:0 14px 44px rgba(228,3,43,.45);animation:stampIn .38s cubic-bezier(.2,.9,.3,1) both}
.stampfx:not(.ticket) .sf-en{font-family:var(--fe);font-weight:700;font-size:16px;letter-spacing:.24em;text-transform:uppercase;white-space:nowrap}
.stampfx:not(.ticket) .sf-ko{font-size:11px;font-weight:700;opacity:.88;margin-top:3px;letter-spacing:.04em}
.stampfx:not(.ticket).out{animation:stampOut .24s ease both}
@keyframes stampIn{from{opacity:0;transform:translate(-50%,-50%) skewX(-9deg) scale(1.7)}60%{opacity:1;transform:translate(-50%,-50%) skewX(-9deg) scale(.94)}to{opacity:1;transform:translate(-50%,-50%) skewX(-9deg) scale(1)}}
@keyframes stampOut{to{opacity:0;transform:translate(-50%,-50%) skewX(-9deg) scale(1.08)}}

/* CRIMSON STUB — 기록·리뷰 완료용 투톤 티켓. 왼쪽 순번표와 오른쪽 결과표가 차례로 조립된다. */
.stampfx.ticket{--sf-stub:clamp(88px,27vw,148px);--sf-stub-a:#F62449;--sf-stub-b:#B90025;--sf-main-a:#171C22;--sf-main-b:#080B0F;--sf-ink:#F5F1E8;--sf-teal:#67E7D7;--sf-gold:#FFD36A;--sf-edge:rgba(103,231,215,.45);--sf-dim:rgba(0,0,0,.32);--sf-shadow:rgba(0,0,0,.64);position:fixed;inset:0;z-index:159;display:grid;place-items:center;padding:0 10px 15vh;pointer-events:none;background:var(--sf-dim);animation:sfVeilIn .2s ease-out both}
.stampfx.ticket .sf-ticket{position:relative;isolation:isolate;display:grid;grid-template-columns:var(--sf-stub) minmax(0,1fr);width:min(620px,calc(100vw - 20px));height:clamp(116px,31vw,148px);filter:drop-shadow(0 19px 30px var(--sf-shadow)) drop-shadow(0 0 16px rgba(103,231,215,.12));clip-path:polygon(14px 0,calc(var(--sf-stub) - 10px) 0,var(--sf-stub) 10px,calc(var(--sf-stub) + 10px) 0,calc(100% - 17px) 0,100% 17px,100% calc(100% - 17px),calc(100% - 17px) 100%,calc(var(--sf-stub) + 10px) 100%,var(--sf-stub) calc(100% - 10px),calc(var(--sf-stub) - 10px) 100%,14px 100%,0 calc(100% - 14px),0 14px);animation:sfTicketIn .62s cubic-bezier(.16,1,.3,1) both}
.stampfx.ticket .sf-stub{position:relative;z-index:2;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#FFF8EC;background:linear-gradient(145deg,var(--sf-stub-a),var(--sf-stub-b) 72%);text-shadow:0 2px 8px rgba(67,0,12,.3);animation:sfStubIn .44s .04s cubic-bezier(.16,1,.3,1) both}
.stampfx.ticket .sf-stub::before{content:"";position:absolute;left:-24%;right:-22%;bottom:-34%;height:70%;background:repeating-linear-gradient(108deg,rgba(255,255,255,.15) 0 2px,transparent 2px 9px);transform:rotate(-5deg);opacity:.7}
.stampfx.ticket .sf-stub::after{content:"";position:absolute;z-index:3;right:0;top:17px;bottom:17px;width:2px;background:repeating-linear-gradient(to bottom,rgba(255,248,236,.82) 0 5px,transparent 5px 10px);transform-origin:top;animation:sfSeamIn .3s .38s ease-out both}
.stampfx.ticket .sf-no,.stampfx.ticket .sf-label{position:relative;z-index:1;font-family:var(--fe);font-weight:800;line-height:1;letter-spacing:.18em;text-transform:uppercase}
.stampfx.ticket .sf-no{font-size:9px;opacity:.72;margin:0 0 3px 3px}
.stampfx.ticket .sf-label{font-family:inherit;font-size:10px;letter-spacing:.08em;margin-top:3px;opacity:.92}
.stampfx.ticket .sf-num{position:relative;z-index:1;font-family:var(--fn);font-size:clamp(30px,9.5vw,53px);font-weight:900;font-style:italic;line-height:.9;letter-spacing:-.045em;animation:sfNumberIn .45s .23s cubic-bezier(.15,1.3,.25,1) both}
.stampfx.ticket .sf-num.wide{font-size:clamp(26px,8.4vw,46px)}
.stampfx.ticket .sf-num.word{font-family:inherit;font-style:normal;font-size:clamp(24px,7.4vw,38px);letter-spacing:-.06em}
.stampfx.ticket .sf-main{position:relative;z-index:1;overflow:hidden;display:flex;align-items:center;padding:17px clamp(17px,5.3vw,38px) 16px;background:linear-gradient(118deg,var(--sf-main-a),var(--sf-main-b) 76%);color:var(--sf-ink);box-shadow:inset 0 1px var(--sf-edge),inset -1px 0 var(--sf-edge),inset 0 -1px var(--sf-edge);clip-path:inset(0 0 0 0);animation:sfMainIn .46s .13s cubic-bezier(.2,.85,.25,1) both}
.stampfx.ticket .sf-main::before{content:"";position:absolute;inset:-70% -12% -70% 48%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.075),transparent);transform:rotate(14deg);animation:sfSheen .72s .34s ease-out both}
.stampfx.ticket .sf-main::after{content:"";position:absolute;left:0;top:0;bottom:0;width:10px;background:linear-gradient(90deg,rgba(0,0,0,.24),transparent)}
.stampfx.ticket .sf-corner{position:absolute;right:10px;top:10px;width:22px;height:16px;border-top:2px solid var(--sf-teal);border-right:2px solid var(--sf-teal);opacity:.88;transform-origin:top right;animation:sfCornerIn .32s .58s ease-out both}
.stampfx.ticket .sf-copy{position:relative;z-index:2;min-width:0;animation:sfCopyIn .38s .43s cubic-bezier(.2,.9,.3,1) both}
.stampfx.ticket .sf-en{font-family:var(--fe);font-weight:800;font-size:clamp(8px,2.35vw,11px);line-height:1;letter-spacing:.23em;text-transform:uppercase;white-space:nowrap;color:var(--sf-teal)}
.stampfx.ticket .sf-ko{font-size:clamp(15px,4.2vw,25px);font-weight:900;line-height:1.25;letter-spacing:-.035em;white-space:nowrap;color:var(--sf-ink);margin-top:8px}
.stampfx.ticket .sf-line{display:block;width:min(118px,48%);height:3px;margin-top:12px;background:linear-gradient(90deg,var(--sf-gold),rgba(255,211,106,.12));transform-origin:left;animation:sfLineIn .38s .67s cubic-bezier(.2,.9,.3,1) both}
.stampfx.ticket.out{animation:sfVeilOut .38s ease both}
.stampfx.ticket.out .sf-ticket{animation:sfTicketOut .38s cubic-bezier(.4,0,1,1) both}
@keyframes sfVeilIn{from{background:transparent}to{background:var(--sf-dim)}}
@keyframes sfVeilOut{to{background:transparent}}
@keyframes sfTicketIn{0%{opacity:0;transform:translate3d(-46px,7px,0) rotate(-2.4deg) scale(.96)}58%{opacity:1;transform:translate3d(5px,-2px,0) rotate(.45deg) scale(1.012)}100%{opacity:1;transform:none}}
@keyframes sfStubIn{from{opacity:0;transform:translateX(-34px) skewX(-4deg)}to{opacity:1;transform:none}}
@keyframes sfMainIn{from{clip-path:inset(0 100% 0 0);transform:translateX(-8px)}to{clip-path:inset(0 0 0 0);transform:none}}
@keyframes sfSeamIn{from{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}
@keyframes sfNumberIn{from{opacity:0;transform:translateY(13px) scale(.72) rotate(-5deg)}to{opacity:1;transform:none}}
@keyframes sfCopyIn{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
@keyframes sfLineIn{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}
@keyframes sfCornerIn{from{transform:scale(.25);opacity:0}to{transform:scale(1);opacity:.88}}
@keyframes sfSheen{from{transform:translateX(-150%) rotate(14deg);opacity:0}40%{opacity:1}to{transform:translateX(120%) rotate(14deg);opacity:0}}
@keyframes sfTicketOut{to{opacity:0;transform:translate3d(35px,-5px,0) rotate(1.2deg) scale(.985);filter:drop-shadow(0 8px 12px transparent)}}
@media(max-width:479px){
  .stampfx.ticket{--sf-stub:clamp(82px,24vw,96px);padding-left:24px;padding-right:24px}
  .stampfx.ticket .sf-ticket{width:min(360px,calc(100vw - 48px));height:clamp(104px,27vw,112px)}
  .stampfx.ticket .sf-main{padding:14px clamp(13px,4.2vw,18px) 13px}
  .stampfx.ticket .sf-no{font-size:8px}.stampfx.ticket .sf-label{font-size:9px}
  .stampfx.ticket .sf-num{font-size:clamp(29px,9vw,38px)}.stampfx.ticket .sf-num.wide{font-size:clamp(25px,7.8vw,34px)}
  .stampfx.ticket .sf-num.word{font-size:clamp(23px,7vw,31px)}
  .stampfx.ticket .sf-ko{font-size:clamp(14px,4vw,17px);margin-top:7px}.stampfx.ticket .sf-line{height:2px;margin-top:9px}
}

/* ===== 로그아웃·총 지출 확인 — P5 앵귤러 컷 다이얼로그 (fb:93851b8a, app.js confirmLogout/spendDialog) =====
   다크는 잉크+크림슨, 라이트는 페이퍼+크림슨 팔레트. clip-path 는 같은 요소의 그림자를
   함께 잘라내므로 래퍼(.p5c 그림자·등장 연출) / 이너(.p5c-in 클립·패널) 2겹, 버튼은 클립 없이 스큐만. */
.sheet-bg.p5c-bg{align-items:center;justify-content:center;padding:28px}
.p5c{width:min(352px,100%);filter:drop-shadow(0 22px 55px rgba(0,0,0,.6)) drop-shadow(0 0 20px rgba(228,3,43,.16))}
.sheet-bg.show .p5c{animation:p5cIn .36s cubic-bezier(.18,.95,.3,1) both}
@keyframes p5cIn{from{opacity:0;transform:scale(1.09) skewX(-8deg) rotate(-1.8deg)}62%{opacity:1;transform:scale(.984) skewX(1.5deg) rotate(.3deg)}to{opacity:1;transform:none}}
.p5c-in{position:relative;overflow:hidden;padding:22px 22px 20px;background:linear-gradient(152deg,#160A10,#08060A 52%,#0C0710);border:1px solid rgba(228,3,43,.42);clip-path:polygon(16px 0,100% 0,100% calc(100% - 22px),calc(100% - 22px) 100%,0 100%,0 16px)}
/* 컷 코너 크림슨 에지 — 잘린 대각선과 평행한 3px 스트라이프 */
.p5c-in::before{content:"";position:absolute;top:0;left:0;width:40px;height:40px;background:linear-gradient(135deg,transparent 11px,var(--p5) 11px,var(--p5) 14px,transparent 14.5px);pointer-events:none}
.p5c-in::after{content:"";position:absolute;bottom:0;right:0;width:48px;height:48px;background:linear-gradient(315deg,transparent 15px,var(--p5) 15px,var(--p5) 18.5px,transparent 19px);pointer-events:none}
/* 우상단 대각 슬래시 오너먼트 + 주기적 스캔 스윕 */
.p5c-slash{position:absolute;top:-24px;right:-30px;width:170px;height:150px;background:linear-gradient(114deg,transparent 55%,rgba(228,3,43,.13) 55%,rgba(228,3,43,.13) 63%,transparent 63%),linear-gradient(114deg,transparent 70%,rgba(228,3,43,.06) 70%,rgba(228,3,43,.06) 75%,transparent 75%);pointer-events:none}
.p5c-scan{position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,rgba(228,3,43,.65) 30%,rgba(228,3,43,.65) 70%,transparent);animation:p5cScan 1.5s ease-in-out .25s 1 both;pointer-events:none}
@keyframes p5cScan{0%{top:-3px;opacity:0}12%{opacity:.5}85%{opacity:.5}100%{top:100%;opacity:0}}
.p5c-kick{display:flex;align-items:center;gap:8px;font-family:var(--fe);font-size:10px;font-weight:800;letter-spacing:.26em;text-transform:uppercase;color:var(--p5);text-shadow:0 0 12px rgba(228,3,43,.5)}
.p5c-kick::before{content:"";width:7px;height:7px;flex:0 0 auto;background:var(--p5);transform:skewX(-12deg) rotate(45deg) scale(.85);box-shadow:0 0 9px rgba(228,3,43,.65)}
.p5c-kick::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(228,3,43,.55),transparent 82%)}
.p5c-ttl{margin:13px 0 0;font-size:clamp(19px,5.2vw,23px);font-weight:900;color:var(--paper);letter-spacing:-.01em;transform:skewX(-5deg);transform-origin:0 100%;text-shadow:2px 2px 0 rgba(228,3,43,.35)}
.p5c-msg{margin:11px 0 20px;font-size:13.5px;line-height:1.65;color:rgba(243,239,230,.6)}
.p5c-msg b{color:#FFCF5C;font-weight:700}
.p5c-acts{display:flex;gap:12px}
.p5c-btn{flex:1;height:46px;display:flex;align-items:center;justify-content:center;transform:skewX(-8deg);font-size:14.5px;font-weight:900;transition:.16s}
.p5c-btn>span{display:flex;align-items:center;gap:7px;transform:skewX(8deg)}
.p5c-btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.2}
.p5c-btn.stay{color:rgba(243,239,230,.72);background:rgba(243,239,230,.05);border:1px solid rgba(243,239,230,.2)}
.p5c-btn.stay:hover{color:var(--paper);border-color:rgba(243,239,230,.5);background:rgba(243,239,230,.09)}
.p5c-btn.go{color:var(--paper);background:linear-gradient(160deg,#FF2047,var(--p5) 46%,var(--p5deep));box-shadow:0 7px 20px rgba(228,3,43,.32);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.p5c-btn.go:hover{box-shadow:0 9px 26px rgba(228,3,43,.5);filter:brightness(1.07)}
.p5c-btn:active{transform:skewX(-8deg) translateY(1px)}

/* 모노 미감: 그래프패퍼 배경이 화면 그리드 셀 크기와 어긋나 선이 겹쳐 보임 → 화면 그리드에선 배경 패턴 제거 (PNG 내보내기 .cal-export 는 유지) */
.cal-stage.mobile.theme-mono.layout-grid:not(.cal-export){background:var(--cbg)}

/* ===== 관리자 · 테마 DB 편집 시트 ===== */
.dtop .dtools{display:flex;gap:8px}
.sh-head .ttl .masterb{vertical-align:2px}
/* 마스터 전용 테마 수정 이력 — 사람·에이전트·식별 불가 출처를 같은 정보 구조로 표시 */
.theme-history-sheet .sh-body{padding-top:8px}.th-theme{display:flex;flex-direction:column;gap:3px;padding:12px 14px;margin-bottom:12px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.th-theme b{font-size:13.5px}.th-theme span{font-size:11.5px;line-height:1.45;color:var(--muted)}
#themeHistoryList{display:flex;flex-direction:column;gap:10px}.th-event{padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.th-event>header{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;padding-bottom:9px;border-bottom:1px solid var(--hairline)}.th-event>header>div{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:5px}.th-event>header b{font-size:12.5px}.th-event>header small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--faint);font-size:11px}.th-event time{flex:none;color:var(--muted);font-size:11px;line-height:18px}.th-badge{height:19px;display:inline-flex;align-items:center;padding:0 6px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:800}.th-badge.master{color:var(--p5);background:color-mix(in srgb,var(--p5) 12%,transparent)}.th-badge.tester{color:var(--text)}.th-action{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:9px 1px 7px}.th-action>span{font-size:12px;font-weight:900;color:var(--text)}.th-action p{margin:0;color:var(--muted);font-size:11px;text-align:right}.th-event ul{list-style:none;display:flex;flex-direction:column;gap:7px;margin:0;padding:0}.th-event li{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:start;gap:8px;padding-top:7px;border-top:1px solid var(--hairline)}.th-event li:first-child{padding-top:0;border-top:0}.th-event li>b{font-size:11px;color:var(--muted)}.th-event li>div{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr);align-items:start;gap:4px;font-size:11.5px;line-height:1.45}.th-event del,.th-event ins{overflow-wrap:anywhere;text-decoration:none}.th-event del{color:var(--faint)}.th-event ins{color:var(--text);font-weight:700}.th-event li>div>span{color:var(--faint)}.th-event li>div>span svg{width:11px;height:11px;stroke:currentColor;fill:none}.th-nochange{display:block!important;color:var(--faint);font-size:11px}.th-empty{min-height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:22px;text-align:center;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--muted);font-size:12px}.th-empty span{color:var(--faint);font-size:11px}.th-empty.error{color:var(--danger)}
@media(max-width:359px){.th-event li{grid-template-columns:74px minmax(0,1fr)}.th-event>header{display:block}.th-event time{display:block;margin-top:5px}}
#themeHistoryAllList{display:flex;flex-direction:column;gap:10px}.th-event-theme{display:flex;flex-direction:column;gap:2px;margin:-12px -14px 10px;padding:11px 14px;border-bottom:1px solid var(--hairline);background:var(--surface2)}.th-event-theme b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.th-event-theme span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px}.th-empty button{height:34px;margin-top:7px;padding:0 13px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:850}.th-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--hairline)}.th-page-info{display:flex;flex-direction:column;gap:2px}.th-page-info b{font-family:var(--fn);font-size:11px}.th-page-info span{color:var(--faint);font-size:11px}.th-page-buttons{display:flex;gap:6px}.th-page-buttons button{height:36px;display:flex;align-items:center;justify-content:center;gap:4px;padding:0 13px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:850}.th-page-buttons button:disabled{opacity:.32}.th-page-buttons svg{width:13px;height:13px;fill:none;stroke:currentColor}@media(max-width:359px){.th-pager{align-items:stretch;flex-direction:column}.th-page-buttons button{flex:1}}
.te-code{font-family:var(--fn);font-size:10px;letter-spacing:.22em;color:var(--accentDim);text-transform:uppercase;margin:2px 2px 14px}
.te-sec{display:flex;align-items:center;gap:10px;margin:2px 0 12px;font-size:14px;font-weight:900;letter-spacing:-.01em;color:var(--text)}
.te-sec::after{content:"";flex:1;height:1px;background:var(--hairline)}
.field+.te-sec,.te-grid+.te-sec,.hint+.te-sec{margin-top:18px}
.te-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.te-duplicates{padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.te-duplicate-picked{display:flex;flex-direction:column;gap:6px;margin-bottom:7px}.te-duplicate-search{position:relative}.te-duplicate-search>svg{position:absolute;z-index:1;left:12px;top:50%;width:15px;height:15px;transform:translateY(-50%);fill:none;stroke:var(--muted);stroke-width:1.8;pointer-events:none}.te-duplicate-search .input{height:42px;padding-left:36px}
.te-duplicate-results{max-height:190px;overflow:auto;margin-top:6px;border:1px solid var(--hairline);border-radius:8px;background:var(--surface)}.te-duplicate-results[hidden]{display:none}.te-duplicate-row{min-height:48px;display:grid;grid-template-columns:minmax(0,1fr) 32px;align-items:center;gap:8px;padding:7px 8px 7px 10px;border:1px solid var(--hairline);border-radius:8px;background:var(--surface)}.te-duplicate-results .te-duplicate-row{border:0;border-radius:0}.te-duplicate-results .te-duplicate-row+.te-duplicate-row{border-top:1px solid var(--hairline)}.te-duplicate-row>span{min-width:0}.te-duplicate-row b,.te-duplicate-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.te-duplicate-row b{font-size:11.5px}.te-duplicate-row small{margin-top:3px;color:var(--muted);font-size:9px}.te-duplicate-row>button{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--hairline);border-radius:8px;background:var(--surface2);color:var(--muted)}.te-duplicate-row>button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.te-duplicate-row>button:active{border-color:var(--p5);color:var(--p5)}.te-duplicate-empty{display:block;padding:12px;text-align:center;color:var(--faint);font-size:10px}.te-duplicate-picked>.te-duplicate-empty{padding:7px 4px;text-align:left}
.te-players{display:flex;align-items:center;gap:12px;min-height:42px}@media(max-width:359px){.te-players{gap:6px}.te-players .stepper.stepper-sm{gap:6px}.te-players .stepper.stepper-sm .val{min-width:28px}} /* 320px — 두 스테퍼와 '명'이 한 줄에 들어가게 */
.roedit .roseg>button{flex:1 1 calc(25% - 2px);min-height:36px;padding:4px 6px;font-size:12px;word-break:keep-all}
.ro-panels{margin-top:10px;border:1px solid var(--border);background:var(--surface);padding:10px 12px;border-radius:16px}
.ro-panel{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:40px;color:var(--muted);font-size:12.5px;font-weight:700}
.ro-panel[hidden]{display:none}
.ro-panel .input{height:38px;width:86px;padding:0 10px}
.ro-panel select.input{width:112px}
.ro-panel.weekly .input{width:74px}
.ro-panel.weekly select.input{width:100px}
.ro-time{display:flex;align-items:center;gap:8px;margin-top:9px;padding-top:9px;border-top:1px solid var(--hairline)}
.ro-time span{font-size:12px;color:var(--muted);font-weight:800}
.ro-time .input{height:38px;max-width:132px}
.te-tilde{color:var(--faint);font-size:15px}
.te-url{font-size:13px}
/* 시간표 편집기 — 평일·주말 격자를 한 화면에서 추가·삭제·복사 */
.te-time-editor{margin:0 0 14px;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.te-time-tools{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.te-time-tools p{margin:1px 0;color:var(--muted);font-size:12px;line-height:1.45}
.te-time-tools>div{display:flex;gap:5px;flex:0 0 auto}
.te-time-tools button{height:32px;padding:0 11px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.te-time-tools button:active{scale:.96}
.te-time-days{display:flex;flex-direction:column;gap:9px}
.te-time-day{padding:10px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface2)}
.te-time-dayhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.te-time-dayhead>span{display:flex;align-items:baseline;gap:7px}.te-time-dayhead b{font-size:13px;color:var(--text)}.te-time-dayhead small{font-size:11px;color:var(--faint)}
.te-time-dayhead em{font-family:var(--fn);font-style:normal;font-size:11px;font-weight:800;color:var(--muted)}
.te-time-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}
.te-time-add .input{height:38px;padding:0 10px;color-scheme:dark}
.te-time-add>button{min-width:68px;height:38px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);border-radius:12px;font-size:12px;font-weight:800}
.te-time-add>button svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2}
.te-time-chips{display:flex;flex-wrap:wrap;gap:6px;min-height:27px;margin-top:9px}
.te-time-chip{height:28px;padding:0 8px 0 10px;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);border-radius:999px;font-size:12px;font-weight:800}
.te-time-chip svg{width:11px;height:11px;stroke:var(--faint);fill:none;stroke-width:2.2}.te-time-chip:active{border-color:var(--p5);color:var(--p5)}
.te-time-empty{align-self:center;color:var(--faint);font-size:11px;line-height:27px}
.te-time-friday{margin:12px 2px 8px}
html[data-theme=light] .te-time-add .input{color-scheme:light}
@media(max-width:359px){.te-time-tools{display:block}.te-time-tools>div{margin-top:8px}.te-time-tools button{flex:1}.te-time-add>button{min-width:60px}}
/* 가격 정책 편집기 — 인당/팀당·평일주말·인원별 요금·상황별 할인 */
.pe{border:1px solid var(--border);background:var(--surface);padding:12px;border-radius:16px}
.pe .peseg{max-width:220px}
.pemixseg{max-width:280px;margin-top:2px}
.pe-toggles{display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 2px 2px}
.petog{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer}
.petog input{width:17px;height:17px;accent-color:var(--p5)}
.pe-list{display:flex;flex-direction:column;gap:8px;margin:10px 0 8px}
.pe-list:empty{margin:0}
.pe-tier,.pe-disc{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.pe .input{height:38px;padding:0 10px}
.pe-tier .pe-players{width:62px;flex:0 0 auto}
.pe-tier .pe-x{flex:0 0 auto;font-size:12px;color:var(--muted);margin-left:-3px}
.pe-tier .pe-wd,.pe-tier .pe-we{flex:1 1 40%;min-width:0}
.pe:not(.weekend) .pe-tier .pe-we{display:none}
.pe-disc .pe-dlabel{flex:1 1 calc(100% - 39px);min-width:0;order:1}
.pe-disc .pe-dmode{width:126px;flex:0 0 auto;order:2;font-size:12px}
.pe-disc .pe-dprice{flex:1 1 96px;min-width:0;order:2}
.pe-disc .pe-dnote{flex:1 1 100%;order:3;min-width:0;font-size:13px}
.pe-disc .pe-dstack{flex:1 1 100%;order:4;min-width:0;font-size:13px}
.pe-package{display:flex;gap:7px;flex-wrap:wrap}
.pe-package .input{flex:1 1 80px;min-width:0;width:0}
.pe-package .pe-plabel,.pe-package .pe-pnote{flex-basis:100%}
.pe-package label{flex:1 1 80px;min-width:0;font-size:11px;color:var(--muted)}
.pe-package label .input{width:100%;margin-top:4px}
.pe label.pe-sub{display:block}
.pe-del{flex:0 0 auto;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--glass-line);border-radius:50%;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted)}
.pe-disc .pe-del{order:1}
.pe-del svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2}
.pe-del:active{background:var(--surface2)}
.pe-add{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;font-size:12.5px;font-weight:800;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);border-radius:999px}
.pe-add svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}
.pe-add:active{scale:.96}
.pe-sub{margin:16px 2px 4px;font-size:12.5px;font-weight:800;color:var(--muted)}
/* 시트 내 select — .input 과 같은 몸체 + 커스텀 슬랜트 셰브런 (기본 화살표 제거) */
select.input{appearance:none;-webkit-appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2392A4B8' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;background-size:14px}
/* number 인풋 — 브라우저 스피너 제거(스텝퍼·모노 미감 유지) */
.input[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.input[type=number]{-moz-appearance:textfield;appearance:textfield}

/* ---------- 피드백 (제안·버그 신고) ---------- */
.fb-dot{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;background:var(--gold,#E8B84B);color:#0a0a0a;font-size:11px;font-weight:900;border-radius:9px;vertical-align:1px}
.fb-admin-open{min-height:40px;display:inline-flex;align-items:center;gap:5px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}.fb-admin-open:hover{border-color:var(--glass-line-hi)}.fb-admin-open:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.fb-admin-open svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}
.fb-item{border:1px solid var(--border);border-radius:16px;padding:12px 14px;margin-top:8px;background:var(--surface)}
.fb-item.new{border-color:var(--glass-line-hi)} /* 새 결과 — 빨간 틀 대신 밝은 테두리(빨강은 선택·주 동작 전용) */
.fb-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
/* 상태 딱지 — 둥근 작은 태그, 의미색은 옅은 바탕 + 글자색으로만(대기=경고·반영 중=파랑·완료=초록·답변=보라·거절=위험) */
.fb-st{display:inline-flex;align-items:center;font-size:11px;font-weight:800;line-height:1.4;padding:2px 8px;border-radius:6px;background:var(--tag-bg);color:var(--muted);white-space:nowrap}
.fb-st.wait{color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent)}
.fb-st.ing{color:var(--info);background:color-mix(in srgb,var(--info) 14%,transparent)}
.fb-st.ok{color:var(--success);background:color-mix(in srgb,var(--success) 14%,transparent)}
.fb-st.answer{color:#C8A6FF;background:rgba(200,166,255,.14)}
.fb-st.no{color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent)}
.fb-date{color:var(--faint);font-size:11.5px;font-variant-numeric:tabular-nums}
.fb-meta{display:flex;flex-wrap:wrap;gap:5px 8px;margin-top:10px;padding-top:9px;border-top:1px solid var(--hairline)}
.fb-chip{display:inline-flex;align-items:baseline;gap:5px;font-size:11px;line-height:1.3}
.fb-chip .k{color:var(--faint,#5C6774);letter-spacing:.3px}
.fb-chip .v{color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.fb-body{margin-top:7px;font-size:13px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.fb-desc{margin-top:6px;font-size:12px;line-height:1.5;color:var(--muted,#9BA8B6)}
.fb-note{margin-top:8px;font-size:12px;line-height:1.5;padding:9px 11px;border-radius:12px;background:var(--surface2);white-space:pre-wrap;word-break:break-word}
.fb-note.ok{background:color-mix(in srgb,var(--success) 10%,var(--surface2))}
.fb-note.answer{background:color-mix(in srgb,#A987E6 12%,var(--surface2));color:var(--text)}
.fb-note.answer b{color:#D6C0FF}
.fb-note.no{background:color-mix(in srgb,var(--danger) 10%,var(--surface2))}
.fb-sts{display:flex;align-items:center;gap:6px;min-width:0}
.fb-st.theme,.fb-st.beta{color:var(--text)}

/* ---------- 관리자 피드백 관리 — 피드백·투표·신고를 한 시트에서 동일한 상태 계약으로 처리 ---------- */
.admin-control-sheet{height:min(92vh,860px)}.admin-control-sheet .sh-head,.admin-detail-sheet .sh-head,.admin-poll-editor .sh-head,.admin-action-sheet .sh-head{align-items:flex-start}.admin-control-sheet .sh-head>div,.admin-detail-sheet .sh-head>div,.admin-poll-editor .sh-head>div{min-width:0;flex:1}.admin-control-kicker{margin-top:3px;color:var(--muted);font-size:12px;font-weight:650}
.admin-control-sheet .sh-body{min-height:0;display:flex;flex-direction:column;padding-top:4px}.admin-control-sheet #adminControlRoot{min-width:0}
.admin-control-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin-bottom:12px;padding:4px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}
.admin-control-tabs button{min-width:0;min-height:44px;display:flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:999px;color:var(--muted);background:transparent;font-size:13px;font-weight:850;transition:color .18s var(--ease-out),background .18s var(--ease-out)}.admin-control-tabs button.on{color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}.admin-control-tabs button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.admin-control-tabs button b{min-width:20px;height:20px;display:grid;place-items:center;padding:0 6px;border-radius:999px;background:color-mix(in srgb,var(--p5) 14%,var(--surface2));color:var(--p5);font-size:11px}.admin-control-tabs button.on b{background:rgba(255,255,255,.22);color:#fff}
.admin-control-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:10px}.admin-control-summary.reports{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-control-summary>div{min-width:0;min-height:58px;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:9px 12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.admin-control-summary small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.admin-control-summary b{font-family:var(--fn);font-size:18px}
.admin-control-filter{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin:0 0 10px;padding:4px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}.admin-control-filter button{min-height:42px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:800;transition:color .18s var(--ease-out),background .18s var(--ease-out)}.admin-control-filter button.on{background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.admin-control-filter button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.admin-control-list{display:flex;min-width:0;flex-direction:column;gap:8px;padding-bottom:8px}.admin-control-card{position:relative;width:100%;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:12px 14px;text-align:left;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--text);transition:border-color .15s,transform .12s}.admin-control-card:active{transform:scale(.992)}.admin-control-card:hover{border-color:var(--glass-line-hi)}.admin-control-card:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.admin-control-card-head{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px}.admin-control-card-head time{flex:none;color:var(--faint);font-size:11px}.admin-control-card .fb-sts{display:flex;min-width:0;align-items:center;gap:5px}.admin-control-card .fb-sts>i{overflow:hidden;color:var(--muted);font-size:11px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.admin-control-card>b{min-width:0;overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.admin-control-card>b small{color:var(--faint);font-size:11px;font-weight:650}.admin-control-card>p{display:-webkit-box;overflow:hidden;margin:0;color:var(--text);font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:3}.admin-control-card>em{display:block;overflow:hidden;padding:8px 10px;border-radius:10px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-style:normal;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}
.admin-control-open{display:flex;align-items:center;justify-content:flex-end;gap:2px;margin-top:1px;color:var(--faint);font-size:11px;font-weight:800}.admin-control-open svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2}
.admin-control-linked{display:flex;min-width:0;align-items:center;gap:6px;color:var(--muted);font-size:11px}.admin-control-linked>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-control-linked>svg{width:14px;height:14px;flex:none;color:var(--muted);fill:none;stroke:currentColor;stroke-width:1.8}
.admin-state{display:inline-flex;width:max-content;align-items:center;min-height:22px;padding:0 7px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850}.admin-state.open,.admin-state.pending{background:color-mix(in srgb,var(--warning) 14%,transparent);color:var(--warning)}.admin-state.closed,.admin-state.resolved{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.admin-state.dismissed{color:var(--muted)}
.admin-control-sheet .fb-st,.admin-detail-meta .fb-st{display:inline-flex;align-items:center;min-height:22px;padding:0 7px;border:0;border-radius:6px;background:color-mix(in srgb,currentColor 13%,transparent);font-size:11px;font-weight:850;letter-spacing:0}.admin-control-sheet .fb-st.wait,.admin-detail-meta .fb-st.wait{color:var(--warning)} /* 상태 태그 — 사각 틀 대신 옅은 둥근 태그(색은 상태별 규칙) */
.admin-control-create{width:100%;min-height:57px;display:grid;grid-template-columns:31px minmax(0,1fr) 17px;align-items:center;gap:10px;margin-bottom:10px;padding:9px 12px;text-align:left;border-radius:16px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.admin-control-create>svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2}.admin-control-create>span{display:flex;min-width:0;flex-direction:column;gap:2px}.admin-control-create b{color:var(--text);font-size:13px}.admin-control-create small{color:var(--muted);font-size:11px}.admin-control-create>svg:last-child{width:14px;color:var(--faint)}
.admin-control-empty{min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:24px;text-align:center;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.admin-control-empty b{font-size:13px}.admin-control-empty span{color:var(--muted);font-size:11.5px}
.admin-poll-results{display:flex;flex-direction:column;gap:9px;margin-top:14px}.admin-poll-results.compact{gap:6px;margin-top:2px}.admin-poll-results>div{display:flex;flex-direction:column;gap:5px}.admin-poll-results>div>span{display:flex;align-items:center;justify-content:space-between;gap:8px}.admin-poll-results b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.admin-poll-results em{flex:none;color:var(--muted);font-size:11px;font-style:normal}.admin-poll-results i{height:5px;overflow:hidden;border-radius:3px;background:var(--surface3)}.admin-poll-results u{display:block;height:100%;border-radius:3px;background:var(--accent);text-decoration:none}.admin-poll-results.compact>div>span,.admin-poll-results.compact b{font-size:11px}.admin-poll-results.compact i{height:4px}
.admin-detail-sheet,.admin-poll-editor{max-height:min(92vh,860px)}.admin-detail-sheet .sh-body,.admin-poll-editor .sh-body,.admin-action-sheet .sh-body{padding-top:5px;padding-bottom:max(24px,env(safe-area-inset-bottom))}.admin-detail-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:11px}.admin-detail-meta>span:not(.fb-st){min-height:22px;display:inline-flex;align-items:center;padding:0 7px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px}.admin-detail-meta time{margin-left:auto;color:var(--faint);font-size:11px}
.admin-detail-copy{padding:13px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface);font-size:13px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.admin-detail-note{margin-top:9px;padding:11px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.admin-detail-note.danger{border-color:color-mix(in srgb,var(--danger) 36%,var(--border))}.admin-detail-note b{font-size:12px}.admin-detail-note p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.admin-linked-poll{width:100%;min-height:58px;display:grid;grid-template-columns:30px minmax(0,1fr) 16px;align-items:center;gap:9px;margin-top:11px;padding:9px 12px;text-align:left;border-radius:16px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.admin-linked-poll>svg{width:18px;height:18px;fill:none;stroke:currentColor}.admin-linked-poll>span{display:flex;min-width:0;flex-direction:column;gap:2px}.admin-linked-poll b{font-size:12.5px}.admin-linked-poll small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.admin-linked-poll>svg:last-child{width:13px;color:var(--faint)}
.admin-event-history{margin-top:11px;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.admin-event-history>summary{min-height:44px;display:flex;align-items:center;gap:6px;padding:0 14px;cursor:pointer;list-style:none;font-size:12.5px;font-weight:850}.admin-event-history>summary::-webkit-details-marker{display:none}.admin-event-history>summary b{color:var(--muted);font-size:11px}.admin-event-history>summary svg{width:13px;margin-left:auto;fill:none;stroke:currentColor;transition:transform .15s}.admin-event-history[open]>summary svg{transform:rotate(180deg)}.admin-event-history>div{border-top:1px solid var(--hairline)}.admin-event-history p{display:grid;grid-template-columns:104px minmax(0,1fr);gap:2px 8px;margin:0;padding:9px 14px}.admin-event-history p+p{border-top:1px solid var(--hairline)}.admin-event-history time{grid-row:1/3;color:var(--faint);font-size:11px}.admin-event-history p b{font-size:12px}.admin-event-history p span{color:var(--muted);font-size:11px}
.admin-detail-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:14px}.admin-detail-actions>.btn{width:100%;min-width:0;padding-left:8px;padding-right:8px;font-size:12.5px}.admin-detail-actions>.admin-poll-link:last-child:nth-child(odd){grid-column:1/-1}.admin-running-guard{margin-top:14px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.admin-running-guard b{font-size:12.5px}.admin-running-guard p{margin:4px 0 0;color:var(--muted);font-size:11.5px;line-height:1.55}
.admin-action-context{display:-webkit-box;overflow:hidden;margin-bottom:12px;padding:10px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--muted);font-size:11.5px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:3}.admin-action-sheet textarea.input,.admin-poll-editor textarea.input{min-height:120px}.admin-poll-editor .field{margin-top:12px}.admin-poll-editor .field:first-child{margin-top:0}.admin-poll-editor button[type=submit]{margin-top:15px}
.admin-poll-title{margin:1px 1px 9px;font-size:16px}.admin-poll-total{margin:10px 1px 0;color:var(--muted);font-size:11px}.admin-detail-actions:empty{display:none}
.admin-report-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:10px}.admin-report-people>div{min-width:0;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.admin-report-people small{color:var(--muted);font-size:11px}.admin-report-people b,.admin-report-people span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-report-people b{font-size:13px}.admin-report-people span{color:var(--faint);font-size:11px}.admin-report-snapshot{margin-top:10px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.admin-report-snapshot b{display:block;font-size:12.5px}.admin-report-snapshot p{margin:6px 0 0;font-size:12.5px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:359px){.admin-control-sheet .sh-body,.admin-detail-sheet .sh-body,.admin-poll-editor .sh-body{padding-left:15px;padding-right:15px}.admin-control-summary small{font-size:11px}.admin-detail-actions{grid-template-columns:minmax(0,1fr)}.admin-detail-actions>.admin-poll-link:last-child:nth-child(odd){grid-column:auto}.admin-report-people{grid-template-columns:minmax(0,1fr)}}
/* ---------- 테마 추가 요청 — 탐색 검색 CTA + 시트 (fb:3f0cda73)
   P5 잉크+크림슨 고정 팔레트(p5c 다이얼로그와 동일 계열). CTA 버튼의 다크 배경만 라이트 섹션(html[data-theme=light] .tq-btn)에서 보정 ---------- */
.treq-cta{padding:4px 16px 30px}
.empty+.treq-cta{margin-top:-14px} /* 빈 결과 아래 — empty 하단 패딩과의 겹침 완화 */
.tq-code{font-family:var(--fn);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--p5);opacity:.85;margin:0 2px 8px}
/* 예약 오픈 시간 요청 시트 — 어느 테마의 요청인지 알려주는 컨텍스트 칩 (예약=accent 계열) */
.ro-ask-theme{display:flex;flex-direction:column;gap:3px;margin:0 0 12px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)} /* 대상 테마 — 무광 배너와 같은 둥근 무광 칸 */
.ro-ask-theme b{font-size:14.5px;font-weight:800;color:var(--text);word-break:keep-all;line-height:1.35}
.ro-ask-theme span{font-size:12px;color:var(--muted)}
/* 종합 피드백 시트 — 종류 선택 그리드(sortchoice 계열 변형, 틸 선택 상태 + 둥근 라운드) */
.fbk-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:2px 0 14px}
.fbk-grid>.fbk-choice:last-child:nth-child(odd){grid-column:1/-1}
.fbk-choice{min-width:0;min-height:60px;display:grid;grid-template-columns:minmax(0,1fr) 22px;align-items:center;gap:8px;text-align:left;padding:10px 10px 10px 13px;color:var(--text);border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);transition:border-color .15s,background .15s,transform .15s}
@media(hover:hover){.fbk-choice:not(.on):hover{border-color:var(--glass-line-hi)}}
.fbk-choice:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.fbk-choice:active{transform:scale(.985)}
.fbk-choice>span{min-width:0;display:flex;flex-direction:column;gap:3px}
.fbk-choice b{font-size:13px;line-height:1.3;word-break:keep-all}
.fbk-choice small{color:var(--faint);font-size:11px;line-height:1.35;word-break:keep-all}
.fbk-choice>i{width:20px;height:20px;display:grid;place-items:center;border:1.5px solid var(--glass-line-hi);border-radius:50%;color:var(--faint);font-style:normal}
.fbk-choice>i svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2.5}
.fbk-choice.on{border-color:color-mix(in srgb,var(--p5) 45%,var(--border))}
.fbk-choice.on>i{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
.fbksheet .fbk-send[disabled]{opacity:.45}
.fbksheet textarea.input,.admin-comment-sheet textarea.input{font-family:var(--fb);font-size:14px} /* 한국어 제보·코멘트는 고정폭 대신 본문체 */
.tq-btn{position:relative;overflow:hidden;display:flex;align-items:center;gap:13px;width:100%;padding:14px 16px;text-align:left;color:var(--paper);
  background:var(--surface);border:1px solid var(--border);border-radius:16px;transition:.16s;color:var(--text)}
/* 우상단 대각 슬래시 오너먼트 — p5c-slash 축소판 */
@media(hover:hover){.tq-btn:hover{border-color:var(--glass-line-hi)}}
.tq-btn:active{transform:translateY(1px)}
.tq-flag{flex:0 0 auto;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:var(--p5);background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi)}.tq-flag svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2}
.tq-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.tq-tx b{font-size:14.5px;font-weight:900;letter-spacing:-.01em}
.tq-tx small{font-size:12px;color:var(--muted);line-height:1.4}
.tq-btn>svg{flex:0 0 auto;width:17px;height:17px;stroke:var(--p5);fill:none;stroke-width:2.2}
.tq-req{font-size:11px;font-weight:800;color:var(--p5);background:color-mix(in srgb,var(--p5) 12%,transparent);border-radius:6px;padding:1px 6px;margin-left:5px;vertical-align:1px}

/* ===== 투표(안건) — 프로필 배너(.votebar) + 시트(openPollSheet) ===== */
.pollbars{padding:0 18px 16px;display:flex;flex-direction:column;gap:8px}
.votebar{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;cursor:pointer;text-align:left;color:var(--text);
  background:var(--matte-tint);border:1px solid var(--border);border-radius:16px} /* 무광 배너(.mbanner)와 같은 칸 */
.votebar .vb-ic{width:34px;height:34px;display:grid;place-items:center;flex:none;color:var(--muted);background:var(--tag-bg);border-radius:50%}
.votebar .vb-ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.votebar .vb-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.votebar .vb-tx b{font-size:14px;font-weight:900}
.votebar .vb-tx span{font-size:12px;color:var(--muted,#92A4B8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 동작 표시 — 공용 유리 알약. 아직 참여하지 않은 안건만 붉은 렌즈(.p)로 주 동작을 표시한다. 배너 전체가 버튼이라 누름은 배너에서 받는다 */
.votebar .vb-cta{flex:none;display:inline-flex;align-items:center;height:30px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;
  background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;transition:scale .2s cubic-bezier(.3,.7,.4,1)}
.votebar:not(.closed){border-color:color-mix(in srgb,var(--accent) 28%,var(--border));background:linear-gradient(115deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 65%),var(--matte-tint)}.votebar:not(.closed) .vb-ic{color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,transparent)}.votebar:not(.closed) .vb-cta:not(.p){color:var(--accent);border-color:color-mix(in srgb,var(--accent) 34%,var(--glass-line));background:linear-gradient(color-mix(in srgb,var(--accent) 12%,transparent),color-mix(in srgb,var(--accent) 12%,transparent)),var(--glass-bg)} /* 진행 중 투표만 청록 — 종료 배너는 무광 */.votebar .vb-cta.p{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}
.votebar:active .vb-cta{scale:.95}
.pv-item{border:1px solid var(--border);border-radius:16px;padding:13px 14px;margin-top:10px;background:var(--surface)}
.pv-item.closed{background:var(--matte-tint)}
.pv-title{font-weight:900;font-size:14.5px;line-height:1.4}
.pv-closed{font-size:11px;font-weight:800;letter-spacing:0;color:var(--faint);background:var(--tag-bg);border-radius:6px;padding:2px 7px;margin-right:8px;vertical-align:2px}
.pv-body{margin-top:8px;font-size:13px;line-height:1.55;color:var(--muted,#92A4B8);white-space:pre-wrap;word-break:break-word}
.pv-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.pv-choices>button{flex:1 1 auto}
.pv-choices button{min-width:0;min-height:40px;padding:8px 7px;background:var(--glass-bg);border:1px solid var(--glass-line);box-shadow:var(--glass-hi);border-radius:999px;color:var(--text);font-weight:800;font-size:13px;line-height:1.35;word-break:keep-all;cursor:pointer}
.pv-choices button.on{border-color:transparent;color:#fff;background:var(--lens);box-shadow:var(--lens-sh)}
.pv-my{margin-top:8px;font-size:11.5px;color:var(--faint,#5C6774)}
.pv-secret,.pv-closed-note{margin-top:9px;font-size:11.5px;line-height:1.45;color:var(--faint,#5C6774)}
.pv-closed-note{color:var(--muted)}
.pv-results{margin-top:12px;display:flex;flex-direction:column;gap:6px}
.pv-res{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 8px}
.pv-rl{grid-column:1/-1;min-width:0;font-size:12px;font-weight:800;line-height:1.4;color:var(--muted,#92A4B8);overflow-wrap:anywhere}
.pv-rb{flex:1;height:7px;border-radius:999px;background:var(--surface3);overflow:hidden}
.pv-rb i{display:block;height:100%}
.pv-rn{width:26px;text-align:right;font-size:12px}
.pv-total{margin-top:2px;font-size:11px;color:var(--faint,#5C6774);text-align:right}

/* ===== Google Play 정식 출시 알림 시트 ===== */
.playlaunch-sheet .sh-body{padding-top:6px}
.pb-hero{margin:0 0 16px;padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)} /* 무광 머리 카드 — 격자·궤도 장식·모서리 컷 없음 */
.pb-tag{display:inline-flex;align-items:center;margin-bottom:10px;padding:2px 8px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:800}
.pb-title{margin:0;font-size:clamp(20px,5.5vw,24px);font-weight:900;line-height:1.3;letter-spacing:-.02em;word-break:keep-all}
.pb-title em{font-style:normal}
.pb-p{font-size:14px;line-height:1.72;color:var(--text);margin:0 0 14px;word-break:keep-all}
.pb-store{text-decoration:none}
/* 베타 캠페인 시트 전용(스텝·안내·상태) — 클로즈 베타 종료 때 제거했다가 iOS TestFlight 캠페인에서 복원 */
.playbeta-sheet .sh-body{padding-top:6px}
.pb-steps{display:flex;flex-direction:column;gap:9px;margin:14px 0 0}
.pb-step{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--matte-tint);border:1px solid var(--border);border-radius:12px;font-size:13px;line-height:1.5;word-break:keep-all}
.pb-step i{flex:0 0 auto;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:12px;font-weight:800;color:var(--text);border-radius:50%;background:var(--tag-bg);font-variant-numeric:tabular-nums}
.pb-step span{min-width:0}
.pb-note{display:flex;align-items:flex-start;gap:9px;margin-top:12px;padding:11px 14px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint);
  font-size:12.5px;line-height:1.6;color:var(--muted);word-break:keep-all}
.pb-note svg{flex:0 0 auto;width:17px;height:17px;stroke:var(--muted);fill:none;stroke-width:2;margin-top:1px}
.pb-status{display:flex;flex-direction:column;gap:4px;margin-top:10px;padding:12px 13px;border:1px solid var(--hairline);background:var(--surface)}
.pb-status b{font-size:12px;font-weight:900;color:var(--accent)}
.pb-status.wait b{color:var(--warning)}
.pb-status span{font-size:12.5px;line-height:1.55;color:var(--muted)}
.pl-thanks{display:flex;align-items:flex-start;gap:12px;margin:0 0 13px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.pl-thanks svg{flex:0 0 auto;width:18px;height:18px;stroke:var(--p5);fill:none;stroke-width:2;margin-top:2px}
.pl-thanks b{display:block;font-size:13.5px;font-weight:900;color:var(--text);margin-bottom:3px}
.pl-thanks p{margin:0;font-size:12.5px;line-height:1.6;color:var(--muted);word-break:keep-all}
.pl-hint{display:block;margin-top:8px;font-size:12.5px;line-height:1.6;color:var(--faint)}

/* 신테마 공지 시트 (openThemeNewsSheet) — 무광 머리 카드 + 탭하면 상세로 가는 신테마 카드 */
.tn-hero{margin:0 0 14px;padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.tn-title{margin:0;font-size:clamp(20px,5.5vw,24px);font-weight:900;line-height:1.3;letter-spacing:-.02em;word-break:keep-all}
.tn-title em{font-style:normal}
.tn-catchup{margin:0 2px 12px;font-size:12.5px;line-height:1.55;color:var(--muted);word-break:keep-all}
.tn-sec{display:flex;flex-direction:column;gap:8px}
.tn-sec + .tn-sec{margin-top:14px}
.tn-week{display:flex;align-items:center;gap:10px;margin:2px 2px 1px}
.tn-week span{font-size:12px;font-weight:800;color:var(--muted);white-space:nowrap}
.tn-week i{flex:1;height:1px;background:linear-gradient(90deg,var(--border),transparent)}
.tn-card{display:flex;align-items:stretch;gap:12px;width:100%;padding:10px 32px 10px 10px;position:relative;cursor:pointer;text-align:left;color:var(--text);
  background:var(--surface);border:1px solid var(--border);border-radius:16px;transition:scale .2s var(--ease-press)}
.tn-card:active{scale:.99}
.tn-poster{position:relative;width:54px;height:72px;flex:0 0 auto;border-radius:8px;background-size:cover;background-position:center;overflow:hidden;background-color:var(--surface3);
  display:flex;align-items:center;justify-content:center}
.tn-poster .ph{font-size:22px;font-weight:900;color:rgba(231,236,242,.5)}
.tn-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px;justify-content:center}
.tn-name{font-size:14px;font-weight:800;color:var(--text);line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tn-pre{display:inline-block;margin-left:6px;padding:1px 6px;font-style:normal;font-size:11px;font-weight:800;line-height:1.35;vertical-align:1px;
  color:var(--info);border-radius:6px;background:color-mix(in srgb,var(--info) 14%,transparent)}
.tn-sub{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tn-genre{align-self:flex-start;margin-top:3px;padding:2px 7px;font-size:11px;font-weight:700;border-radius:6px;background:var(--tag-bg);color:var(--muted)}
.tn-go{position:absolute;right:9px;top:50%;transform:translateY(-50%);color:var(--faint);opacity:.8}
.tn-go svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.tn-more{padding:2px 2px 0;font-size:11.5px;color:var(--faint)}

/* 2026-07-28 서버 점검 안내 — 짧은 시한성 공지는 시간과 이용 불가 상태만 또렷하게 전달한다. */
.maintenance-notice-sheet .sh-body{padding-top:6px}
.mn-lead{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:start;gap:13px;margin-bottom:14px;padding:15px;
  border:1px solid color-mix(in srgb,var(--gold) 34%,var(--border));border-left:2px solid var(--gold);
  background:linear-gradient(125deg,color-mix(in srgb,var(--gold) 10%,transparent),var(--surface2) 64%)}
.mn-lead>span{width:48px;height:48px;display:grid;place-items:center;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 42%,var(--border));background:color-mix(in srgb,var(--gold) 8%,transparent)}
.mn-lead>span svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7}
.mn-lead small{display:block;margin-bottom:4px;color:var(--gold);font-size:9px;font-weight:900}
.mn-lead h2{font-size:19px;line-height:1.3;letter-spacing:-.02em}
.mn-lead p{margin-top:6px;color:var(--muted);font-size:11.5px;line-height:1.55;word-break:keep-all}
.mn-times{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:11px}
.mn-times>div{display:flex;flex-direction:column;gap:6px;padding:13px 12px;border:1px solid var(--hairline);background:var(--surface2)}
.mn-times span{color:var(--muted);font-size:9px;font-weight:800}
.mn-times strong{font-family:var(--fn);font-size:15px;letter-spacing:.01em;white-space:nowrap}
.mn-times i{padding:0 2px;color:var(--faint);font-style:normal;font-weight:500}
.mn-deadline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px;padding:13px 12px;border:1px solid var(--hairline);background:var(--surface2)}
.mn-deadline span{color:var(--muted);font-size:9px;font-weight:800}.mn-deadline strong{font-family:var(--fn);font-size:15px;letter-spacing:.01em;white-space:nowrap}
.mn-note{margin:0 0 14px;padding:10px 11px;color:var(--muted);font-size:10.5px;line-height:1.5;border-left:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.maintenance-update-notice-sheet .sh-head{padding-top:6px;padding-bottom:5px}.maintenance-update-notice-sheet .sh-body{padding-top:3px;padding-bottom:4px}
.maintenance-update-notice-sheet .mn-lead{margin-bottom:10px;padding:11px}.maintenance-update-notice-sheet .mn-deadline{margin-bottom:8px;padding:10px 11px}.maintenance-update-notice-sheet .mn-note{margin-bottom:10px;padding:8px 10px}
html[data-theme=light] .mn-lead{background:linear-gradient(125deg,color-mix(in srgb,var(--gold) 13%,transparent),var(--surface2) 68%)}
@media(max-width:359px){.mn-lead{grid-template-columns:40px minmax(0,1fr);gap:10px;padding:12px}.mn-lead>span{width:40px;height:40px}.mn-lead h2{font-size:17px}.mn-times>div{padding:10px 8px}.mn-times strong,.mn-deadline strong{font-size:13px}}

/* 구버전 APK 업데이트 넛지 시트 (openApkUpdateSheet) — 무광 머리 카드 + 주소 칸. 배터리 취지에 맞게 무한 애니메이션 없음 */
.upd-hero{margin:2px 0 16px;padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.upd-title{font-size:clamp(20px,5.5vw,24px);font-weight:900;line-height:1.3;letter-spacing:-.02em;margin:0 0 6px}
.upd-title em{font-style:normal}
.upd-ver{font-size:12px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.upd-p{font-size:14px;line-height:1.7;color:var(--text);margin:0 0 14px}
.upd-p b{color:var(--text);font-weight:800}
.upd-urlbox{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  padding:12px 12px 12px 15px;margin-bottom:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;
  cursor:pointer;transition:.14s;text-align:left}
.upd-urlbox:hover{border-color:var(--glass-line-hi)}
.upd-url{font-size:15px;font-weight:800;color:var(--text);letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upd-copy{flex:0 0 auto;display:flex;align-items:center;gap:5px;font-size:12px;font-weight:800;color:var(--text);padding:6px 13px;
  border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.upd-copy b{;display:inline-block}
.upd-steps{display:flex;flex-direction:column;gap:11px;margin-bottom:18px}
.upd-step{display:flex;align-items:center;gap:12px;font-size:13.5px;color:var(--muted)}
.upd-step b{color:var(--text);font-weight:800}
.upd-step i{flex:0 0 auto;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-style:normal;
  font-size:12px;font-weight:800;color:var(--text);border-radius:50%;background:var(--tag-bg);font-variant-numeric:tabular-nums}

/* ============================================================== 라이트 모드
   html[data-theme=light] — 프로필 탭 '화면 모드' 3단 스위치(app.js themePref/appTheme/setThemePref, 라이트·시스템·다크, 기기별 localStorage).
   토큰 재정의 + 하드코딩 다크 지점만 스코프 보정. 크림슨(P5)·HUD 언어는 유지하고 틸/골드만 라이트 대비로 조정.
   .cal-stage(달력 스테이지·PNG 내보내기)는 자체 --c* 토큰(app.js 인라인 주입)이라 모드 무관 — 여기서 건드리지 말 것. */
html[data-theme=light]{
  --bg:#F2F4F8;--bg2:#ECEFF4;--surface:#FFFFFF;--surface2:#F5F7FA;--surface3:#E2E8EF;
  --border:#D4DBE4;--hairline:rgba(34,48,62,.16);--grid:rgba(34,48,62,.07);
  --text:#141B23;--muted:#46545F;--faint:#66727E;
  --accent:#0B9C8F;--accentDim:#9BD9D1;--apricot:#C57B61;--gold:#A97D0E;--goldDeep:#8C660C;--dhot:#D96A1B;
  --life-star:#C99A2E;
  --success:#178A50;--danger:#D63B2F;--warning:#9A6E0F;--info:#2E6FCC;
  --gc1:#0FA396;--gc2:#C0684C;--gc3:#C28E00;--gc4:#3C68D6;--gc5:#8C57C9;--gc6:#D96A1B;--gc7:#1E9257;--gc8:#C9407E;--gcx:#8A97A6;--gcn:#B4BFCA; /* 장르 도넛 조각 — 흰 패널 대비 짙은 짝 + 장르 없음(연회색) */
  --shadow:0 30px 70px rgba(30,45,60,.18);
  --sw-lens:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),linear-gradient(180deg,color-mix(in srgb,var(--accent) 90%,#fff),color-mix(in srgb,var(--accent) 82%,#000)); /* 짙은 라이트 청록은 덜 눌러 맑게 */
  color-scheme:light;
}
html[data-theme=light] .stampfx.ticket{--sf-main-a:#FFFEFA;--sf-main-b:#E9EFF1;--sf-ink:#172028;--sf-teal:#087E75;--sf-gold:#A87905;--sf-edge:rgba(8,126,117,.38);--sf-dim:rgba(22,35,46,.16);--sf-shadow:rgba(44,58,70,.27)}
html[data-theme=light] body{background:#E9EDF2;background-image:radial-gradient(1100px 640px at 16% -6%,#F7F9FC,#E9EDF2 60%)}
html[data-theme=light] .frame{box-shadow:0 0 0 1px #D8DEE7,0 0 80px rgba(90,110,135,.22);border-color:#D3DAE3}
html[data-theme=light] .tabbar{background:rgba(250,251,253,.92)}
html[data-theme=light] .masterb.expeditioner{color:#FFF8EE;background:linear-gradient(135deg,#86502F,#55301D);box-shadow:0 2px 6px rgba(76,44,27,.22)}
/* 대비 보정 오버라이드(L15)의 라이트 짝 */
html[data-theme=light] .fact .k,html[data-theme=light] .pcap,html[data-theme=light] .countline,html[data-theme=light] .section .h{color:#5B6B7A}
html[data-theme=light] .review-rec-badge{color:#8A6100;border-color:rgba(174,118,0,.38);background:linear-gradient(105deg,rgba(255,207,92,.2),rgba(255,207,92,.04))}html[data-theme=light] .fact-player-slide.recommended{color:#8A6100}
html[data-theme=light] .sensering::before{background:#fff}
html[data-theme=light] .gd-leg.none b{color:#8593A2} /* 연회색 % 는 흰 배경에서 흐릿 — 읽히는 회색으로 */
html[data-theme=light] .trow .mid .s{color:#4F5E6B}
html[data-theme=light] .tdur{--tdc:#1F8F55;background:linear-gradient(180deg,color-mix(in srgb,var(--tdc) 14%,#fff),color-mix(in srgb,var(--tdc) 7%,#fff));box-shadow:inset 0 1px rgba(255,255,255,.8)}
html[data-theme=light] .tdur.standard{--tdc:#1E6FC0}
html[data-theme=light] .tdur.long{--tdc:#C76A0E}
html[data-theme=light] .tdur.epic{--tdc:#C8403D}
html[data-theme=light] .syscode,html[data-theme=light] .te-code,html[data-theme=light] .widenote .wn-code{color:#27766E}

/* 무포스터 배경은 모드와 무관하게 어두운 HSL — 밝은 이니셜을 유지해 대비 확보. */
html[data-theme=light] .th .ph,html[data-theme=light] .tdth .ph{color:rgba(255,255,255,.82);text-shadow:0 1px 7px rgba(0,0,0,.42)}
html[data-theme=light] .dhero .ph{color:rgba(255,255,255,.38);text-shadow:0 2px 18px rgba(0,0,0,.35)}
html[data-theme=light] .runtime-badge{color:#087D73;background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(238,244,247,.94));
  border-color:rgba(11,156,143,.42);border-left-color:#0B9C8F;box-shadow:0 0 18px rgba(11,156,143,.12)}
html[data-theme=light] .runtime-badge b{color:#8A6508}
html[data-theme=light] .toast{background:color-mix(in srgb,#fff 80%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 14px 30px -14px rgba(40,55,70,.38)}
/* 상세 히어로 — 스크림이 라이트 배경으로 녹아들어 어두운 제목 텍스트가 얹힘 */
html[data-theme=light] .dhero .scrim{background:linear-gradient(180deg,rgba(242,244,248,.04) 0%,rgba(242,244,248,.16) 38%,rgba(242,244,248,.97) 100%)}
html[data-theme=light] .dhero .diag{background:linear-gradient(108deg,transparent 62%,rgba(242,244,248,.45) 62%)}
html[data-theme=light] .view-detail .dhero .scrim{background-color:rgba(242,244,248,calc(.58*var(--dclps,0)))}
html[data-theme=light] .detail-keq-entry{box-shadow:0 8px 22px rgba(63,47,56,.06)}
html[data-theme=light] .iconbtn.hero{background:linear-gradient(180deg,rgba(255,255,255,.74),rgba(255,255,255,.56));border-color:rgba(255,255,255,.8);color:#2A3642;box-shadow:inset 0 1px 0 #fff,0 6px 16px -8px rgba(30,44,60,.35)}
/* 글래스 칩 — 흰 배경에선 화이트 하이라이트 대신 잉크 틴트 */

/* 액센트 배경 칩 — 어두워진 --accent 대신 밝은 틸 유지(HUD 감), 잉크 텍스트로 대비 확보 */
html[data-theme=light] .pill.gold{--pc:#8C660C}
/* 오버레이·시트 — 라이트에 맞춘 딤 농도 */
html[data-theme=light] .sheet-bg{background:rgba(24,34,46,.42)}
html[data-theme=light] .ntf,html[data-theme=light] .notif-detail-sheet{--nc:var(--ncl,#56616C)}
html[data-theme=light] .ntf{background:var(--surface)}html[data-theme=light] .ntf.unread{background:color-mix(in srgb,var(--nc) 4%,var(--surface))}
html[data-theme=light] .iconbtn.record-delete-action{color:#C63131;border-color:rgba(198,49,49,.3);background:linear-gradient(135deg,rgba(198,49,49,.08),var(--surface2))}
html[data-theme=light] .iconbtn.record-delete-action:hover,html[data-theme=light] .iconbtn.record-delete-action:focus-visible{color:#A51F27;border-color:rgba(165,31,39,.52);background:rgba(198,49,49,.12)}

html[data-theme=light] .location-map{border-color:rgba(34,48,62,.18);background:#E6EBEF}
html[data-theme=light] .location-map::after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}
html[data-theme=light] .location-map-zoom,html[data-theme=light] .location-recenter{border-color:rgba(36,49,62,.2);background:rgba(255,255,255,.94);color:#263440;box-shadow:0 5px 18px rgba(40,55,70,.18)}
html[data-theme=light] .location-map-zoom button{color:#263440}html[data-theme=light] .location-map-zoom button+button{border-top-color:rgba(36,49,62,.16)}html[data-theme=light] .location-map-zoom button:active{background:rgba(36,49,62,.09)}
html[data-theme=light] .location-map-state{background:rgba(255,255,255,.9);color:#596673;box-shadow:0 4px 14px rgba(40,55,70,.16)}

/* 로그아웃·총 지출 경고창 — P5 각진 형태와 크림슨 긴장감은 유지하고, 라이트에선 밝은 패널·짙은 본문으로 전환. */
html[data-theme=light] .p5c{filter:drop-shadow(0 20px 46px rgba(36,48,62,.24)) drop-shadow(0 0 16px rgba(196,2,38,.12))}
html[data-theme=light] .p5c-in{background:linear-gradient(152deg,#FFF1F4,#FFFFFF 52%,#F3F6F9);border-color:rgba(196,2,38,.36)}
html[data-theme=light] .p5c-slash{background:linear-gradient(114deg,transparent 55%,rgba(196,2,38,.1) 55%,rgba(196,2,38,.1) 63%,transparent 63%),linear-gradient(114deg,transparent 70%,rgba(196,2,38,.045) 70%,rgba(196,2,38,.045) 75%,transparent 75%)}
html[data-theme=light] .p5c-scan{background:linear-gradient(90deg,transparent,rgba(196,2,38,.48) 30%,rgba(196,2,38,.48) 70%,transparent)}
html[data-theme=light] .p5c-kick{color:#C40226;text-shadow:0 0 12px rgba(196,2,38,.16)}
html[data-theme=light] .p5c-kick::before{background:#C40226;box-shadow:0 0 9px rgba(196,2,38,.24)}
html[data-theme=light] .p5c-kick::after{background:linear-gradient(90deg,rgba(196,2,38,.42),transparent 82%)}
html[data-theme=light] .p5c-ttl{color:var(--text);text-shadow:2px 2px 0 rgba(196,2,38,.14)}
html[data-theme=light] .p5c-msg{color:rgba(20,27,35,.66)}
html[data-theme=light] .p5c-msg b{color:#8A6508}
html[data-theme=light] .p5c-btn.stay{color:#33414D;background:rgba(20,27,35,.035);border-color:rgba(20,27,35,.18)}
html[data-theme=light] .p5c-btn.stay:hover{color:var(--text);border-color:rgba(20,27,35,.42);background:rgba(20,27,35,.07)}
html[data-theme=light] .p5c-btn.go{color:#FFF8FA;background:linear-gradient(160deg,#E4032B,#C40226 48%,#8A041B);box-shadow:0 7px 20px rgba(196,2,38,.25)}
html[data-theme=light] .p5c-btn.go:hover{box-shadow:0 9px 26px rgba(196,2,38,.38)}
html[data-theme=light] .reactbar{background:color-mix(in srgb,#fff 84%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 10px 30px rgba(40,55,70,.25)}
html[data-theme=light] .msg.them .bubble{background:#fff;border-color:var(--border)}
html[data-theme=light] .theme-drop{box-shadow:0 10px 28px rgba(40,55,70,.22)}
html[data-theme=light] .exreg-drop{box-shadow:0 14px 34px rgba(40,55,70,.2),inset 0 0 0 1px rgba(255,255,255,.55)}
/* 인증 화면 사선 패널 */
html[data-theme=light] .auth .diag{background:linear-gradient(115deg,transparent 52%,rgba(210,220,230,.5) 52%)}
html[data-theme=light] .legal-consent{background:color-mix(in srgb,var(--surface2) 90%,#fff)}
html[data-theme=light] .legal-doc-wrap,html[data-theme=light] .legal-doc-frame{background:#F4F6F9}
/* 피드백 답변 상태 — 토큰이 없는 보라만 라이트 대비 보정 */
html[data-theme=light] .fb-st.answer{color:#65449F;background:rgba(101,68,159,.12)}
html[data-theme=light] .fb-note.answer{background:rgba(101,68,159,.08)}
html[data-theme=light] .fb-note.answer b{color:#5C388F}
/* 테마 추가 요청 CTA — 다크 잉크 배경/크림 텍스트를 라이트 크림슨 틴트+잉크 텍스트로 (크림슨 액센트는 유지) */
html[data-theme=light] .tq-btn{background:#fff}

html[data-theme=light] .tq-tx small{color:rgba(20,27,35,.56)}
html[data-theme=light] .tq-code{color:#C40226}
/* NO HINT·HINT 배지 — 밝은 앰버 그라디언트로 라이트 모드에서도 선명하게. */
html[data-theme=light] .leftbadge.nohint{border-color:rgba(224,160,44,.55);box-shadow:0 2px 9px rgba(224,160,44,.28)}
html[data-theme=light] .leftbadge.nohint i{background:linear-gradient(135deg,#FFEAA8,#F6C049 60%,#EBA82C);color:#6A4700;text-shadow:0 1px 0 rgba(255,255,255,.42)}
html[data-theme=light] .leftbadge.hintcount{border-color:rgba(224,160,44,.55);box-shadow:0 2px 9px rgba(224,160,44,.28)}
html[data-theme=light] .leftbadge.hintcount i{background:linear-gradient(135deg,#FFEAA8,#F6C049 60%,#EBA82C);color:#6A4700;text-shadow:0 1px 0 rgba(255,255,255,.42)}
html[data-theme=light] .leftbadge.hintcount b{color:#8B5A00;background:rgba(246,192,73,.15)}
/* LEFT 배지 — 라이트에선 --success(#178A50 짙은 녹) 배경에 거의 검은 텍스트(#04160C)라 힌트 배지와 같은 칙칙함.
   밝은 민트→프레시그린 그라디언트 + 딥그린 각인 라벨 + 크림지 배경의 딥그린 모노 시간으로 라이트에 맞춘 스타일리쉬 그린 배지 (fb:ccd11b10) */
html[data-theme=light] .leftbadge{border-color:rgba(52,176,110,.5);box-shadow:0 2px 9px rgba(52,176,110,.26)}
html[data-theme=light] .leftbadge i{background:linear-gradient(135deg,#BEF2D2,#5FCE90 60%,#34B06E);color:#0A5230;text-shadow:0 1px 0 rgba(255,255,255,.42)}
html[data-theme=light] .leftbadge b{color:#0F7A45;background:rgba(95,206,144,.14)}
/* 솔리드 골드 버튼 — 라이트에선 --gold 가 어두운 머스터드(#A97D0E)로 재정의돼 근검정 텍스트(#08090B)와 겹쳐
   "약간 누런 어두운" 칙칙한 버튼이 됐다. 밝은 앰버 그라디언트 + 딥골드 각인 텍스트(+흰 하이라이트) + 은은한
   골든 글로우로 라이트에 맞춘 화사한 골드 버튼 — 일괄 추가(.btn.gold)·친구 요청(.pill.gold)·예약(.bookbtn).
   상세 리뷰 쓰기(.c.primary)는 2026-09-29 붉은 렌즈로 옮겨 제외 (fb:fb468b15) */
html[data-theme=light] .btn.gold,
html[data-theme=light] .bookbtn{background:linear-gradient(135deg,#FFDD82,#F6C049 55%,#EDAB2E);color:#5A3D00;border-color:transparent;text-shadow:0 1px 0 rgba(255,255,255,.42);box-shadow:0 2px 10px rgba(224,160,44,.28)}
html[data-theme=light] .btn.gold:hover,
html[data-theme=light] .bookbtn:hover{box-shadow:0 6px 20px rgba(224,160,44,.42)}
/* 운영자 딱지 — 라이트에선 --gold(어두운 머스터드) 배경에 근검정 텍스트라 칙칙했다. HINT 배지와 같은 밝은 앰버 그라디언트+딥골드 각인으로 화사하게 (fb:e062c88f) */
html[data-theme=light] .opbadge{background:linear-gradient(135deg,#FFEAA8,#F6C049 60%,#EBA82C);color:#6A4700;text-shadow:0 1px 0 rgba(255,255,255,.42)}
/* 예약 오픈 리드아웃 — 단계 색 틴트는 토큰 기반 기본 규칙이 라이트에서도 그대로 맞는다 */
html[data-theme=light] .bookopen.live .bo-copy b{color:var(--text)}
html[data-theme=light] .ropen{border-color:rgba(11,156,143,.32);background:linear-gradient(100deg,rgba(43,201,184,.16),rgba(43,201,184,.035));box-shadow:0 2px 10px rgba(11,156,143,.10)}
html[data-theme=light] .ropen .ro-ico{background:rgba(43,201,184,.16)}
html[data-theme=light] .ropen.ro-near{border-color:rgba(224,160,44,.42);background:linear-gradient(100deg,rgba(255,221,130,.30),rgba(255,221,130,.06));box-shadow:0 2px 12px rgba(224,160,44,.18)}
html[data-theme=light] .ropen.ro-soon{border-color:rgba(217,106,27,.42);background:linear-gradient(100deg,rgba(255,178,97,.28),rgba(255,178,97,.06));box-shadow:0 2px 12px rgba(217,106,27,.18)}
html[data-theme=light] .ropen.ro-hot{border-color:rgba(196,2,38,.42);background:linear-gradient(100deg,rgba(255,232,236,.9),rgba(255,244,246,.42));box-shadow:0 2px 14px rgba(196,2,38,.18)}
html[data-theme=light] .ropen.ro-open{border-color:rgba(20,155,109,.36);background:linear-gradient(100deg,rgba(187,247,217,.72),rgba(236,253,245,.42));box-shadow:0 2px 12px rgba(20,155,109,.16)}
html[data-theme=light] .ropen.ro-near .ro-ico{background:rgba(255,221,130,.30)}
html[data-theme=light] .ropen.ro-soon .ro-ico{background:rgba(255,178,97,.28)}
html[data-theme=light] .ropen.ro-hot .ro-ico{background:rgba(255,232,236,.9)}
html[data-theme=light] .ropen.ro-open .ro-ico{background:rgba(187,247,217,.72)}
html[data-theme=light] .ro-mini{--ro-c:#76694C;--ro-on:#fff;--ro-bg:linear-gradient(180deg,rgba(255,255,255,.72),color-mix(in srgb,var(--ro-c) 9%,rgba(255,255,255,.3)));--ro-rim:linear-gradient(180deg,color-mix(in srgb,var(--ro-c) 30%,#fff),color-mix(in srgb,var(--ro-c) 32%,transparent) 55%,color-mix(in srgb,var(--ro-c) 58%,transparent))}
html[data-theme=light] .ro-mini.ro-near{--ro-c:#8C660C}
html[data-theme=light] .ro-mini.ro-soon{--ro-c:#B5540E}
html[data-theme=light] .ro-mini.ro-hot{--ro-c:#C40226}
html[data-theme=light] .ro-mini.rv-old{background:rgba(43,201,184,.12);border-color:rgba(11,156,143,.32)}
html[data-theme=light] .ro-mini.rv-old.ro-near{background:rgba(255,221,130,.26);border-color:rgba(224,160,44,.38)}
html[data-theme=light] .ro-mini.rv-old.ro-soon{background:rgba(255,178,97,.24);border-color:rgba(217,106,27,.38)}
html[data-theme=light] .ro-mini.rv-old.ro-hot{background:rgba(255,232,236,.85);border-color:rgba(196,2,38,.42)}
html[data-theme=light] .ro-panels{background:linear-gradient(135deg,rgba(20,30,42,.035),rgba(20,30,42,.01))}

/* 라이트↔다크 전환 순간만 전 요소 색 트랜지션 — app.js 가 html 에 .theme-anim 을 ~0.5s 부여.
   상시 켜두면 뷰 전환·시트 연출과 간섭하므로 전환 창에만 적용 (reduced-motion 은 즉시 전환) */
@media (prefers-reduced-motion:no-preference){
  html.theme-anim body,html.theme-anim body *{transition:background-color .38s ease,color .38s ease,border-color .38s ease,fill .38s ease,stroke .38s ease,box-shadow .38s ease!important}
}
/* 절전·접근성 — 시스템 '애니메이션 최소화'(prefers-reduced-motion:reduce) 시 상시 반복 장식 애니메이션 정지.
   box-shadow·text-shadow 를 매 프레임 리페인트하던 글로우/펄스(duePulse·calPlanGlow 등)를 멈춰 화면 켜짐
   중 CPU/GPU 부하를 줄인다. 기본 사용자에겐 영향 없음(안드로이드는 접근성 '애니메이션 제거'에 매핑). */
@media (prefers-reduced-motion:reduce){
  .planbadge.due,.dbadge.dd0,.planbadge.dd0,
  .cal-stage .thumb.plan,.cal-stage .pent.plan,.cal-stage .thumb.revisit,.cal-stage .pent.revisit,.themesentinel.loading,.p5c-scan,
  .kh-spin svg,.ptrchip.spin svg,.ptrchip.tabload,.ddaybar .db-title.mq .db-tin{animation:none!important}
  .ddaybar .db-title.mq .db-tin{will-change:auto}
  .toast{transition:none}
}

/* ===== 유용한 기능 · 연방 짜기 ===== */
.util-entry-wrap{padding:14px 18px 0}
.util-entry{width:100%;min-height:82px;display:flex;align-items:center;gap:13px;padding:14px 15px;text-align:left;color:var(--text);position:relative;overflow:hidden;border:1px solid var(--border);background:linear-gradient(112deg,rgba(228,3,43,.075),var(--surface) 46%,var(--surface))}
.util-entry::before{content:"";position:absolute;left:0;top:15px;bottom:15px;width:2px;background:var(--p5)}.util-entry::after{content:"";position:absolute;right:-40px;top:-51px;width:112px;height:112px;border:1px solid rgba(228,3,43,.14);transform:rotate(45deg);pointer-events:none}
.util-entry-ic{width:44px;height:44px;display:grid;place-items:center;flex:none;color:var(--paper);background:linear-gradient(145deg,var(--p5),#92001f);clip-path:polygon(0 0,calc(100% - 9px) 0,100% 9px,100% 100%,9px 100%,0 calc(100% - 9px))}.util-entry-ic svg{width:22px;height:22px}
.util-entry-tx{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.util-entry-tx i{font-family:var(--fe);font-style:normal;font-size:8px;letter-spacing:.19em;color:var(--p5);font-weight:900;text-transform:uppercase}.util-entry-tx b{font-size:16px;font-weight:900}.util-entry-tx small{font-size:11px;color:var(--muted);line-height:1.35}.util-entry-go{color:var(--p5);display:grid;place-items:center}.util-entry-go svg{width:18px}
.tools-scroll{padding:6px 18px 36px}.tools-catalog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:24px 4px 10px}.tools-catalog-head b{font-size:13.5px;font-weight:800;letter-spacing:-.015em}.tools-grid{display:grid;gap:10px}
.tool-card{width:100%;min-height:78px;display:grid;grid-template-columns:44px minmax(0,1fr) 16px;align-items:center;gap:14px;padding:14px 14px 14px 15px;color:var(--text);text-align:left;text-decoration:none;border:1px solid var(--border);border-radius:16px;background:var(--surface);transition:border-color .16s,scale .2s var(--ease-press)}.tool-card:active{scale:.99}@media(hover:hover){.tool-card:hover{border-color:var(--glass-line-hi)}}.tool-card:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.tool-card-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--tag-bg);color:var(--text)}.tool-card-icon svg{width:22px;height:22px;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.tool-card-icon svg[viewBox="0 0 48 48"]{width:26px;height:26px;stroke-width:2.6}.tool-card-icon .fed-icon-route{opacity:.62}.tool-card-body{display:flex;flex-direction:column;gap:3px;min-width:0}.tool-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}.tool-card-body b{font-size:15.5px;font-weight:800;letter-spacing:-.02em;line-height:1.3;word-break:keep-all}.tool-card-body small{font-size:12px;line-height:1.45;color:var(--muted);word-break:keep-all}.tool-tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-style:normal;font-weight:700;letter-spacing:-.01em;white-space:nowrap}.tool-card-go{display:grid;place-items:center;color:var(--faint)}.tool-card-go svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.theme-add-tool-card .tool-card-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2}.theme-add-sheet .sh-body{padding-bottom:24px}.theme-add-sheet #taSave{margin-top:8px}
.theme-add-store-field{position:relative}.theme-add-store-results{max-height:242px;overflow:auto;margin-top:7px;border:1px solid var(--border);border-radius:13px;background:var(--surface2)}.theme-add-store-results[hidden],.theme-add-store-picked[hidden]{display:none}.theme-add-store-results>p{padding:18px 12px;text-align:center;color:var(--muted);font-size:10px}.theme-add-store-result,.theme-add-store-new{width:100%;min-height:54px;display:grid;grid-template-columns:minmax(0,1fr) 18px;align-items:center;gap:9px;padding:9px 12px;color:var(--text);text-align:left}.theme-add-store-result+.theme-add-store-result,.theme-add-store-new{border-top:1px solid var(--hairline)}.theme-add-store-result>span,.theme-add-store-new>span{min-width:0}.theme-add-store-result b,.theme-add-store-result small,.theme-add-store-new b,.theme-add-store-new small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-add-store-result b,.theme-add-store-new b{font-size:11px}.theme-add-store-result small,.theme-add-store-new small{margin-top:3px;color:var(--muted);font-size:9px}.theme-add-store-result>svg{width:15px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.theme-add-store-new{position:sticky;bottom:0;z-index:1;grid-template-columns:24px minmax(0,1fr);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface2))}.theme-add-store-new>svg{width:18px;fill:none;stroke:currentColor;stroke-width:2}.theme-add-store-new small{color:var(--muted)}.theme-add-store-picked{min-height:46px;display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:9px;margin-top:7px;padding:8px 11px;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--accent) 6%,var(--surface2));color:var(--accent)}.theme-add-store-picked>svg{width:17px;fill:none;stroke:currentColor;stroke-width:2.2}.theme-add-store-picked b,.theme-add-store-picked small{display:block}.theme-add-store-picked b{font-size:9px}.theme-add-store-picked small{margin-top:2px;color:var(--text);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-add-sheet select:disabled{opacity:.68}
html[data-theme=light] .tool-card,html[data-theme=light] .theme-add-tool-card,html[data-theme=light] .series-tool-card{box-shadow:0 1px 2px rgba(45,60,78,.06)}
.tools-catalog-head.master{margin-top:8px}.master-history-card .tool-card-icon svg{width:21px;height:21px}
.recruit-tool-card{background:linear-gradient(118deg,var(--surface),var(--surface) 58%,rgba(63,224,208,.075))}.recruit-tool-card::before{background:var(--accent)}.recruit-tool-card::after{border-color:rgba(63,224,208,.18)}
.recruit-tool-card .tool-card-icon{color:#06110f;background:linear-gradient(145deg,#77F7E2,#AFFF6A)}.recruit-tool-card .tool-card-icon svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.7}.recruit-tool-card .tool-card-body i{color:var(--accent)}.recruit-tool-card .tool-card-go{color:var(--accent);border-color:rgba(63,224,208,.35);background:rgba(63,224,208,.06)}

html[data-theme=light] .theme-series,html[data-theme=light] .series-list-pane,html[data-theme=light] .series-editor-pane,html[data-theme=light] .series-add-panel,html[data-theme=light] .series-order-panel{box-shadow:0 8px 22px rgba(45,60,78,.07)}
html[data-theme=light] .series-section-title strong{color:#8A6100}html[data-theme=light] .series-tool-card .tool-card-body i,html[data-theme=light] .series-tool-card .tool-card-go{color:#8A6100}
html[data-theme=light] .series-editor-theme select{color-scheme:light}
html[data-theme=light] .series-step-no{color:#FFF}

/* 취소표 알리미 — 기존 빠른 갱신 캐시를 구독하는 1회성 알림 */
.cancel-tool-card .tool-card-icon svg{width:22px;height:22px}

/* 시리즈 정보 편집 — 실제 테마 검색 + 단계/병렬 묶음 편집 */
.series-tool-card .tool-card-icon svg{width:21px;height:21px}
.series-scroll{padding:0 18px 40px}.series-intro{min-height:164px;display:grid;grid-template-columns:minmax(0,1fr) 64px;align-items:center;gap:18px;padding:24px 2px;border-bottom:1px solid var(--hairline);position:relative}.series-intro::after{content:"";position:absolute;left:0;bottom:-1px;width:54px;height:2px;background:var(--gold)}.series-intro h1{margin:0 0 10px;font-size:27px;line-height:1.14;letter-spacing:-.045em}.series-intro p{max-width:520px;color:var(--muted);font-size:11px;line-height:1.6;word-break:keep-all}.series-intro>span{width:64px;height:64px;display:grid;place-items:center;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 34%,var(--border));background:linear-gradient(145deg,color-mix(in srgb,var(--gold) 11%,var(--surface2)),var(--surface));clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px))}.series-intro>span svg{width:31px;height:31px;fill:none;stroke:currentColor;stroke-width:1.7}
.series-workspace{margin-top:18px}.series-list-pane,.series-editor-pane{min-width:0;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.series-pane-head{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border)}.series-pane-head>div{display:flex;align-items:center;gap:7px}.series-pane-head b{font-size:13px}.series-pane-head>div span{min-width:22px;height:22px;display:grid;place-items:center;padding:0 7px;border-radius:999px;background:var(--tag-bg);color:var(--muted);font-family:var(--fn);font-size:11px}.series-pane-head>button{height:36px;display:flex;align-items:center;gap:5px;padding:0 13px;color:#fff;font-size:12px;font-weight:900;background:var(--lens);box-shadow:var(--lens-sh)}.series-pane-head>button svg{width:14px;fill:none;stroke:currentColor;stroke-width:2.2}.series-list{padding:7px}.series-list-row{width:100%;min-height:62px;display:grid;grid-template-columns:minmax(0,1fr) 18px;align-items:center;gap:8px;padding:10px;text-align:left;border:1px solid transparent;border-bottom-color:var(--hairline);border-radius:12px}.series-list-row:last-child{border-bottom-color:transparent}.series-list-row.on{border-color:color-mix(in srgb,var(--p5) 40%,var(--border));background:color-mix(in srgb,var(--p5) 9%,var(--surface2))}.series-list-row>span{min-width:0;display:flex;flex-direction:column;gap:4px}.series-list-row b,.series-list-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-list-row b{font-size:13px}.series-list-row small{color:var(--faint);font-size:11px}.series-list-row>svg{width:15px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.series-empty,.series-editor-empty{min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px}.series-empty>span,.series-editor-empty>span{width:50px;height:50px;display:grid;place-items:center;margin-bottom:12px;border-radius:50%;background:var(--tag-bg);color:var(--muted)}.series-empty svg,.series-editor-empty svg{width:25px;fill:none;stroke:currentColor}.series-empty b,.series-editor-empty b{font-size:13px}.series-empty p,.series-editor-empty p{max-width:300px;margin:7px 0 14px;color:var(--faint);font-size:12px;line-height:1.5}
.series-editor-pane{display:none;overflow:hidden}.series-workspace.editing .series-list-pane{display:none}.series-workspace.editing .series-editor-pane{display:block}.series-editor-head{min-height:78px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;padding:13px 14px;border-bottom:1px solid var(--border);background:linear-gradient(112deg,color-mix(in srgb,var(--gold) 6%,var(--surface2)),var(--surface))}.series-editor-head h2{margin:0;font-size:18px;letter-spacing:-.035em}.series-editor-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.series-mobile-list{height:32px;display:flex;align-items:center;gap:4px;padding:0 12px 0 9px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}.series-mobile-list svg{width:14px;fill:none;stroke:currentColor;stroke-width:2}.series-editor-scroll{padding:15px}.series-name-field{display:block}.series-name-field>span{display:block;margin:0 0 7px 2px;color:var(--muted);font-size:12px;font-weight:900}.series-add-panel,.series-order-panel{margin-top:16px;padding:13px;border:1px solid var(--border);border-radius:16px;background:var(--bg2)}.series-add-panel>div:first-child{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.series-add-panel>div:first-child b{font-size:13px}.series-add-panel>div:first-child span{color:var(--faint);font-size:11px}.series-searchbox{height:44px;display:grid;grid-template-columns:20px minmax(0,1fr) 30px;align-items:center;gap:6px;padding:0 7px 0 11px;border:1px solid var(--border);background:var(--surface2)}.series-searchbox:focus-within{border-color:var(--focus)}.series-searchbox>svg{width:16px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.series-searchbox input{min-width:0;height:100%;padding:0;border:0;outline:0;color:var(--text);background:transparent;font-size:12px}.series-searchbox input::placeholder{color:var(--faint)}.series-searchbox button{width:30px;height:30px;display:grid;place-items:center;color:var(--faint)}.series-searchbox button svg{width:13px;fill:none;stroke:currentColor}.series-search-results{max-height:260px;overflow-y:auto}.series-search-result{width:100%;min-height:58px;display:grid;grid-template-columns:38px minmax(0,1fr) 28px;align-items:center;gap:9px;padding:7px 5px;text-align:left;border-bottom:1px solid var(--hairline)}.series-search-result>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:2px}.series-search-result b,.series-search-result small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-search-result b{font-size:12.5px}.series-search-result small{color:var(--muted);font-size:11px}.series-search-result i{width:28px;height:28px;display:grid;place-items:center;color:var(--text);font-style:normal;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}.series-search-result i svg{width:13px;fill:none;stroke:currentColor;stroke-width:2}.series-search-poster{width:38px;height:44px;display:grid;place-items:center;overflow:hidden;background-size:cover!important;background-position:center!important}.series-search-poster .ph{font-size:12px;color:var(--faint)}.series-search-state{padding:15px 4px;color:var(--faint);font-size:11.5px;text-align:center}
.series-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.series-section-title b{font-size:13px}.series-section-title p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.45}.series-section-title strong{color:var(--text)}.series-section-title>span{min-width:26px;height:26px;display:grid;place-items:center;padding:0 8px;border-radius:999px;color:var(--muted);font-family:var(--fn);font-size:11px;background:var(--tag-bg)}.series-order-empty{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px dashed var(--border);border-radius:12px}.series-order-empty>span{color:var(--faint)}.series-order-empty>span svg{width:24px;fill:none;stroke:currentColor}.series-order-empty b{margin-top:7px;font-size:12.5px}.series-order-empty p{margin:4px 12px;color:var(--faint);font-size:11px;line-height:1.4}.series-order-flow{display:flex;flex-direction:column;gap:8px}.series-editor-step{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}.series-editor-step>header{min-height:45px;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px;padding:7px 9px;border-bottom:1px solid var(--hairline)}.series-editor-step>header>span{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;color:var(--text);font-family:var(--fn);font-size:12px;font-weight:900;background:var(--tag-bg)}.series-editor-step>header>span svg{width:15px;fill:none;stroke:currentColor}.series-editor-step>header>div{display:flex;flex-direction:column;gap:2px}.series-editor-step>header b{font-size:12.5px}.series-editor-step>header small{color:var(--faint);font-size:11px}.series-editor-step.unordered{margin-top:9px}.series-editor-step.unordered>header>span{color:var(--muted);background:var(--tag-bg)}.series-editor-theme{min-height:64px;display:grid;grid-template-columns:38px minmax(0,1fr) 86px 28px;align-items:center;gap:7px;padding:7px 8px;border-bottom:1px solid var(--hairline)}.series-editor-theme:last-child{border-bottom:0}.series-editor-poster{width:38px;height:48px;display:grid;place-items:center;overflow:hidden;background-size:cover!important;background-position:center!important}.series-editor-poster .ph{font-size:12px;color:var(--faint)}.series-editor-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.series-editor-copy b,.series-editor-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-editor-copy b{font-size:12.5px}.series-editor-copy small{color:var(--faint);font-size:11px}.series-editor-theme select{width:86px;height:34px;padding:0 20px 0 8px;color:var(--text);font-size:11px;font-weight:800;border:1px solid var(--border);border-radius:0;background:var(--surface2);outline:0}.series-editor-theme select:focus{border-color:var(--p5)}.series-editor-remove{width:28px;height:28px;display:grid;place-items:center;color:var(--faint)}.series-editor-remove:hover{color:var(--danger)}.series-editor-remove svg{width:13px;fill:none;stroke:currentColor;stroke-width:2}.series-savebar{position:sticky;bottom:0;z-index:3;display:grid;grid-template-columns:auto minmax(180px,1fr);align-items:center;gap:10px;padding:10px 13px;border-top:1px solid var(--border);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(14px)}.series-savebar .btn{height:46px}.series-delete{height:40px;display:flex;align-items:center;gap:5px;padding:0 9px;color:var(--danger);font-size:12px;font-weight:900;border:1px solid color-mix(in srgb,var(--danger) 28%,var(--border))}.series-delete svg{width:14px;fill:none;stroke:currentColor;stroke-width:2}
.cancel-scroll{padding:8px 18px 44px}.cancel-hero{margin:0}
.cancel-notice{margin-top:10px}.cancel-notice>.pill{flex:none}
.cancel-list-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 2px 10px}.cancel-list-head>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;min-width:0}.cancel-list-head b{font-size:15px;font-weight:800}.cancel-list-head>div span{font-size:12px;color:var(--muted)}.cancel-list-head>.pill{gap:5px;flex:none}.cancel-list-head>.pill svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2}
.cancel-alert-list{display:flex;flex-direction:column;gap:12px}.cancel-track-card{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.cancel-track-card>header{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px}.cancel-track-poster{width:48px;height:64px;display:grid;place-items:center;overflow:hidden;border-radius:8px;background-size:cover!important;background-position:center!important}.cancel-track-card>header>div{min-width:0;display:flex;flex-direction:column;gap:2px}.cancel-track-card>header>div>b,.cancel-track-card>header>div>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cancel-track-card>header>div>b{font-size:14.5px;font-weight:800}.cancel-track-card>header>div>span{color:var(--muted);font-size:12px}.cancel-track-card>header>div>small{margin-top:3px;color:var(--muted);font-family:var(--fn);font-size:11px}.cancel-track-card>header>button{align-self:start;min-height:30px;padding:0 11px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:11.5px;font-weight:700;white-space:nowrap}.cancel-track-days{border-top:1px solid var(--hairline);padding:2px 12px}.cancel-track-day{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--hairline)}.cancel-track-day:last-child{border-bottom:none}.cancel-track-date{display:flex;flex-direction:column;gap:1px}.cancel-track-date b{font-family:var(--fn);font-size:13px}.cancel-track-date span{color:var(--muted);font-size:11px}.cancel-track-slots{display:flex;flex-wrap:wrap;gap:6px}.cancel-track-slots button{min-height:32px;display:flex;align-items:center;gap:6px;padding:0 9px 0 11px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.cancel-track-slots b{font-family:var(--fn);font-size:12.5px}.cancel-track-slots svg{width:11px;height:11px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2.2}.cancel-track-card>footer{padding:9px 12px 10px;border-top:1px solid var(--hairline);color:var(--muted);font-size:11px;line-height:1.4}.cancel-empty{margin-top:12px;padding:34px 20px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.cancel-empty>.ic{width:56px;height:56px;display:grid;place-items:center;margin:0 auto 14px;border-radius:50%;background:var(--tag-bg);color:var(--muted);opacity:1}.cancel-empty>.ic svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.7}.cancel-empty .ttl{color:var(--text)}.cancel-empty .btn{width:auto;min-width:150px;margin:16px auto 0;padding:0 22px}
.cancel-add-sheet .sh-body{padding:10px 16px 22px}.cancel-add-lead{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:10px;margin:2px 2px 10px}.cancel-add-lead>span{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--tag-bg);color:var(--text);font-family:var(--fn);font-size:12px;font-weight:800}.cancel-add-lead b{display:block;font-size:14px;font-weight:800}.cancel-add-lead p{margin-top:2px;color:var(--muted);font-size:12px;line-height:1.4}.cancel-add-lead.compact{margin:16px 2px 10px}.cancel-theme-search{position:relative}.cancel-theme-search>span{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--faint);display:grid}.cancel-theme-search svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}.cancel-theme-search .input{height:46px;padding-left:40px}.cancel-theme-list{display:flex;flex-direction:column;gap:8px;max-height:calc(78vh - 210px);overflow-y:auto;margin-top:10px;padding-bottom:2px}.cancel-theme-pick{min-height:80px;display:grid;grid-template-columns:48px minmax(0,1fr) 16px;align-items:center;gap:12px;padding:8px 12px 8px 8px;text-align:left;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);transition:border-color .15s,scale .2s var(--ease-press)}.cancel-theme-pick:active{scale:.99}.cancel-theme-poster{width:48px;height:62px;display:grid;place-items:center;overflow:hidden;border-radius:8px;background-size:cover!important;background-position:center!important}.cancel-theme-pick>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:3px}.cancel-theme-pick b,.cancel-theme-pick small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cancel-theme-pick b{font-size:13.5px}.cancel-theme-pick small{font-size:11.5px;color:var(--muted)}.cancel-theme-pick em{margin-top:2px;font-size:11px;font-style:normal;font-weight:700;color:var(--muted)}.cancel-theme-pick>svg{width:16px;height:16px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.cancel-selected-theme{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.cancel-selected-theme .cancel-theme-poster{width:48px;height:64px}.cancel-selected-theme>div{min-width:0;display:flex;flex-direction:column;gap:2px}.cancel-selected-theme b,.cancel-selected-theme span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cancel-selected-theme b{font-size:14px;font-weight:800}.cancel-selected-theme span{color:var(--muted);font-size:12px}.cancel-selected-theme small{margin-top:3px;color:var(--muted);font-size:11px}.cancel-selected-theme>button{min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:700;white-space:nowrap}.cancel-time-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.cancel-time-chips>button{min-height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.cancel-time-chips b{font-family:var(--fn);font-size:13px}.cancel-time-chips small{font-size:11px;color:var(--muted)}.cancel-time-chips>button.on{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.cancel-time-chips>button.on small{color:rgba(255,255,255,.86)}.cancel-time-chips>button.open{opacity:.4}.cancel-time-chips>button.tracked{opacity:.55}.cancel-time-manual{display:grid;grid-template-columns:minmax(0,1fr) 96px 56px;align-items:center;gap:6px;margin-top:12px}.cancel-time-manual label{grid-column:1/-1;font-size:12px;font-weight:700;color:var(--muted)}.cancel-time-manual .input{height:40px;padding:0 10px;font-size:14px}.cancel-time-manual button{height:40px;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12.5px;font-weight:700}.cancel-mini-empty{padding:16px 12px;border-radius:12px;background:var(--matte-tint);color:var(--muted);font-size:12px;text-align:center}.cancel-add-summary{position:sticky;z-index:4;bottom:-22px;display:grid;grid-template-columns:minmax(0,1fr) 120px;align-items:center;gap:10px;margin:12px -16px 0;padding:18px 16px 14px;background:linear-gradient(180deg,transparent,var(--bg2) 28%)}.cancel-add-summary>div{display:flex;flex-direction:column;gap:2px;min-width:0}.cancel-add-summary b{font-size:13px;font-weight:800}.cancel-add-summary small{color:var(--muted);font-size:11px}.cancel-add-summary .btn{width:120px;height:46px}.cancel-add-summary .btn.p:disabled{opacity:1;color:var(--muted);border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}.cancel-sheet-note{margin:4px 0 10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--warning);font-size:12px;line-height:1.45}
.cancel-theme-pick:disabled{opacity:.45;pointer-events:none}
.cancel-theme-more{grid-column:1/-1;padding:10px 0 14px}.cancel-theme-list>.kh-spin,.cancel-theme-list>.cancel-mini-empty{grid-column:1/-1}
/* 오픈룸 취소표 인원 기준 — 남은 매수가 기준보다 적은 회차는 선택 가능하게 구분한다. */
.cancel-track-slots small{padding-left:6px;border-left:1px solid var(--hairline);font-size:11px;color:var(--muted)}
.cancel-people{margin-top:10px;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.cancel-people>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.cancel-people b{font-size:13.5px;font-weight:800;white-space:nowrap}.cancel-people span{color:var(--muted);font-size:11.5px;text-align:right}.cancel-people>div:last-child{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:6px}.cancel-people button{height:38px;border-radius:10px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:12.5px;font-weight:700}.cancel-people button.on{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.cancel-time-chips>button.low{border-color:color-mix(in srgb,var(--warning) 40%,var(--glass-line))}.cancel-time-chips>button.low small{color:var(--warning)}
html[data-theme=light] .cancel-track-card,html[data-theme=light] .cancel-selected-theme,html[data-theme=light] .cancel-people,html[data-theme=light] .cancel-empty{box-shadow:0 1px 2px rgba(45,60,78,.06)}
html[data-theme=light] .cancel-theme-pick,html[data-theme=light] .keq-store-list>button{box-shadow:0 1px 2px rgba(45,60,78,.05)}
@media(max-width:359px){.cancel-track-card>header{grid-template-columns:42px minmax(0,1fr) auto}.cancel-track-poster{width:42px;height:56px}.cancel-time-chips{grid-template-columns:repeat(2,1fr)}.cancel-time-manual{grid-template-columns:minmax(0,1fr) 84px 52px}.cancel-add-summary{grid-template-columns:minmax(0,1fr) 108px}.cancel-add-summary .btn{width:108px}}

/* 키이스케이프 예약 도우미 — 취소표 시트의 테마·회차 부품을 공유한다. */
.keq-guide{margin:2px 0 12px;padding:12px 14px;border-radius:12px;background:var(--matte-tint)}
.keq-guide>b{display:block;margin-bottom:4px;font-size:12.5px;font-weight:800}.keq-guide p{margin:0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}
.keq-store-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.keq-store-list>button{min-height:56px;display:grid;grid-template-columns:minmax(0,1fr) 16px;align-items:center;gap:10px;padding:10px 12px 10px 14px;text-align:left;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);transition:scale .2s var(--ease-press)}.keq-store-list>button:active{scale:.99}
.keq-store-list>button>span{min-width:0;display:flex;flex-direction:column;gap:3px}.keq-store-list b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.keq-store-list small{color:var(--muted);font-size:11.5px}.keq-store-list>button>svg{width:16px;height:16px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}
.keq-crumb{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:9px 12px 9px 9px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.keq-crumb .iconbtn{width:34px;height:34px}.keq-crumb>div{min-width:0;display:flex;flex-direction:column;gap:2px}.keq-crumb b,.keq-crumb small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.keq-crumb b{font-size:14px}.keq-crumb small{color:var(--muted);font-size:11.5px}
.keq-date-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.keq-date-grid>button{min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:10px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.keq-date-grid b{font-family:var(--fn);font-size:12.5px}.keq-date-grid small{font-size:11px;color:var(--muted)}.keq-date-grid>button.wknd small{color:var(--danger)}
.keq-fetched{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:11px}.keq-fetched span{min-width:0;line-height:1.45}.keq-fetched button{min-height:30px;flex:none;padding:0 12px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:700}.keq-sheet .cancel-time-chips{margin-top:2px}
html[data-theme=light] .keq-crumb{box-shadow:0 1px 2px rgba(45,60,78,.06)}
@media(max-width:359px){.keq-date-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* 관리자 · 구인 스케줄 PNG — 편집 UI는 기기 폭에 적응, 캔버스 산출물은 폭 2160px·세로 가변 */
.recruit-scroll{padding:0 18px 48px}.recruit-intro{display:grid;grid-template-columns:minmax(0,1fr) 76px;gap:18px;align-items:end;padding:27px 2px 24px;position:relative;border-bottom:1px solid var(--hairline)}
.recruit-intro>div>i{font-size:12px;font-style:normal;font-weight:800;color:var(--muted)}.recruit-intro h2{margin:8px 0 9px;font-size:29px;line-height:1.08;letter-spacing:-.045em}.recruit-intro p{max-width:530px;color:var(--muted);font-size:11.5px;line-height:1.55;word-break:keep-all}
.recruit-intro>span{align-self:center;padding:10px 8px;text-align:center;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--muted);font-size:11px;font-weight:800;line-height:1.5}
.recruit-toolbar{display:flex;align-items:center;gap:7px;padding:15px 0 13px}.recruit-toolbar button{min-height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}.recruit-toolbar button:active{scale:.96}.recruit-toolbar em{margin-left:auto;color:var(--faint);font-size:11px;font-style:normal}
.recruit-builder{display:grid;gap:17px}.recruit-editor{min-width:0}.recruit-panel,.recruit-session,.recruit-preview-panel{border:1px solid var(--border);border-radius:16px;background:var(--surface)}.recruit-panel{padding:15px}
.recruit-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:13px}.recruit-section-head>span{display:flex;align-items:center;gap:8px}.recruit-section-head i{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--tag-bg);color:var(--muted);font-family:var(--fn);font-size:11px;font-style:normal}.recruit-section-head b{font-size:14px}.recruit-section-head small{color:var(--faint);font-size:11px;text-align:right}.recruit-section-head.schedule{margin:19px 2px 10px}
.recruit-style-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:14px}.recruit-style-picker>button{min-width:0;height:55px;display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);text-align:left;transition:border-color .15s,background .15s,transform .1s}.recruit-style-picker>button:active{transform:scale(.985)}.recruit-style-picker>button.on{border-color:color-mix(in srgb,var(--p5) 60%,transparent);background:color-mix(in srgb,var(--p5) 12%,var(--surface2));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--p5) 30%,transparent)}.recruit-style-picker>button>span:last-child{min-width:0;display:flex;flex-direction:column;gap:2px}.recruit-style-picker b{color:var(--text);font-size:12.5px}.recruit-style-picker small{overflow:hidden;color:var(--faint);font-size:11px;white-space:nowrap;text-overflow:ellipsis}.recruit-style-swatch{width:33px;height:39px;display:block;position:relative;flex:none;overflow:hidden;border:1px solid rgba(255,255,255,.18);border-radius:6px;background:#F2EEE4}.recruit-style-swatch i{position:absolute;display:block}.recruit-style-editorial .recruit-style-swatch{background:#F2EEE4}.recruit-style-editorial .recruit-style-swatch i{left:7px;right:7px;top:8px;height:2px;background:#26302B;box-shadow:0 7px 0 #C35C4B,0 14px 0 #A9AEA7}.recruit-style-bold .recruit-style-swatch{background:linear-gradient(180deg,#2646B7 0 46%,#F5F0E5 46%)}.recruit-style-bold .recruit-style-swatch i{left:0;bottom:0;width:10px;height:21px;background:#F05745}.recruit-style-ticket .recruit-style-swatch{background:#E7B956}.recruit-style-ticket .recruit-style-swatch::after{content:"";position:absolute;inset:6px 4px;border:1px dashed #6B4A29}.recruit-style-ticket .recruit-style-swatch i{left:-3px;top:15px;width:6px;height:6px;border-radius:50%;background:var(--surface2);box-shadow:33px 0 0 var(--surface2)}.recruit-style-signal .recruit-style-swatch{background-color:#071116;background-image:linear-gradient(rgba(113,246,223,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(113,246,223,.14) 1px,transparent 1px);background-size:8px 8px}.recruit-style-signal .recruit-style-swatch i{left:6px;top:7px;width:3px;height:25px;background:#71F6DF;box-shadow:8px 4px 0 #B6FF65}
.recruit-base-grid,.recruit-session-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.recruit-base-grid label,.recruit-session-grid label{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--muted);font-size:12px;font-weight:800}.recruit-base-grid label.wide,.recruit-session-grid label.wide{grid-column:1/-1}.recruit-base-grid label small,.recruit-session-grid label small{display:inline;color:var(--faint);font-size:11px;font-weight:500;letter-spacing:0}.recruit-base-grid .input,.recruit-session-grid .input{height:42px;padding:0 11px;border-radius:12px;background:var(--surface2);font-family:var(--fb);font-size:12px;letter-spacing:0}
.recruit-session-list{display:flex;flex-direction:column;gap:9px}.recruit-session{padding:13px;position:relative;overflow:visible;z-index:1}.recruit-session:focus-within{z-index:4}.recruit-session:nth-child(2){--rac:#B6FF65}.recruit-session:nth-child(3){--rac:#70AFFF}.recruit-session:nth-child(4){--rac:#C59BFF}.recruit-session:nth-child(5){--rac:#FF8FB8}.recruit-session:nth-child(6){--rac:#FFD06A}
.recruit-session>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;padding-bottom:9px;border-bottom:1px solid var(--hairline)}.recruit-session>header>span{display:flex;align-items:center;gap:7px}.recruit-session>header i{color:var(--muted);font-family:var(--fn);font-size:11px;font-style:normal}.recruit-session>header b{font-size:13px}.recruit-session>header>div{display:flex;gap:4px}.recruit-session>header button{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-family:var(--fn);font-size:11px}.recruit-session>header button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8}.recruit-session>header button.danger{color:var(--danger)}.recruit-session>header button:disabled{opacity:.25}
.recruit-theme-wrap{display:block;position:relative}.recruit-theme-wrap>.input{width:100%}.recruit-theme-drop{position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:20;max-height:286px;overflow:hidden auto;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:0 16px 36px rgba(0,0,0,.42);-webkit-overflow-scrolling:touch}.recruit-theme-drop[hidden]{display:none}.recruit-theme-drop .tdi{padding:7px 9px;color:var(--text)}.recruit-theme-drop .tdm .t{font-size:12px}.recruit-theme-drop .tdm .s{font-size:11px}.recruit-theme-search-state{display:block;padding:13px 11px;color:var(--faint);font-size:11.5px;font-weight:700;letter-spacing:0}html[data-theme=light] .recruit-theme-drop .tdi:hover,html[data-theme=light] .recruit-theme-drop .tdi:active{color:#F2F5F6}html[data-theme=light] .recruit-theme-drop .tdi:hover .s,html[data-theme=light] .recruit-theme-drop .tdi:active .s{color:#CED5D9}
.recruit-add{width:100%;height:44px;display:flex;align-items:center;justify-content:center;gap:7px;margin-top:9px;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12.5px;font-weight:850}.recruit-add svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.recruit-add:disabled{opacity:.35}
.recruit-preview-panel{padding:14px;min-width:0;background:var(--surface)}.recruit-canvas-frame{width:100%;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:#050A0E;box-shadow:0 15px 45px rgba(0,0,0,.28)}.recruit-canvas-frame canvas{display:block;width:100%;height:auto}.recruit-export{width:100%;height:46px;margin:12px 0 0;display:flex;align-items:center;justify-content:center;gap:8px}.recruit-export svg{width:17px}.recruit-preview-panel>p{margin:9px 2px 0;color:var(--faint);font-size:11px;line-height:1.45;text-align:center}
html[data-theme=light] .recruit-panel,html[data-theme=light] .recruit-session,html[data-theme=light] .recruit-preview-panel{box-shadow:0 8px 22px rgba(45,60,78,.07)}html[data-theme=light] .recruit-canvas-frame{box-shadow:0 16px 38px rgba(45,60,78,.18)}

.fed-tabs{margin:2px 18px 6px;position:relative;z-index:2}.fed-tabs.segctl>button{flex-direction:row;gap:7px;min-height:40px}.fed-tabs.segctl>button>span{width:20px;height:20px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--tag-bg);font-family:var(--fn);font-size:11px;font-weight:800;line-height:1}.fed-tabs.segctl>button.on>span{background:rgba(255,255,255,.22);color:#fff}.fed-tabs.segctl>button b{font-size:13px;font-weight:800}
.federation-scroll{padding:0 18px 116px}.fed-stage{padding:14px 0 22px}.fed-stage-intro{padding:4px 2px 14px}.fed-stage-intro h2{margin:0;font-size:20px;font-weight:800;letter-spacing:-.03em;line-height:1.3}.fed-stage-intro p{margin:5px 0 0;font-size:12.5px;line-height:1.5;color:var(--muted)}.fed-cap,.fed-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.fed-cap b{font-size:13.5px}.fed-cap span,.fed-section-head>span{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700;white-space:nowrap}
.fed-selected{padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.fed-selected-list{display:flex;gap:6px;overflow-x:auto;margin-top:10px;padding-bottom:2px;scrollbar-width:none}.fed-selected-list::-webkit-scrollbar{display:none}.fed-selected-list button{display:flex;align-items:center;gap:7px;flex:none;max-width:200px;height:36px;padding:0 11px 0 5px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12.5px;font-weight:700}.fed-selected-list button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed-selected-list button svg{width:12px;height:12px;flex:none;color:var(--faint);stroke:currentColor;fill:none;stroke-width:2.3}
.fed-rules-help{margin:-2px 0 12px;color:var(--muted);font-size:12px;line-height:1.5}.fed-rule-empty{display:flex;flex-direction:column;align-items:center;gap:3px;padding:16px 12px;border-radius:12px;background:var(--matte-tint);text-align:center}.fed-rule-empty b{font-size:12.5px}.fed-rule-empty span{font-size:11.5px;color:var(--muted)}.fed-rule-cards{display:flex;flex-direction:column;gap:8px}.fed-rule-card{position:relative;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint)}.fed-rule-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.fed-rule-card-head>span{display:flex;flex-direction:column;min-width:0}.fed-rule-card-head b{font-size:13px;font-weight:800}.fed-rule-card-head>div{display:flex;gap:6px}.fed-rule-card-head button{height:30px;min-width:34px;display:inline-flex;align-items:center;justify-content:center;padding:0 10px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:11.5px;font-weight:700}.fed-rule-card-head button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.fed-rule-path{display:flex;align-items:center;gap:6px;overflow-x:auto;margin-top:10px;padding:2px 0;scrollbar-width:none}.fed-rule-path::-webkit-scrollbar{display:none}.fed-rule-path>span{display:flex;align-items:center;gap:6px;flex:none;max-width:180px;padding:5px 9px;border-radius:8px;background:var(--tag-bg);font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fed-rule-path em{display:grid;place-items:center;flex:none;width:18px;height:18px;border-radius:50%;background:var(--text);color:var(--bg);font-family:var(--fn);font-style:normal;font-size:11px;font-weight:800}.fed-rule-arrow,.fed-rule-link{flex:none;color:var(--muted);font-style:normal;font-size:12px;font-weight:800}.fed-rule-card>p{margin-top:8px;color:var(--muted);font-size:11.5px;line-height:1.45}.fed-rule-adders{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.fed-rule-adders>button{min-height:64px;display:flex;align-items:center;gap:10px;padding:10px;text-align:left;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.fed-rule-adders>button:disabled{opacity:.4}.fed-rule-adders>button>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}.fed-rule-adders b{font-size:12.5px;font-weight:800;word-break:keep-all}.fed-rule-adders small{color:var(--muted);font-size:11px;line-height:1.35;word-break:keep-all}.fed-rule-glyph{width:34px;height:34px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--tag-bg);color:var(--text);font-family:var(--fn);font-size:11px;font-weight:800;letter-spacing:-.02em}@media(max-width:359px){.fed-rule-adders{grid-template-columns:1fr}}
.fed-rule-sheet .sh-body{padding-top:8px}.fed-rule-hero{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.fed-rule-hero>div{min-width:0}.fed-rule-hero b{font-size:13.5px;font-weight:800}.fed-rule-hero p{margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45}.fed-rule-route{margin-top:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.fed-rule-route.empty{display:flex;flex-direction:column;align-items:center;gap:3px;padding:18px 12px;text-align:center;background:var(--matte-tint)}.fed-rule-route.empty b{font-size:12.5px}.fed-rule-route.empty span{font-size:11.5px;color:var(--muted)}.fed-rule-route-cap,.fed-rule-picker-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.fed-rule-route-cap{margin-bottom:6px}.fed-rule-route-cap b{font-size:12.5px;font-weight:800}.fed-rule-route-cap span,.fed-rule-picker-head span{font-size:11px;color:var(--muted)}.fed-rule-route-row{min-height:44px;display:grid;grid-template-columns:24px minmax(0,1fr) 32px 32px 32px;align-items:center;gap:6px;border-top:1px solid var(--hairline)}.fed-rule-route-row:first-of-type{border-top:0}.fed-rule-route.adjacent .fed-rule-route-row{grid-template-columns:24px minmax(0,1fr) 32px}.fed-rule-route-row>em{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--text);color:var(--bg);font-family:var(--fn);font-size:11px;font-style:normal;font-weight:800}.fed-rule-route-row>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.fed-rule-route-row>button{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-family:var(--fn);font-size:17px}.fed-rule-route-row>button:disabled{opacity:.3}.fed-rule-route-row>button.del{color:var(--danger)}.fed-rule-route-row>button svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.2}.fed-rule-picker-head{margin:16px 2px 8px}.fed-rule-picker-head b{font-size:13px;font-weight:800}.fed-rule-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fed-rule-picker>button{min-width:0;min-height:58px;display:grid;grid-template-columns:24px minmax(0,1fr);grid-template-rows:auto auto;align-content:center;column-gap:8px;padding:8px 10px;text-align:left;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.fed-rule-picker>button>span{grid-row:1/3;align-self:center;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--tag-bg);color:var(--muted);font-family:var(--fn);font-size:11px;font-weight:800}.fed-rule-picker>button b,.fed-rule-picker>button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed-rule-picker>button b{font-size:12.5px}.fed-rule-picker>button small{font-size:11px;color:var(--muted)}.fed-rule-picker>button.on{border-color:color-mix(in srgb,var(--p5) 45%,transparent);background:color-mix(in srgb,var(--p5) 9%,var(--surface2))}.fed-rule-picker>button.on>span{background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.fed-rule-save{width:100%;margin-top:14px}.fed-rule-save.btn.p:disabled,.fed-wish-save.btn.p:disabled{opacity:1;color:var(--muted);border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}
.fed-rule-route:not(.order) .fed-rule-route-row{grid-template-columns:24px minmax(0,1fr) 32px}.fed-rule-buffer{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding:12px 12px 30px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.fed-rule-buffer>span{font-size:12.5px;font-weight:800}.fed-rule-buffer>div{display:flex;align-items:center;gap:6px}.fed-rule-buffer input{width:80px;height:42px;text-align:right}.fed-rule-buffer i{font-size:12px;font-style:normal;color:var(--muted)}.fed-rule-buffer small{position:absolute;left:12px;bottom:9px;color:var(--muted);font-size:11px}
.fed-rule-glyph.available{background:color-mix(in srgb,var(--success) 16%,transparent);color:var(--success)}.fed-rule-card.available .fed-rule-path>span{background:color-mix(in srgb,var(--success) 13%,transparent);color:var(--success)}.fed-rule-glyph.times{background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}.fed-rule-route.available .fed-rule-route-row>em{background:var(--success);color:#fff}.fed-rule-route.times .fed-rule-route-row>em{background:var(--info);color:#fff}
.fed-rule-picker>button:disabled{opacity:.5}.fed-rule-picker>button:disabled small{color:var(--warning)}.fed-rule-path>.fed-rule-time,.fed-rule-route-times span{display:block;flex:none;padding:4px 8px;border-radius:6px;background:color-mix(in srgb,var(--info) 14%,transparent);color:var(--info);font-family:var(--fn);font-size:11.5px;font-style:normal;font-weight:700}.fed-rule-route-times{display:flex;flex-wrap:wrap;gap:6px;padding:9px 0 2px;border-top:1px solid var(--hairline)}.fed-rule-times{margin-top:14px}.fed-rule-times .fed-rule-picker-head{margin-top:0}.fed-rule-time-picks{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.fed-rule-time-picks button{height:40px;border-radius:10px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-family:var(--fn);font-size:12.5px;font-weight:700}.fed-rule-time-picks button.on{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.fed-rule-time-empty{padding:14px;border-radius:12px;background:var(--matte-tint);color:var(--muted);font-size:12px;text-align:center}
.fed-empty-mini{padding:14px 4px 2px;color:var(--muted);font-size:12px;text-align:center}.fed-section-head{margin:22px 2px 10px}.fed-section-head>div{display:flex;flex-direction:column;gap:2px;min-width:0}.fed-section-head b{font-size:14.5px;font-weight:800;letter-spacing:-.015em}
.fed-theme-list{display:flex;flex-direction:column;gap:8px}.fed-theme{display:flex;align-items:center;gap:12px;min-height:80px;padding:9px 10px 9px 9px;border:1px solid var(--border);border-radius:12px;background:var(--surface);transition:border-color .15s}.fed-theme.selected{border-color:color-mix(in srgb,var(--p5) 40%,var(--border))}.fed-theme.disabled{opacity:.55}.fed-poster{width:46px;height:62px;flex:none;border-radius:8px;background-size:cover!important;background-position:center!important;display:grid;place-items:center;overflow:hidden}.fed-poster .ph{font-weight:900;color:rgba(255,255,255,.75)}
.fed-theme-info{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.fed-theme-info>b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed-theme-info>span{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed-theme-meta{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}.fed-status{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700}.fed-status.ready{color:var(--success);background:color-mix(in srgb,var(--success) 13%,transparent)}.fed-status.partial,.fed-status.players{color:var(--warning);background:color-mix(in srgb,var(--warning) 13%,transparent)}.fed-status.planned{color:var(--info);background:color-mix(in srgb,var(--info) 13%,transparent)}.fed-status.missing{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}
.fed-add{width:38px;height:38px;display:grid;place-items:center;flex:none;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.fed-add svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2}.fed-add.on{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.fed-add:disabled{opacity:.4}.fed-search{display:flex;gap:8px}.fed-search .input{min-width:0}.fed-search .btn{width:80px;flex:none;margin:0}.fed-theme-list.results{margin-top:10px}
.fed-plan-common-note{margin:0 0 10px;padding:10px 12px;border-radius:12px;color:var(--text);background:var(--matte-tint);font-size:12px;font-weight:700;line-height:1.45}
.fed-condition-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 12px}.fed-condition{display:flex;flex-direction:column;gap:8px;min-width:0}.fed-condition.wide{grid-column:1/-1}.fed-condition label,.fed-meal-fields label{font-size:12px;color:var(--muted);font-weight:700}.fed-condition label>span{margin-left:4px;font-size:11px;font-weight:600;color:var(--faint)}.fed-block{margin-top:12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.fed-block>.fed-section-head{margin:0 0 12px}.fed-basics{margin-top:12px}.fed-date-control,.fed-hours,.fed-count-control{grid-column:1/-1}.fed-step-control{display:grid;grid-template-columns:46px minmax(0,1fr) 46px;gap:8px}.fed-step-control>button,.fed-person-step>button{display:grid;place-items:center;border-radius:12px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-family:var(--fn);font-size:22px;font-weight:700}.fed-step-control>button:disabled,.fed-person-step>button:disabled{opacity:.3}.fed-step-control .input{text-align:center;font-weight:800}.fed-quick-picks{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.fed-quick-picks::-webkit-scrollbar{display:none}.fed-quick-picks button{flex:none;min-height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:12px;font-weight:700}.fed-quick-picks button.on{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.fed-time-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;align-items:center;gap:6px}.fed-time-range span{font-size:12px;color:var(--muted)}.fed-time-range .input{padding:0 8px;text-align:center;font-weight:700}.fed-number-picks.segctl>button{font-family:var(--fn);font-size:15px}.fed-number-picks.segctl>button small{font-family:var(--fb)}.fed-person-step{height:50px;display:grid;grid-template-columns:50px 1fr 50px;gap:8px}.fed-person-step strong{display:flex;align-items:center;justify-content:center;gap:3px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);font-family:var(--fn);font-size:18px;line-height:1}.fed-person-step strong small{font-family:var(--fb);font-size:12px;color:var(--muted);line-height:1}
.fed-person-step strong{align-items:center;line-height:1}.fed-person-step strong small{line-height:1}
.fed-buffer-presets.segctl>button{min-height:44px}.fed-buffer-presets.segctl>button b{font-family:var(--fn);font-size:13px;font-weight:800}
.fed-custom-buffer{display:grid;grid-template-columns:1fr 90px 18px;align-items:center;gap:8px;margin-top:10px;font-size:12.5px;color:var(--muted)}.fed-custom-buffer .input{height:42px;text-align:right}.fed-custom-buffer i{font-style:normal;font-size:12px}.fed-risk{margin-top:10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--danger) 11%,transparent);color:var(--danger);font-size:12px;line-height:1.45}.fed-risk.zero{background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--warning)}
.fed-meal{border-top:1px solid var(--hairline)}.fed-meal:first-of-type{border-top:0}.fed-meal-toggle{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;color:var(--text)}.fed-meal-toggle b{font-size:14px;font-weight:700}.fed-meal-toggle em{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);font-style:normal;font-size:12px;font-weight:700;color:var(--muted)}.fed-meal.on .fed-meal-toggle em{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.fed-meal-fields{display:grid;grid-template-columns:1fr 1fr 76px;gap:8px;padding-bottom:12px}.fed-meal-fields label{display:flex;flex-direction:column;gap:5px;min-width:0}.fed-meal-fields .input{height:42px;padding:0 8px}
.fed-result-head{display:flex;justify-content:space-between;align-items:flex-start;padding:4px 2px 16px}.fed-result-head h2{margin:0 0 5px;font-size:22px;font-weight:800;letter-spacing:-.03em}.fed-result-head p{font-size:12.5px;line-height:1.5;color:var(--muted)}.fed-result-card{margin-bottom:12px;padding:15px;position:relative;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.fed-result-card.best{border-color:color-mix(in srgb,var(--p5) 34%,var(--border))}
.fed-result-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:11px;border-bottom:1px solid var(--hairline)}.fed-result-title>span{display:flex;flex-direction:column;gap:3px;min-width:0}.fed-result-title b{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}.fed-result-flags{display:flex;justify-content:flex-end;gap:5px;flex-wrap:wrap}.fed-result-title em{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:6px;background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger);font-style:normal;font-size:11px;font-weight:800;white-space:nowrap}.fed-result-title em.best-label{background:color-mix(in srgb,var(--p5) 14%,transparent);color:var(--p5)}
.fed-timeline{padding:10px 0 3px}.fed-time-item{display:grid;grid-template-columns:58px 14px minmax(0,1fr);gap:6px;position:relative;min-height:78px}.fed-time-item::before{content:"";grid-column:2;grid-row:1;width:10px;height:10px;margin-top:10px;border:2px solid var(--p5);border-radius:50%;background:var(--surface);z-index:1}.fed-time-item::after{content:"";position:absolute;left:69px;top:22px;bottom:-8px;width:1px;background:var(--border)}.fed-time-item:last-child::after{display:none}.fed-time-span{font-family:var(--fn);display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:5px;padding:6px 2px 0 0;text-align:right}.fed-time-span .fs{font-size:13px;font-weight:700;line-height:1;color:var(--text);white-space:nowrap}.fed-time-span .fe{font-size:11.5px;font-weight:600;line-height:1;color:var(--muted);white-space:nowrap}.fed-time-span .fsa{display:none}.fed-time-item>span{display:flex;flex-direction:column;gap:2px;min-width:0;padding:5px 0 14px}.fed-time-item i{font-style:normal;font-size:11px;font-weight:700;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed-time-item b{font-size:14px;font-weight:800}.fed-time-item small{font-size:12px;color:var(--muted)}.fed-time-item a{display:inline-flex;align-items:center;align-self:flex-start;gap:4px;min-height:30px;margin-top:6px;padding:0 11px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:700;text-decoration:none}.fed-time-item a svg{width:12px;height:12px;flex:none;stroke:currentColor;fill:none;stroke-width:2}.fed-time-item.meal::before{border-color:var(--faint);border-radius:3px}
.fed-result-meta{display:flex;gap:6px;flex-wrap:wrap}.fed-result-meta span{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700}.fed-notice{margin:12px 0;padding:10px 12px;border-radius:12px;background:var(--matte-tint);color:var(--muted);font-size:12px;line-height:1.5}.fed-save{width:100%;margin:0}.fed-excluded{margin-bottom:12px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.fed-excluded summary{cursor:pointer;color:var(--text);font-size:13px;font-weight:700}.fed-excluded p{display:flex;justify-content:space-between;gap:10px;margin-top:8px;font-size:12px}.fed-excluded p span{color:var(--muted);text-align:right}
.fed-dock{position:absolute;left:0;right:0;bottom:0;z-index:8;padding:18px 18px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--bg) 34%);pointer-events:none}.fed-dock .btn{width:100%;margin:0;pointer-events:auto}.fed-dock .btn.p:disabled{opacity:1;color:var(--muted);border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}

html[data-theme=light] .util-entry{box-shadow:0 8px 22px rgba(45,60,78,.07)}

/* 연방 후보 선택 — 본문은 라인업·찜 진입·검색만 남기고, 찜 목록은 전용 시트에서 다중 선택 */
.fed-candidate-intro{padding:4px 2px 14px}.fed-candidate-intro p{max-width:360px}
.fed-stage.candidates .fed-selected{padding:0;overflow:hidden}.fed-lineup-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;border-bottom:1px solid var(--hairline)}.fed-lineup-head>span{display:flex;flex-direction:column;gap:2px}.fed-lineup-head b{font-size:14px;font-weight:800}.fed-lineup-head>em{display:flex;align-items:baseline;gap:3px;color:var(--muted);font-family:var(--fn);font-size:12px;font-style:normal}.fed-lineup-head>em strong{font-size:18px;color:var(--text)}.fed-stage.candidates .fed-selected-list{gap:6px;margin:0;padding:12px 14px 6px}.fed-stage.candidates .fed-selected-list button>em{width:26px;height:26px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--tag-bg);color:var(--text);font-family:var(--fn);font-size:11px;font-style:normal;font-weight:800}.fed-lineup-note{padding:2px 14px 12px;color:var(--muted);font-size:11.5px}.fed-lineup-empty{display:flex;align-items:center;gap:12px;padding:14px}.fed-lineup-empty>span{width:40px;height:40px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--tag-bg);color:var(--muted)}.fed-lineup-empty>span svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}.fed-lineup-empty>div{display:flex;flex-direction:column;gap:3px;min-width:0}.fed-lineup-empty b{font-size:13.5px;font-weight:800}.fed-lineup-empty small{color:var(--muted);font-size:12px;line-height:1.4}
.fed-pick-tools{display:grid;gap:12px;margin-top:12px}.fed-source-card{min-height:78px;display:grid;grid-template-columns:44px minmax(0,1fr) auto 16px;align-items:center;gap:12px;padding:14px;text-align:left;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--text);transition:border-color .16s,scale .2s var(--ease-press)}.fed-source-card:active{scale:.99}@media(hover:hover){.fed-source-card:hover{border-color:var(--glass-line-hi)}}.fed-source-card:disabled{opacity:.55}.fed-source-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--tag-bg);color:var(--text)}.fed-source-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9}.fed-source-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.fed-source-copy b{font-size:15px;font-weight:800}.fed-source-copy small{overflow:hidden;color:var(--muted);font-size:12px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.fed-source-count{display:flex;flex-direction:column;align-items:center;min-width:34px}.fed-source-count b{font-family:var(--fn);font-size:17px;color:var(--text)}.fed-source-count small{font-size:11px;color:var(--muted)}.fed-source-card>svg{width:16px;height:16px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}
.fed-catalog-panel{padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.fed-catalog-panel>.fed-section-head{margin:0 1px 12px}.fed-search-caption{display:flex;align-items:center;justify-content:space-between;margin:16px 2px 8px}.fed-search-caption b{font-size:13px}.fed-search-caption span{font-family:var(--fn);font-size:11.5px;color:var(--muted)}.fed-search-hint,.fed-search-empty{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;border-radius:12px;background:var(--matte-tint)}.fed-search-hint>span{width:32px;height:32px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--tag-bg);color:var(--muted)}.fed-search-hint>span svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.fed-search-hint p,.fed-search-empty{display:flex;flex-direction:column;gap:3px;margin:0}.fed-search-hint b,.fed-search-empty b{font-size:12.5px;font-weight:800}.fed-search-hint small,.fed-search-empty span{color:var(--muted);font-size:11.5px;line-height:1.4}.fed-search-empty{align-items:center;text-align:center}
.fed-wishlist-sheet .sh-body{padding-top:8px}.fed-wish-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:10px 12px;border-radius:12px;background:var(--matte-tint)}.fed-wish-summary>span{display:flex;flex-direction:column;gap:2px}.fed-wish-summary b{font-size:13px}.fed-wish-summary small{font-size:11px;color:var(--muted)}.fed-wish-summary>em{font-style:normal;font-size:11.5px;color:var(--muted);white-space:nowrap}.fed-wish-summary strong{font-family:var(--fn);font-size:15px;color:var(--text)}.fed-wish-search{position:relative;margin-top:10px}.fed-wish-search>span{position:absolute;left:14px;top:50%;transform:translateY(-50%);display:grid;color:var(--faint)}.fed-wish-search>span svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}.fed-wish-search .input{padding-left:40px}.fed-wish-grid{display:grid;gap:8px;margin-top:10px}.fed-wish-pick{min-height:74px;display:grid;grid-template-columns:44px minmax(0,1fr) 32px;align-items:center;gap:10px;padding:8px 10px 8px 8px;text-align:left;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text)}.fed-wish-pick.on{border-color:color-mix(in srgb,var(--p5) 45%,var(--border));background:color-mix(in srgb,var(--p5) 6%,var(--surface))}.fed-wish-pick.disabled{opacity:.45}.fed-wish-poster{width:44px;height:58px;display:grid;place-items:center;overflow:hidden;border-radius:8px;background-size:cover!important;background-position:center!important}.fed-wish-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.fed-wish-copy b,.fed-wish-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed-wish-copy b{font-size:13px}.fed-wish-copy small{font-size:11.5px;color:var(--muted)}.fed-wish-copy em{font-size:11px;font-style:normal;font-weight:700;color:var(--muted)}.fed-wish-pick.ready .fed-wish-copy em{color:var(--success)}.fed-wish-pick.no-time .fed-wish-copy em{color:var(--warning)}.fed-wish-pick>i{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-style:normal}.fed-wish-pick>i svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2}.fed-wish-pick.on>i{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}.fed-wish-empty{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:24px;border-radius:12px;background:var(--matte-tint)}.fed-wish-empty b{font-size:13px}.fed-wish-empty span{font-size:11.5px;color:var(--muted)}.fed-wish-save{width:100%;margin:12px 0 0}
.fed-wishlist-sheet .sh-body{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow:hidden}.fed-wish-grid{flex:1 1 auto;min-height:120px;align-content:start;overflow-y:auto;padding-right:2px}.fed-wish-pick.checking{opacity:.6;pointer-events:none}.fed-wish-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:2px}.fed-wish-meta>small{font-family:var(--fn);font-size:11px;color:var(--faint)}
html[data-theme=light] .fed-selected,html[data-theme=light] .fed-source-card,html[data-theme=light] .fed-catalog-panel,html[data-theme=light] .fed-block,html[data-theme=light] .fed-result-card{box-shadow:0 1px 2px rgba(45,60,78,.06)}

/* ===== 예약 가능 시간 ===== */
/* 기능 소개 시트 공통 골격 — 내용은 달라도 제목·미리보기·행동 영역의 호흡은 같게 유지한다. */
.feature-intro-sheet{max-height:92vh}.feature-intro-sheet .sh-body{padding-top:4px}.feature-intro-lead{gap:11px;margin:2px 0 14px}.feature-intro-preview{min-width:0}.feature-intro-actions{display:grid;grid-template-columns:1fr;gap:8px}
/* 신기능 안내 공용 가드 — 본문 마지막 블록이 하단 여백을 안 가져도 액션 줄 위에 최소 여백을 보장한다.
   (.sh-body 는 블록 흐름이라 마진 상쇄로 이미 충분한 시트엔 겹으로 쌓이지 않음. 개별 시트에서 0으로 덮지 말 것 — 테스트가 지킨다) */
.sh-body .feature-intro-actions{margin-top:18px}.feature-intro-actions .btn{width:100%;margin:0;min-height:44px}
.hpc-lead{align-items:start}.hpc-preview{display:grid;gap:8px;margin-top:4px}.hpc-preview>div{min-width:0;display:grid;grid-template-columns:70px minmax(0,1fr);align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.hpc-preview>div>span{justify-self:center}.hpc-preview p{display:flex;flex-direction:column;gap:3px;margin:0}.hpc-preview p b{font-size:14px}.hpc-preview p small{color:var(--muted);font-size:12px;line-height:1.45}.hpc-hidden{width:32px;height:32px;display:grid;place-items:center;color:var(--muted);border-radius:50%;background:var(--tag-bg)}.hpc-hidden svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.9}.hpc-note{margin:12px 2px 0;color:var(--muted);font-size:12px;line-height:1.5}.hpc-actions{grid-template-columns:1fr 1fr}.hpc-actions .btn{height:auto;min-height:58px;flex-direction:column;gap:3px;padding:10px 8px;text-align:center}.hpc-actions .btn span{font-size:14px}.hpc-actions .btn small{color:inherit;font-size:11px;font-weight:600;opacity:.78}
@media(max-width:359px){.hpc-actions{grid-template-columns:1fr}.hpc-preview>div{grid-template-columns:58px minmax(0,1fr)}}
/* 계획 최초 안내 — 저장한 일정이 날짜로 이어지는 핵심만 짧고 둥근 카드로 보여 준다. */
.plan-intro-sheet{--pi-c:var(--info)}.plan-intro-sheet .sh-body{padding-top:6px}.plan-intro-hero{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:11px;margin:2px 0 14px}.plan-intro-mark{width:44px;height:44px;display:grid;place-items:center;color:var(--text);border-radius:50%;background:var(--tag-bg)}.plan-intro-mark svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.plan-intro-hero h2{margin:0;font-size:21px;line-height:1.25;letter-spacing:-.035em}.plan-intro-hero p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}
.plan-intro-preview{display:grid;grid-template-columns:minmax(0,1fr) 28px 76px;align-items:center;gap:8px;padding:14px;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--bg)}.plan-intro-card{min-width:0;min-height:82px;display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.plan-intro-card>span{width:38px;height:38px;display:grid;place-items:center;color:var(--pi-c);border-radius:50%;background:color-mix(in srgb,var(--pi-c) 14%,transparent)}.plan-intro-card>span svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8}.plan-intro-card>div{display:flex;min-width:0;flex-direction:column;gap:2px}.plan-intro-card i{color:var(--pi-c);font-size:11px;font-style:normal;font-weight:800}.plan-intro-card b{overflow:hidden;font-size:13.5px;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap}.plan-intro-card small{color:var(--muted);font-size:11px}.plan-intro-arrow{display:grid;place-items:center;color:var(--pi-c)}.plan-intro-arrow svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2}.plan-intro-date{min-height:82px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--pi-c) 40%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--pi-c) 8%,var(--surface))}.plan-intro-date i{color:var(--pi-c);font-size:11px;font-style:normal;font-weight:800}.plan-intro-date b{margin:1px 0;font-size:28px;line-height:1;font-variant-numeric:tabular-nums}.plan-intro-date small{color:var(--muted);font-size:11px}
.plan-intro-points{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 14px}.plan-intro-points>span{min-height:40px;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 8px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint)}.plan-intro-points svg{width:13px;height:13px;flex:none;color:var(--pi-c);fill:none;stroke:currentColor;stroke-width:2.2}.plan-intro-points b{font-size:12px;letter-spacing:-.02em;white-space:nowrap}.plan-intro-actions{grid-template-columns:1.18fr 1fr}.plan-intro-actions .btn{min-height:48px;font-size:14px}.plan-intro-actions .btn svg{width:17px;height:17px}
@media(max-width:359px){.plan-intro-hero{grid-template-columns:40px minmax(0,1fr);gap:10px}.plan-intro-mark{width:40px;height:40px}.plan-intro-hero h2{font-size:21px}.plan-intro-preview{grid-template-columns:minmax(0,1fr) 22px 68px;gap:5px;padding:12px}.plan-intro-card{grid-template-columns:32px minmax(0,1fr);gap:8px;padding:9px}.plan-intro-card>span{width:32px;height:32px}.plan-intro-card b{font-size:12px}.plan-intro-date{min-height:78px}.plan-intro-points{grid-template-columns:1fr;gap:6px}.plan-intro-actions{grid-template-columns:1fr}}
/* 예약 오픈 자정 표기 최초 안내 — 같은 N일 전의 24시와 00시가 실제로 하루 차이임을 나란히 보여준다. */
.midnight-intro-title{grid-template-columns:44px minmax(0,1fr)}.midnight-intro-title>span{width:44px;height:44px;color:var(--text);border-radius:50%;background:var(--tag-bg)}.midnight-intro-title>span svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9}.midnight-intro-title>div>small{color:var(--muted)}
.midnight-example{display:grid;gap:7px;margin:4px 0 12px}.midnight-card{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1.25fr);align-items:center;gap:5px 8px;min-height:91px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.midnight-card>span{grid-column:1/-1;color:var(--faint);font-size:11px;font-weight:800}.midnight-card>strong{font-size:13px;white-space:nowrap}.midnight-card>strong b,.midnight-card>p b{color:var(--text)}.midnight-card>i{display:grid;place-items:center;color:var(--faint);font-style:normal}.midnight-card>i svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.midnight-card>p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}.midnight-card>small{grid-column:1/-1;color:var(--faint);font-size:11px}.midnight-card.recommended{border-color:color-mix(in srgb,var(--success) 45%,var(--border))}.midnight-card.recommended>span,.midnight-card.recommended>strong b,.midnight-card.recommended>i,.midnight-card.recommended>p b{color:var(--success)}.midnight-boundary{margin-bottom:14px}
html[data-theme=light] .midnight-card{background:var(--surface2)}
/* 테스터 권한 첫 소개 — 실제 상세와 두 편집 시트의 DOM·스타일을 그대로 축소한 3페이지 안내. 페이지는 즉시 교체한다. */
.ti-title>div>small{display:block;margin-bottom:3px;color:var(--muted);font-size:11.5px;font-weight:700}
.ti-real-picture{height:330px;position:relative;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--bg);pointer-events:none}
.ti-real-screen{position:absolute;top:0;left:50%;width:390px;height:393px;overflow:hidden;transform:translateX(-50%) scale(.84);transform-origin:top center;background:var(--bg)}
.ti-real-screen .dhero{height:300px}.ti-real-screen .dhead .ttl{font-size:26px}.ti-real-screen .dhero .bg{filter:saturate(.86)}
.ti-real-screen .dtop .iconbtn.hero{color:#F3EFE6;border-color:rgba(231,236,242,.45);background:rgba(8,9,11,.72)}
.ti-real-screen .dtop .iconbtn.hero svg{width:19px;height:19px;stroke-width:2.15}.ti-real-screen .factbar{height:76px}
.ti-sheet-picture{background:var(--bg2)}.ti-sheet-screen{height:393px;background:var(--bg2)}
.ti-real-ui.sheet{position:absolute;inset:0;width:390px;height:393px;max-height:none;padding-bottom:0;transform:none!important;transition:none;border-radius:22px 22px 0 0}
.ti-real-ui .sh-body{overflow:hidden}.ti-real-ui div.input{display:flex;align-items:center}.ti-real-ui .ti-select{position:relative;padding-right:36px}
.ti-real-ui .ti-select::after{content:"";position:absolute;right:13px;width:14px;height:14px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2392A4B8' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E") center/14px no-repeat}
.ti-real-ui .ti-tag-input{height:160px;align-items:flex-start;padding-top:14px;color:var(--faint);font-family:var(--fn);font-size:13px;line-height:1.55}.ti-real-ui .ti-tag-save{width:100%;margin-top:4px}
.ti-real-ui button,.ti-real-ui .btn{pointer-events:none}.ti-real-ui .masterb{margin-left:8px}
.ti-title{display:grid;grid-template-columns:62px minmax(0,1fr);align-items:center}.ti-title>span{width:62px;height:48px;display:grid;place-items:center}.ti-title .masterb{margin:0;font-size:11px;box-shadow:none}.ti-title h2{margin:0;font-size:21px;line-height:1.25;letter-spacing:-.035em}.ti-title p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}.ti-progress{display:flex;align-items:center;justify-content:space-between;margin:-3px 1px 8px}.ti-progress>span{font-size:11.5px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.ti-progress>div{display:flex;align-items:center;gap:6px}.ti-progress button{width:8px;height:8px;padding:0;border:0;border-radius:999px;background:var(--border);transition:width .2s var(--ease-out),background .2s}.ti-progress button[aria-selected=true]{width:20px;background:var(--p5)}.ti-page[hidden]{display:none}.ti-picture{height:258px;position:relative;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--bg);pointer-events:none}.ti-screen{height:100%;padding:9px;background:linear-gradient(145deg,var(--bg),var(--surface) 62%)}.ti-detailbar{height:39px;display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:7px;padding:0 4px 7px;border-bottom:1px solid var(--hairline)}.ti-back{width:22px;height:22px;display:grid;place-items:center;color:var(--muted)}.ti-back svg{width:15px;height:15px}.ti-detailbar>div:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:1px}.ti-detailbar b{font-size:10px}.ti-detailbar small{color:var(--faint);font-size:7px}.ti-detailbar .dtools{display:flex;gap:4px}.ti-detailbar .iconbtn{width:26px;height:26px;border-color:var(--hairline);background:var(--surface2);color:var(--muted)}.ti-detailbar .iconbtn.on{color:var(--accent);border-color:rgba(63,224,208,.4);background:rgba(63,224,208,.07)}.ti-detailbar .iconbtn svg{width:13px;height:13px}.ti-theme{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:9px;padding:9px 5px}.ti-theme.compact{padding-bottom:6px}.ti-poster{width:40px;height:52px;display:grid;place-items:center;padding:3px;color:var(--gold);border:1px solid rgba(255,207,92,.25);background:linear-gradient(150deg,#17130D,#090A0C);font-family:var(--fe);font-size:6px;font-weight:900;line-height:1.05;text-align:center}.ti-theme>div{display:flex;min-width:0;flex-direction:column;gap:2px}.ti-theme small{color:var(--faint);font-size:7px}.ti-theme b{font-size:12px}.ti-theme div>span{color:var(--muted);font-size:8px}.ti-edit-card,.ti-tag-card{padding:8px;border:1px solid var(--border);background:var(--surface)}.ti-edit-head{display:flex;align-items:center;gap:5px;padding-bottom:7px;border-bottom:1px solid var(--hairline)}.ti-edit-head>b{font-size:9px}.ti-edit-head .masterb{margin-left:2px;font-size:6px;padding:1px 4px}.ti-edit-head>span:last-child{width:17px;height:17px;display:grid;place-items:center;margin-left:auto;color:var(--accent);border:1px solid rgba(63,224,208,.34)}.ti-edit-head>span:last-child svg{width:10px;height:10px}.ti-edit-card>label,.ti-edit-grid label{display:flex;flex-direction:column;gap:4px;margin-top:7px}.ti-edit-card label>span,.ti-tag-card label>span{color:var(--muted);font-size:6.5px;font-weight:800}.ti-edit-card label>i{height:24px;display:flex;align-items:center;padding:0 7px;color:var(--text);border:1px solid var(--hairline);background:var(--surface2);font-size:8px;font-style:normal}.ti-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.ti-edit-grid label>i.selected{color:var(--accent);border-color:rgba(63,224,208,.3)}.ti-edit-spec{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:7px}.ti-edit-spec>span{display:flex;flex-direction:column;gap:2px;padding:5px 6px;border:1px solid var(--hairline);background:var(--surface2)}.ti-edit-spec small{color:var(--faint);font-size:6px}.ti-edit-spec b{font-size:8px}.ti-tag-card label{display:flex;flex-direction:column;gap:5px;margin-top:7px}.ti-tag-card label>span{display:flex;justify-content:space-between}.ti-tag-card label>span i{color:var(--faint);font-style:normal;font-weight:500}.ti-tag-card label>em{min-height:39px;padding:8px;color:var(--text);border:1px solid var(--hairline);background:var(--surface2);font-size:8px;font-style:normal}.ti-search-demo{height:31px;display:grid;grid-template-columns:17px minmax(0,1fr) auto;align-items:center;gap:5px;margin-top:7px;padding:0 9px;border:1px solid rgba(63,224,208,.28);background:rgba(63,224,208,.045)}.ti-search-demo>span,.ti-search-demo>span svg{width:13px;height:13px;color:var(--accent)}.ti-search-demo b{font-size:8px}.ti-search-demo i{color:var(--accent);font-size:7px;font-style:normal}.ti-route{margin:10px 1px 8px;padding:9px 10px;border-left:2px solid var(--accent);background:linear-gradient(90deg,rgba(63,224,208,.075),transparent)}.ti-route>b{display:flex;align-items:center;gap:6px;font-size:10px}.ti-route>b svg{width:13px;height:13px;color:var(--accent)}.ti-route p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.45;word-break:keep-all}.ti-boundary{display:grid;grid-template-columns:27px minmax(0,1fr);align-items:center;gap:8px;margin:0 1px 10px;padding:8px 9px;border:1px solid var(--hairline);background:var(--surface)}.ti-boundary>span{width:27px;height:27px;display:grid;place-items:center;color:var(--gold);border:1px solid rgba(255,207,92,.28)}.ti-boundary>span svg{width:14px;height:14px}.ti-boundary p{margin:0;color:var(--muted);font-size:8.5px;line-height:1.45}.ti-boundary p b{display:block;margin-bottom:2px;color:var(--text);font-size:9px}.ti-boundary.important>span{color:var(--accent);border-color:rgba(63,224,208,.3)}.ti-actions{grid-template-columns:1fr 1.35fr}.ti-actions [data-ti-next]{grid-column:1/-1}.ti-actions .btn{display:flex;align-items:center;justify-content:center;gap:6px}.ti-actions .btn svg{width:15px;height:15px}.ti-actions .btn[hidden]{display:none}
html[data-theme=light] .ti-picture,html[data-theme=light] .ti-real-picture{box-shadow:0 8px 22px rgba(45,60,78,.06)}html[data-theme=light] .ti-detailbar .iconbtn.on,html[data-theme=light] .ti-search-demo{color:#087B6C;border-color:rgba(8,123,108,.3);background:rgba(8,123,108,.055)}html[data-theme=light] .ti-real-screen .dtop .iconbtn.hero{background:rgba(255,255,255,.72);border-color:rgba(20,30,42,.28);color:#2A3642}
/* 축소판 아래 설명은 모바일에서도 본문으로 읽히는 카드 위계로 구성한다. */
.ti-route{min-height:64px;display:grid;grid-template-columns:36px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:12px;row-gap:2px;margin:12px 0 9px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.ti-route>b{display:contents}.ti-route>b>svg{grid-column:1;grid-row:1/3;width:36px;height:36px;padding:9px;color:var(--text);border-radius:50%;background:var(--tag-bg);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ti-route>b>span{grid-column:2;font-size:13.5px;font-weight:800;line-height:1.3;letter-spacing:-.02em;word-break:keep-all}.ti-route p{grid-column:2;margin:0;color:var(--muted);font-size:12px;line-height:1.45;word-break:keep-all}
.ti-boundary{min-height:58px;display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:12px;margin:0 0 10px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.ti-boundary>span{width:36px;height:36px;color:var(--muted);border:0;border-radius:50%;background:var(--tag-bg)}.ti-boundary>span svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.15;stroke-linecap:round;stroke-linejoin:round}
.ti-boundary p{color:var(--muted);font-size:12px;line-height:1.45;word-break:keep-all}.ti-boundary p b{margin-bottom:3px;color:var(--text);font-size:13.5px;line-height:1.3}.ti-boundary.important>span{color:var(--text)}
.ti-actions{flex:none;grid-template-columns:minmax(0,.9fr) minmax(0,1.25fr);gap:9px;margin:0;padding:10px 20px 0;border-top:1px solid var(--hairline);background:var(--bg2)}.ti-actions [data-ti-next]{grid-column:auto}.ti-actions[data-ti-step=first] [data-ti-next]{grid-column:1/-1}.ti-actions[data-ti-step=middle] [data-ti-prev],.ti-actions[data-ti-step=last] [data-ti-prev]{grid-column:1}.ti-actions[data-ti-step=middle] [data-ti-next],.ti-actions[data-ti-step=last] [data-ti-done]{grid-column:2}
@media(max-width:359px){.ti-title{grid-template-columns:54px minmax(0,1fr);gap:9px}.ti-title>span{width:54px;height:43px}.ti-title h2{font-size:18px}.ti-title p{font-size:11.5px}.ti-picture{height:235px}.ti-screen{padding:7px}.ti-theme{padding:6px 4px}.ti-route{margin-top:8px;padding:10px 12px}.ti-boundary{padding:10px 12px}.ti-route p{font-size:11.5px}.ti-boundary p{font-size:11.5px}}
@media(max-width:359px){.ti-real-picture{height:283px}.ti-real-screen{transform:translateX(-50%) scale(.72)}}
/* 취소표 알리미 첫 소개 — 실제 도구 카드와 예약 가능 시간 창을 그대로 줄인 비상호작용 미리보기. */
.cni-title{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center}.cni-title>span{width:44px;height:44px;display:grid;place-items:center;color:var(--text);border-radius:50%;background:var(--tag-bg)}.cni-title>span svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9}.cni-title h2{margin:0;font-size:21px;line-height:1.25;letter-spacing:-.035em}.cni-title p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}
.cni-picture{display:grid;grid-template-columns:1fr 1fr;gap:8px;pointer-events:none}.cni-shot{min-width:0;position:relative;padding-top:28px;border:1px solid var(--border);border-radius:16px;background:var(--bg);overflow:hidden}.cni-label{position:absolute;z-index:2;left:12px;top:8px;color:var(--muted);font-size:11px;font-weight:700}.cni-tools-screen{width:142.858%;height:145px;padding:11px 12px;transform:scale(.7);transform-origin:top left;background:var(--bg)}.cni-appbar{margin-bottom:10px;font-size:18px;font-weight:900}.cni-tools-screen .tool-card{width:100%}.cni-week-screen{width:142.858%;height:145px;padding:8px 10px 12px;transform:scale(.7);transform-origin:top left;background:var(--bg)}.cni-sheetbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:14px}.cni-sheetbar svg{width:18px;height:18px;fill:none;stroke:currentColor}.cni-week-screen .avweektheme{margin-bottom:7px;padding:8px 9px}.cni-week-screen .avg-legend{margin-bottom:6px}.cni-week-screen .avg-legend em,.cni-week-screen .avg-hint{display:none}.cni-week-screen .avg-wrap{overflow:hidden}.cni-routes{display:grid;gap:6px;margin:12px 0}.cni-routes p{min-height:40px;display:grid;grid-template-columns:minmax(0,1fr) 14px auto;align-items:center;gap:7px;margin:0;padding:0 12px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint);font-size:12px}.cni-routes b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--muted)}.cni-routes span{color:var(--text);font-weight:800;white-space:nowrap}.cni-routes svg{width:13px;height:13px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.cni-open{margin-top:2px}.cancellation-intro-sheet .cni-title>span{border:0;border-radius:50%;clip-path:none;background:var(--tag-bg);color:var(--text)}.cancellation-intro-sheet .cni-title>span svg{width:24px;height:24px}
/* 회차를 판정할 수 없는 날 — 열을 옅은 사선 띠로 덮고 아이콘 + 상태 이름 하나. 한 열은 세로쓰기, 이어진 여러 열은 한 띠에 가로로(왼쪽 고정) */
.avg-band{--avst:var(--faint);padding:0;vertical-align:top;border:3px solid transparent;border-width:3px 2px;border-radius:12px;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--avst) 8%,transparent) 0 4px,color-mix(in srgb,var(--avst) 3%,transparent) 4px 10px) padding-box}
.avg-band:is(.st-unopened,.st-opening){--avst:var(--gold)}.avg-band.st-preopen{--avst:var(--info)}.avg-band.st-error{--avst:var(--dhot)}
.avg-bandbox{position:sticky;top:54px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 2px 14px;color:color-mix(in srgb,var(--avst) 70%,var(--muted))}
.avg-band:is(.st-not_operating,.st-pending,.st-ended) .avg-bandbox{color:var(--muted)}
.avg-bandbox>i{width:24px;height:24px;flex:none;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--avst) 16%,var(--surface));font-style:normal}
.avg-bandbox svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.avg-bandbox:not(.opening)>span{writing-mode:vertical-rl;text-orientation:upright;font-size:11.5px;font-weight:750;letter-spacing:.16em;line-height:1;white-space:nowrap}
.avg-bandbox.wide{left:60px;width:max-content;flex-direction:row;gap:8px;padding:12px 14px}
.avg-bandbox.wide:not(.opening)>span{writing-mode:horizontal-tb;letter-spacing:0;font-size:12px}
/* 예약 오픈 시각을 아는 날들 — '예약 오픈' 머리 하나 아래 날짜마다 오픈 날(오늘·내일은 단계색 칩)·시각을 그 열에 맞춰 */
.avg-bandbox.opening{left:auto;width:auto;flex-direction:column;align-items:stretch;gap:9px;padding:11px 0 13px}
.avg-open-h{display:flex;align-items:center;justify-content:center;gap:5px;color:var(--avst);font-size:11px;font-weight:800;white-space:nowrap}
.avg-open-h i{display:grid;font-style:normal}.avg-open-h svg{width:12px;height:12px}
.avg-open-days{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr))}
.avg-open-d{--oc:#C4B89A;--on:#17130A;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}
.avg-open-d.ot-near{--oc:var(--gold);--on:#241A04}.avg-open-d.ot-soon{--oc:var(--dhot);--on:#2A1204}.avg-open-d.ot-hot{--oc:#FF4458;--on:#fff}
.avg-open-d+.avg-open-d{border-left:1px dashed color-mix(in srgb,var(--avst) 26%,transparent)}
.avg-open-d em{font-size:11px;font-style:normal;font-weight:700;color:var(--text);white-space:nowrap}
.avg-open-d.rel em{padding:2px 6px;border-radius:5px;background:var(--oc);color:var(--on);font-weight:800}
.avg-open-d b{font-family:var(--fn);font-size:11.5px;font-weight:700;letter-spacing:-.03em;color:var(--oc)}
html[data-theme=light] .avg-open-d{--oc:#76694C;--on:#fff}html[data-theme=light] .avg-open-d.ot-near{--oc:#8C660C}html[data-theme=light] .avg-open-d.ot-soon{--oc:#B5540E}html[data-theme=light] .avg-open-d.ot-hot{--oc:#C40226}
/* 취소표 알림 추가 표(.avg.cg) — 날짜 머리가 '그날 모두 선택' 버튼, 매진 칸을 누르면 렌즈 선택. 표는 시트 안에서 따로 스크롤.
   이 시트는 본문도 스크롤하므로 세로는 가두지 않는다 — 표가 세로로 넘치지 않거나 끝에 닿으면 표 위 스와이프·휠이 시트 본문으로 이어진다 */
.cancel-grid{margin-top:2px}
.cancel-add-sheet .avg-wrap{max-height:min(54vh,470px);overscroll-behavior-y:auto}
.cg-tools{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0 0 9px}.cg-tools .avg-kinds{margin:0}
.cg-all{flex:none;display:inline-flex;align-items:center;gap:7px;height:32px;margin-left:auto;padding:0 13px 0 10px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:750;white-space:nowrap}
.cg-all:disabled{opacity:.45}
.avg-chk{width:16px;height:16px;flex:none;display:grid;place-items:center;border:1.5px solid color-mix(in srgb,var(--text) 32%,transparent);border-radius:50%;font-style:normal}
.avg-chk.some{border-color:var(--p5);background:radial-gradient(circle,var(--p5) 0 3px,transparent 3.5px)}
.avg-chk.all{border-color:transparent;background:var(--lens);color:#fff}.avg-chk svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.avg-chk.off{opacity:.3}
.avg.cg thead th{height:68px}.avg.cg .avg-bandbox{top:74px}
.avg-dayall{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 0 7px;border:0;background:none;color:inherit;font:inherit}
.avg-dayall .avg-chk{margin-top:2px}
@media(hover:hover){.avg-dayall:not(:disabled):hover .avg-chk:not(.all){border-color:color-mix(in srgb,var(--text) 60%,transparent)}}
.avg-dayall:focus-visible,.cg-all:focus-visible{outline:2px solid var(--focus);outline-offset:-2px;border-radius:10px}
.avg-cell.pk svg{width:11px;height:11px;flex:none;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.avg-cell.pk.on{gap:3px;color:#fff;background:var(--lens);border-color:transparent;box-shadow:var(--lens-sh)}
.avg-cell.so.low{color:var(--dhot);background:color-mix(in srgb,var(--dhot) 10%,transparent);border-color:color-mix(in srgb,var(--dhot) 30%,transparent)}
.avg-cell.trk{color:var(--gold);background:color-mix(in srgb,var(--gold) 9%,transparent);border-color:color-mix(in srgb,var(--gold) 30%,transparent);font-size:10.5px;letter-spacing:-.02em}
.cg-legend .avg-key.pk i{border:0;background:var(--lens)}.cg-legend .avg-key.trk i{background:color-mix(in srgb,var(--gold) 16%,transparent);border:1px solid color-mix(in srgb,var(--gold) 45%,transparent)}

/* 예약 가능 시간·취소표 알림 표 개편 안내 — 실제 두 표를 견본으로 축소(0.6배) */
.agi-title>span{width:44px;height:44px;flex:none;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.agi-title>span svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7}
.agi-picture{display:grid;grid-template-columns:1fr 1fr;gap:8px;pointer-events:none}
.agi-shot{min-width:0;position:relative;height:178px;padding-top:28px;border:1px solid var(--border);border-radius:16px;background:var(--bg);overflow:hidden}
.agi-label{position:absolute;z-index:2;left:12px;top:8px;right:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px;font-weight:700}
.agi-screen{width:166.667%;padding:4px 10px;transform:scale(.6);transform-origin:top left;background:var(--bg)}
.agi-screen .avg-legend,.agi-screen .avg-hint,.agi-screen .cg-legend{display:none}.agi-screen .avg-wrap{max-height:none;overflow:hidden}.agi-screen .cg-tools{margin-bottom:6px}
.agi-points{display:grid;gap:8px;margin:12px 0 2px;padding:0;list-style:none}
.agi-points li{display:grid;grid-template-columns:14px minmax(0,1fr);align-items:start;gap:10px;color:var(--muted);font-size:12.5px;line-height:1.5;word-break:keep-all}
.agi-points b{color:var(--text);font-weight:800}
.agi-points i{width:14px;height:14px;margin-top:3px;border-radius:4px;border:1px solid transparent}
.agi-points i.ok{background:color-mix(in srgb,var(--success) 20%,transparent);border-color:color-mix(in srgb,var(--success) 50%,transparent)}
.agi-points i.no{background:color-mix(in srgb,var(--danger) 14%,transparent);border-color:color-mix(in srgb,var(--danger) 42%,transparent)}
.agi-points i.day{border-radius:50%;background:var(--lens)}
.agi-points i.kind{border-radius:50%;background:linear-gradient(90deg,#B794F6 0 50%,#7FB2FF 50%)}
html[data-theme=light] .cni-shot{box-shadow:0 8px 22px rgba(45,60,78,.06)}
@media(max-width:359px){.feature-intro-sheet .sh-body{padding-left:15px;padding-right:15px}.cni-title{grid-template-columns:40px minmax(0,1fr);gap:10px}.cni-title>span{width:40px;height:40px}.cni-title h2{font-size:18px}.cni-title p{font-size:11px}.cni-picture{grid-template-columns:1fr}.cni-shot{height:126px}.cni-tools-screen,.cni-week-screen{height:145px}.cni-routes{margin:9px 0}.cni-routes p{min-height:36px;font-size:11.5px}}
/* 첫 소개 팝업 — 실제 탐색과 같은 DOM·컴포넌트를 축소해 화면 변화와 함께 맞춰진다. */
.avi-title{display:flex;align-items:flex-start}.avi-title>div{min-width:0}.avi-title h2{margin:0;font-size:21px;line-height:1.25;letter-spacing:-.03em}.avi-title p{margin:6px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5;word-break:keep-all}.avi-beta{flex:none;margin-top:4px;padding:2px 8px;color:var(--text);background:var(--tag-bg);border-radius:6px;font-size:11px;font-weight:800}
.avi-picture{height:252px;position:relative;border:1px solid var(--border);border-radius:16px;background:var(--bg);overflow:hidden;pointer-events:none}.avi-screen{width:125%;padding:7px 0 18px;transform:scale(.8);transform-origin:top left;background:var(--bg)}.avi-screen .toolbar{margin-top:0}.avi-screen .avdates{margin-top:5px}.avi-screen .avtools{margin-top:4px}.avi-screen .avlist{padding-top:5px;padding-bottom:12px}.avi-screen .avrow{min-height:139px}.avi-screen button{cursor:default}.avi-screen .avregionpick>b{font-size:12.5px}
.avi-steps{display:flex;flex-direction:column;gap:8px;margin:14px 0;padding:0;list-style:none}.avi-steps li{display:flex;align-items:center;gap:10px;min-height:46px;padding:7px 9px;border-bottom:1px solid var(--hairline)}.avi-steps li:last-child{border-bottom:0}.avi-steps li>b{width:26px;height:26px;display:grid;place-items:center;flex:none;color:var(--text);border-radius:50%;background:var(--tag-bg);font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}.avi-steps li>span{min-width:0;display:flex;flex-direction:column;gap:2px}.avi-steps strong{font-size:13.5px}.avi-steps small{color:var(--muted);font-size:11.5px;line-height:1.4}.avi-start{gap:8px}.avi-start svg{width:18px;height:18px}
.availability-intro-sheet .availability-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:359px){.availability-intro-sheet .sh-head{padding-top:7px}.avi-title h2{font-size:18px}.avi-title p{font-size:11.5px}.avi-picture{height:229px}.avi-screen{width:133.334%;transform:scale(.75)}.avi-steps{gap:4px;margin:10px 0}.avi-steps li{min-height:40px;padding:5px 7px}.avi-steps small{display:none}}
/* 예약 가능 회차 → 공식 예약 연결 소개 — 실제 시간 칩과 상세 하단 예약 바의 모양을 한 흐름으로 축소한다. */
.rhi-title>span svg{fill:none;stroke:currentColor}.rhi-picture{display:grid;grid-template-columns:minmax(0,1fr);gap:7px}.rhi-screen{min-width:0;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--bg);overflow:hidden}.rhi-screen-label{display:block;margin-bottom:8px;color:var(--muted);font-size:11px;font-weight:700}.rhi-theme{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:9px}.rhi-poster{width:42px;height:54px;display:grid;place-items:center;overflow:hidden;background-size:cover!important;background-position:center!important}.rhi-poster .ph{font-size:12px;color:var(--faint)}.rhi-theme>span:last-child{min-width:0;display:flex;flex-direction:column;gap:3px}.rhi-theme>span:last-child>b,.rhi-theme small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rhi-theme>span:last-child>b{font-size:13px}.rhi-theme small{color:var(--muted);font-size:11px}.rhi-list-screen .avpickrow{grid-template-columns:42px minmax(0,1fr);gap:9px;margin-top:8px;padding-top:8px}.rhi-list-screen .avpicklabel{padding-top:6px}.rhi-list-screen .avslots{padding-top:2px}.rhi-list-screen .avslot{height:27px;min-height:27px;max-height:27px;padding:0 9px}.rhi-flow{height:22px;display:flex;align-items:center;justify-content:center;gap:7px;color:var(--muted);font-size:11px}.rhi-flow span{display:grid;place-items:center;transform:rotate(90deg)}.rhi-flow svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2}.rhi-detail-screen{padding-bottom:11px}.rhi-dock{position:static;min-height:76px;grid-template-columns:30px minmax(0,1fr) 82px;gap:7px;padding:8px 9px;border:1px solid var(--border);box-shadow:none;background:var(--surface)}.rhi-dock .reservation-dock-mark{width:30px;height:30px}.rhi-dock .reservation-dock-copy strong{gap:5px}.rhi-dock .reservation-dock-copy strong span{font-size:10px}.rhi-dock .reservation-dock-copy strong b{font-size:15px}.rhi-dock .reservation-dock-copy em{display:none}.rhi-dock .reservation-dock-actions{display:block}.rhi-dock .reservation-dock-actions button{min-height:39px;padding:0 6px;font-size:10.5px}.rhi-note{margin:12px 2px 0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}html[data-theme=light] .rhi-screen{box-shadow:0 8px 22px rgba(45,60,78,.06)}
@media(max-width:359px){.rhi-title h2{font-size:18px}.rhi-title p{font-size:11px}.rhi-screen{padding:8px 9px}.rhi-dock{grid-template-columns:28px minmax(0,1fr) 74px}.rhi-dock .reservation-dock-mark{width:28px;height:28px}.rhi-dock .reservation-dock-copy em{display:none}.rhi-dock .reservation-dock-actions button{font-size:10px}}
/* 장르 배지 안내 — 탐색 행과 상세 배지는 공용 렌더·테마 색상을 유지한다. */
.gbi-title>span svg{fill:none;stroke:currentColor}.gbi-title h2{font-size:20px}.gbi-picture{display:grid;gap:10px}.gbi-screen{min-width:0;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--bg)}.gbi-label{display:block;margin-bottom:6px;color:var(--muted);font-size:11px}.gbi-screen .trow{padding:10px 0}.gbi-screen .trow:last-child{border-bottom:0}.gbi-screen .trow .mid .t{white-space:normal;overflow-wrap:anywhere;font-size:13px}.gbi-detail{display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:10px 0}.gbi-detail+ .gbi-detail{border-top:1px solid var(--border)}.gbi-detail>b{color:var(--text);font-size:13px;overflow-wrap:anywhere}.gbi-detail>div{display:flex;flex-wrap:wrap;gap:6px}
/* 신기능 안내 허브 — 목록 팝업. 무광 카드 목록, 안 본 안내는 NEW 딱지·굵은 제목으로 강조하고 본 항목은 제목만 한 톤 낮춰 다시 볼 수 있다. */
.fh-lead{display:grid;grid-template-columns:44px minmax(0,1fr);gap:11px;align-items:center;margin:2px 0 12px}
.fh-lead>span{width:44px;height:44px;display:grid;place-items:center;color:var(--text);border-radius:50%;background:var(--tag-bg)}
.fh-lead>span svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fh-lead h2{margin:0;font-size:21px;line-height:1.25;letter-spacing:-.035em}.fh-lead p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}
.fh-list{display:flex;flex-direction:column;gap:8px;margin:0 0 12px}
.fh-item{display:grid;grid-template-columns:40px minmax(0,1fr) 15px;align-items:center;gap:12px;width:100%;padding:12px 14px 12px 12px;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--text);text-align:left;transition:scale .2s var(--ease-press),border-color .16s}.fh-item:active{scale:.99}
.fh-ic{width:40px;height:40px;display:grid;place-items:center;color:var(--muted);background:var(--tag-bg);border-radius:50%}
.fh-ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fh-tx{min-width:0;display:flex;flex-direction:column;gap:3px}.fh-tx b{display:flex;align-items:center;gap:6px;font-size:13.5px;letter-spacing:-.02em}.fh-tx small{color:var(--muted);font-size:12px;line-height:1.4;word-break:keep-all}
.fh-new{flex:none;padding:1px 6px;color:#fff;background:var(--p5);font-size:11px;font-weight:800;font-style:normal;letter-spacing:.02em;line-height:1.35;border-radius:6px}
.fh-lead .fh-new{display:inline-block;vertical-align:1px;margin:0 1px}
.fh-item.new{background:var(--matte-tint)}
.fh-item.new .fh-ic{color:var(--text)}
.fh-item:not(.new) .fh-tx b{font-weight:700;color:color-mix(in srgb,var(--text) 82%,var(--muted))}
.fh-go{color:var(--faint)}.fh-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
/* 리뷰 서식·스포 가림 안내 — 실제 리뷰 렌더 클래스(revtext rich·rev-spoiler)를 축소 없이 재사용 */
.rfi-mark{display:grid;place-items:center}
.rfi-mark svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.9}
.rfi-picture{display:grid;grid-template-columns:1fr;pointer-events:none;margin-bottom:10px}
.rfi-mock{padding:12px 13px 13px;background:var(--bg)}
.rfi-mock .revtext{font-size:13.5px;line-height:1.75}

/* 탐색 필터 6칸 — 작은 기기에서도 한 줄 유지. 플레이 상태는 한 버튼 안의 잠금/해제 전환으로 합친다. */
.toolbar:has(.fchip.availability){padding-left:12px;padding-right:12px;gap:5px}.toolbar:has(.fchip.availability) .fchip.ic{min-width:34px;width:34px;padding:0}
.avtoolbar{justify-content:space-between;gap:12px}.avtoolbar .filtrow{min-width:0;flex:none}/* 탐색 지역 버튼 — 옆 필터 캡슐(.filtrow)과 같은 유리 알약 [2026-09-28]. 붉은 핀 + 지역명(상권 ‘전체’만 옅게) + 펼침 화살표 */
.avregionpick{flex:0 1 auto;max-width:170px;height:38px;min-width:0;display:inline-flex;align-items:center;gap:6px;padding:0 8px 0 4px;border-radius:999px;color:var(--text);text-align:left;
  border:1px solid transparent;background:none;box-shadow:none;transition:scale .2s cubic-bezier(.3,.7,.4,1)} /* 무배경 — 유저 지시(2026-09-28) */
.avregionpick:active{scale:.96}.avregionpick:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.avregionpick .avregionpin{width:16px;height:16px;display:grid;place-items:center;flex:none;color:var(--p5)}.avregionpick .avregionpin svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.avregionpick>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:900;letter-spacing:-.035em}.avregionpick>b i{font-style:normal}.avregionpick>b i.all{color:var(--muted);font-weight:700}
.avregionpick>svg{width:10px;height:10px;flex:none;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2.4}
.explore-region-toolbar{justify-content:space-between;gap:8px;padding-top:10px}.explore-region-toolbar .avregionpick{max-width:100%}.explore-region-toolbar .avregionpick.bypass{opacity:.35;filter:saturate(.35)}.explore-region-toolbar .filtrow{flex:none;justify-content:flex-end;min-width:0}
.view-explore .toolbar:not(.explore-region-toolbar):not(.avtoolbar) .filtrow{margin-left:auto}
.playedcycle{position:relative;overflow:visible}.playedcycle .pcico{position:relative;left:1px;width:17px;height:17px;display:grid;place-items:center}.playedcycle .pcico>span{position:absolute;inset:0;display:grid;place-items:center;transition:opacity .24s,transform .36s var(--ease-out)}.playedcycle .pcico svg{display:block;margin:auto}.playedcycle .pc-open{opacity:0;transform:translateY(3px) rotate(-12deg) scale(.72)}.playedcycle.st-not{--fc:var(--p5)}.playedcycle.st-me{--fc:var(--success)}.playedcycle.st-me .pc-closed{opacity:0;transform:translateY(-3px) rotate(10deg) scale(.7)}.playedcycle.st-me .pc-open{opacity:1;transform:none}.playedcycle.turn .pcico{animation:playedTurn .44s cubic-bezier(.18,.95,.3,1)}
@keyframes playedTurn{0%{transform:scale(1)}45%{transform:translateY(-3px) rotate(-6deg) scale(.88)}100%{transform:none}}
.availability-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.availability-icon .availability-check{stroke-width:2.35}.fchip.availability .availability-icon{width:18px;height:18px;stroke-width:1.65}.fchip.ic.availability.on{--fc:var(--success);color:#06110f;
  background:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,0) 55%),linear-gradient(180deg,color-mix(in srgb,var(--fc) 90%,#fff),color-mix(in srgb,var(--fc) 94%,#000));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),inset 0 1px 0 rgba(255,255,255,.3),0 2px 7px -2px color-mix(in srgb,var(--fc) 55%,transparent)}
html[data-theme=light] .fchip.availability.on{--fc:#57DCCB;color:#063B35;box-shadow:inset 0 0 0 1px rgba(4,65,55,.16),inset 0 1px 0 rgba(255,255,255,.45),0 1px 4px rgba(20,90,80,.22)}
.avcontrols{display:contents}.avdates{display:flex;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;gap:4px;margin:7px 12px 5px;padding:4px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);border-radius:22px}.avdates::-webkit-scrollbar{display:none}
.avdate{min-width:0;flex:0 0 calc((100% - 24px)/7);scroll-snap-align:start;padding:6px 1px 7px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--faint);border:1px solid transparent;border-radius:18px}.avdate span{font-size:10px;font-weight:800}.avdate b{font-family:var(--fn);font-size:11.5px;white-space:nowrap}.avdate.today span{color:var(--gold)}.avdate.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}.avdate.on span{color:currentColor}
.avtools{display:grid;grid-template-columns:86px minmax(0,1fr) 104px;gap:6px;margin:5px 12px 2px}.avsort,.avrange,.avonly{min-width:0;min-height:48px;display:flex;align-items:center;text-align:left;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);border-radius:16px;transition:border-color .15s,background .15s,transform .15s}.avsort:active,.avrange:active,.avonly:active{transform:scale(.985)}.avsort{justify-content:space-between;gap:4px;padding:7px 8px;color:var(--text)}.avsort>span{min-width:0;display:flex;flex-direction:column;gap:2px}.avsort small{font-size:9.5px;color:var(--faint)}.avsort b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.avsort>svg{width:11px;flex:none;color:var(--gold)}.avrange{gap:8px;padding:7px 9px;color:var(--text)}.avrange>svg{width:13px;flex:none;margin-left:auto;color:var(--faint)}.avrangeicon{width:27px;height:27px;display:grid;place-items:center;color:var(--gold);border-radius:50%;background:color-mix(in srgb,var(--gold) 12%,transparent)}.avrangeicon svg{width:15px;height:15px;fill:none;stroke:currentColor}.avrange>span:nth-child(2),.avonly>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:2px}.avrange small,.avonly small{font-size:9.5px;color:var(--faint)}.avrange b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.avrange.on{border-color:color-mix(in srgb,var(--gold) 42%,transparent)}
.avonly{gap:7px;padding:7px 8px;color:var(--muted)}.avonlyicon{width:25px;height:25px;display:grid;place-items:center;color:var(--faint);border:1px solid var(--glass-line);border-radius:50%}.avonlyicon svg{width:14px;height:14px;fill:none;stroke:currentColor}.avonly b{font-size:11px;white-space:nowrap}.avonly.on{color:var(--success);border-color:color-mix(in srgb,var(--success) 42%,transparent);background:color-mix(in srgb,var(--success) 12%,var(--surface2))}.avonly.on .avonlyicon{color:#07120f;border-color:var(--success);background:var(--success)}
/* 시간 범위는 시작·종료 숫자를 따로 보존해 좁은 폭에서도 말줄임 없이 읽힌다. */
.avrange b{display:flex;align-items:center;gap:3px;overflow:visible;text-overflow:clip;white-space:nowrap;font-size:clamp(9px,2.8vw,11px);letter-spacing:-.025em}.avrange b i{color:var(--faint);font-style:normal}
/* 예약 보기 상단 자동 축약 — 모든 화면에서 선택일과 설정을 한 줄로 합치고, 선택일을 누르면 전체 날짜를 다시 펼친다. */
.view-explore.avhead-ready .scroll{overflow-anchor:none}.view-explore.avhead-ready .avlist{padding-bottom:calc(112px + env(safe-area-inset-bottom))}.view-explore.avhead-ready .searchbar{max-height:56px;overflow:hidden;transition:max-height .24s cubic-bezier(.22,.82,.2,1),margin .24s cubic-bezier(.22,.82,.2,1),opacity .18s ease,border-width .18s ease,border-color .18s ease}.view-explore.avhead-ready .avtoolbar{transition:min-height .24s cubic-bezier(.22,.82,.2,1),margin .24s cubic-bezier(.22,.82,.2,1),padding .24s cubic-bezier(.22,.82,.2,1)}.view-explore.avhead-ready .avdates{transition:height .24s cubic-bezier(.22,.82,.2,1),margin .24s cubic-bezier(.22,.82,.2,1),padding .24s cubic-bezier(.22,.82,.2,1),gap .24s cubic-bezier(.22,.82,.2,1)}.view-explore.avhead-ready .avdate{transition:height .24s cubic-bezier(.22,.82,.2,1),padding .24s cubic-bezier(.22,.82,.2,1),opacity .2s ease,transform .24s cubic-bezier(.22,.82,.2,1)}
.view-explore.avhead-collapsed .searchbar{max-height:0;margin-top:0;opacity:0;border-width:0;border-color:transparent;pointer-events:none}.view-explore.avhead-collapsed .avtoolbar{min-height:42px;padding-top:4px;padding-bottom:4px}.view-explore.avhead-collapsed .avcontrols{display:grid;grid-template-columns:clamp(78px,23vw,96px) minmax(0,1fr);align-items:stretch;width:calc(100% - 24px);gap:6px;margin:4px auto 3px}.view-explore.avhead-collapsed .avdates{position:relative;height:48px;overflow:hidden;margin:0;padding:4px;gap:0}.view-explore.avhead-collapsed .avdate:not(.on){position:absolute;inset:4px;opacity:0;pointer-events:none;transform:translateY(-4px) scale(.96)}.view-explore.avhead-collapsed .avdate.on{position:relative;flex:1 1 auto;height:38px;flex-direction:row;justify-content:center;gap:5px;padding:2px 17px 2px 4px;cursor:pointer}.view-explore.avhead-collapsed .avdate.on::after{content:"";position:absolute;right:8px;top:50%;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-68%) rotate(45deg)}
.view-explore.avhead-collapsed .avtools{width:100%;grid-template-columns:68px minmax(103px,1fr) 42px;gap:4px;margin:0}.view-explore.avhead-collapsed .avsort,.view-explore.avhead-collapsed .avrange,.view-explore.avhead-collapsed .avonly{min-height:48px}.view-explore.avhead-collapsed.avdate-open .avcontrols{grid-template-columns:minmax(0,1fr);gap:6px}.view-explore.avhead-collapsed.avdate-open .avdates{height:52px;overflow-x:auto;padding:5px;gap:4px}.view-explore.avhead-collapsed.avdate-open .avdate{position:static;flex:0 0 calc((100% - 24px)/7);height:auto;flex-direction:column;justify-content:flex-start;gap:3px;padding:6px 1px 7px;opacity:1;pointer-events:auto;transform:none}.view-explore.avhead-collapsed.avdate-open .avdate.on::after{display:none}
@media(max-width:999px){.view-explore.avhead-collapsed .avrangeicon{display:none}.view-explore.avhead-collapsed .avsort{padding-left:6px;padding-right:6px}.view-explore.avhead-collapsed .avsort small{display:none}.view-explore.avhead-collapsed .avsort b{font-size:8.5px}.view-explore.avhead-collapsed .avrange{gap:3px;padding-left:7px;padding-right:6px}.view-explore.avhead-collapsed .avrange b{gap:1px;font-size:9px}.view-explore.avhead-collapsed .avonly{justify-content:center;padding:4px}.view-explore.avhead-collapsed .avonlyicon{display:grid}.view-explore.avhead-collapsed .avonly>span:nth-child(2){display:none}}
@media(max-width:399px){.avrangeicon{display:none}}
@media(prefers-reduced-motion:reduce){.view-explore.avhead-ready .searchbar,.view-explore.avhead-ready .avtoolbar,.view-explore.avhead-ready .avdates,.view-explore.avhead-ready .avdate{transition:none}}
.avmeta,.avsum{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:9px 14px 0}.avmeta{font-size:11px;color:var(--faint)}
.avmeta b{font-size:10px;color:var(--gold);font-weight:750;white-space:nowrap}
.avwarn,.avstale{display:flex;align-items:center;margin:9px 14px 0;padding:9px 11px;border:1px solid rgba(255,207,92,.32);border-left:2px solid var(--gold);background:linear-gradient(90deg,rgba(255,207,92,.1),transparent);color:var(--muted);font-size:10px;line-height:1.4}.avstale{border-color:rgba(255,138,60,.32);border-left-color:var(--dhot);color:var(--dhot)}
.avsum{--av-ratio:0%;position:relative;min-height:39px;padding:8px 1px 10px;color:var(--muted)}.avsum::before,.avsum::after{content:"";position:absolute;left:0;bottom:2px;height:2px}.avsum::before{right:0;background:var(--surface3)}.avsum::after{width:var(--av-ratio);max-width:100%;background:var(--success);transition:width .24s ease}.avsum>span{font-size:10px;font-weight:750;color:var(--muted)}.avsum>strong{display:flex;align-items:baseline;gap:5px;margin-left:auto;font-style:normal;font-weight:700}.avsum>strong b{font-family:var(--fn);font-size:18px;line-height:1;color:var(--success)}.avsum>strong i{font-family:var(--fn);font-size:9px;font-style:normal;color:var(--faint)}.avsum>strong em{font-family:var(--fn);font-size:12px;font-style:normal;color:var(--muted)}
.avlist{display:flex;flex-direction:column;gap:7px;padding:7px 12px 26px}.avrow{width:100%;min-height:92px;position:relative;padding:8px;text-align:left;color:var(--text);border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:border-color .15s,transform .15s}.avtheme{width:100%;display:grid;grid-template-columns:56px minmax(0,1fr) 22px;align-items:center;gap:11px;color:var(--text);text-align:left}.avtheme:active{transform:scale(.992)}.avrow.has-selection{border-color:color-mix(in srgb,var(--success) 50%,var(--border))}.avrow.no-slots{background:var(--surface)}.avrow.st-unopened{border-color:color-mix(in srgb,var(--gold) 30%,var(--border))}.avrow.st-error{border-color:color-mix(in srgb,var(--dhot) 30%,var(--border))}.avrow.no-slots .avgo{color:var(--faint)}.avposter{position:relative;width:56px;height:74px;border-radius:8px;display:grid;place-items:center;overflow:hidden;background-size:cover!important;background-position:center!important}.avposter .ph{font-size:16px;color:var(--faint)}.avcopy{min-width:0;display:flex;flex-direction:column;gap:3px}.avtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:900}.avstore{display:flex;align-items:center;gap:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px}.avfast{--avfast-ring:var(--p5);--avfast-mark:var(--gold);width:18px;height:18px;display:grid;place-items:center;flex:none;padding:0;border:0;border-radius:0;background:none;box-shadow:none;font-style:normal}.avfast.weekend{--avfast-ring:var(--gold);--avfast-mark:var(--p5)}.avfast svg{width:18px;height:18px;display:block;overflow:visible}.fast-refresh-ring,.fast-refresh-arrow{fill:none;stroke:var(--avfast-ring);stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.fast-refresh-keyhole{fill:var(--avfast-mark)}html[data-theme=light] .avfast{--avfast-ring:#C40226;--avfast-mark:#8A6200}html[data-theme=light] .avfast.weekend{--avfast-ring:#8A6200;--avfast-mark:#C40226}.avpickrow{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:start;gap:11px;margin-top:5px;padding-top:6px;border-top:1px solid var(--hairline)}.avpicklabel{padding-top:7px;color:var(--faint);font-size:10px;font-weight:800;text-align:center}.avslots{display:flex;flex-wrap:nowrap;gap:5px 6px;min-width:0;overflow-x:auto;overflow-y:hidden;padding:4px 0 1px;scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overscroll-behavior-x:contain}.avslots::-webkit-scrollbar{display:none}.avslot{display:inline-flex;align-items:center;justify-content:center;flex:none;min-height:28px;padding:0 12px;color:color-mix(in srgb,var(--success) 80%,var(--text));background:color-mix(in srgb,var(--success) 10%,transparent);border:1px solid color-mix(in srgb,var(--success) 24%,transparent);border-radius:10px;font-family:var(--fn);font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}button.avslot{cursor:pointer;transition:filter .15s,transform .12s}button.avslot:hover{filter:brightness(1.08)}button.avslot:active{transform:scale(.96)}button.avslot.selected{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 60%,transparent);background:color-mix(in srgb,var(--gold) 15%,var(--surface));box-shadow:none}.avnoslot{padding:4px 0 2px;color:var(--faint);font-size:11px;font-style:normal}.avrow.st-unopened .avnoslot{color:var(--gold)}.avgo{color:var(--success)}.avgo svg{width:16px}.avempty{padding-top:44px}.avempty>.ic svg{width:48px;height:48px}
.avrow.st-not_operating .avnoslot{color:var(--muted)}
.avnoslot .ro-mini{font-size:10px}
/* 예약 시간은 밀집 선택지다. 보이는 칩과 실제 버튼을 같은 28px로 고정해 이웃 시간을 침범하지 않는다. */
.avslot{height:32px;min-height:32px;max-height:32px}
button.avslot:active{transform:none;filter:brightness(.94)}
/* 오픈룸(다인 예약) 남은 매수 — 같은 회차 칩 안에 시간 + 작은 매수 알약 */
.avslot.openroom{align-items:center;gap:6px;padding:0 4px 0 11px;overflow:hidden;clip-path:none;letter-spacing:0}
.avslot.openroom .avs-t{display:inline-flex;align-items:center;padding:0;background:none;color:inherit}
.avslot.openroom .avs-n{display:inline-flex;align-items:center;gap:1px;height:22px;padding:0 6px;border-radius:7px;background:color-mix(in srgb,var(--success) 16%,transparent);color:inherit;font-size:11px;letter-spacing:.02em}
.avslot.openroom .avs-n em{font-style:normal;font-size:8px;font-weight:800;opacity:.82}
button.avslot.openroom.selected .avs-t{background:none;color:inherit}
button.avslot.openroom.selected .avs-n{background:color-mix(in srgb,var(--gold) 22%,transparent);color:inherit}
html[data-theme=light] .avslot.openroom .avs-t{background:none;color:inherit}
html[data-theme=light] .avslot.openroom .avs-n{background:rgba(23,138,80,.13);color:#0B5A3B;border-left:0}
html[data-theme=light] .avslot.openroom .avs-n em{font-size:8px;opacity:1}
html[data-theme=light] button.avslot.selected{color:#76520A;border-color:#B98722;background:#FFF1C6;box-shadow:inset 0 0 0 1px rgba(185,135,34,.2)}
html[data-theme=light] button.avslot.openroom.selected .avs-t{color:inherit;background:none}
html[data-theme=light] button.avslot.openroom.selected .avs-n{color:#684808;background:#F1D890;border-left-color:transparent}
.avrow{min-height:139px}.avposter{height:96px}.avcopy{gap:3px}.avstore{min-width:0;overflow:visible;text-overflow:clip}.avstore>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avstore .avchecked{flex:none;margin-left:auto;font-family:var(--fn);font-size:7.5px;font-style:normal;color:var(--faint);white-space:nowrap}
/* 예약 카드 정보 HUD — 평점/플레이는 탐색 카드와 같은 문법, 시간은 틸 타이머, 체감축은 상승형 세로 바. */
.avintel{display:grid;grid-template-columns:max-content max-content minmax(96px,1fr);align-items:center;gap:7px;min-width:0;padding:2px 0}.avsocial{display:flex;flex-direction:column;align-items:flex-start;gap:3px}.avsocial .ratebadge{display:flex;align-items:center;gap:6px;padding:4px 10px;background:linear-gradient(135deg,rgba(255,255,255,.05),rgba(255,255,255,.015));border:1px solid var(--hairline);border-radius:6px;position:relative;overflow:hidden}.avsocial .ratebadge::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:linear-gradient(90deg,var(--p5),rgba(228,3,43,.16) 72%,transparent)}.avsocial .ratebadge.norating{background:var(--surface2)}.avsocial .ratebadge.norating::after{display:none}.avsocial .rt{font-family:var(--fn);font-weight:800;font-size:15px;color:var(--text);line-height:1;transform:skewX(-6deg)}.avsocial .norating .rt{color:var(--faint)}.avplays{padding-left:2px;font-size:9px;color:var(--faint)}
.avduration{display:flex;align-items:center;justify-content:center;gap:4px;min-width:50px;height:42px;padding:0 7px 0 6px;color:var(--gold);border:1px solid rgba(255,207,92,.3);background:linear-gradient(135deg,rgba(255,207,92,.08),rgba(255,255,255,.015));clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%)}.avduration>svg{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8}.avduration>span{display:flex;flex-direction:column;align-items:flex-start;line-height:1}.avduration b{font-family:var(--fn);font-size:14px;color:var(--text)}.avduration em{margin-top:3px;font-size:7px;font-style:normal;color:var(--muted)}
.avsenses{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0}.avvmeter{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:42px}.avvbars{display:flex;align-items:flex-end;justify-content:center;gap:2px;height:23px}.avvbars i{display:block;width:4px;border-radius:1px 1px 0 0;background:var(--surface3);transform:skewX(-8deg)}.avvbars i:nth-child(1){height:7px}.avvbars i:nth-child(2){height:10px}.avvbars i:nth-child(3){height:13px}.avvbars i:nth-child(4){height:17px}.avvbars i:nth-child(5){height:21px}.avvbars i.on{background:var(--avc)}.avvmeter small{display:flex;align-items:baseline;gap:3px;font-size:7px;color:var(--faint);white-space:nowrap}.avvmeter small b{font-family:var(--fn);font-size:8px;color:var(--muted)}.avvmeter.fear .avvbars{padding:0 3px;border-bottom:1px solid var(--hairline)}.avvmeter.unset{opacity:.52}
/* 탐색 예약 가능 시간 카드 (2026-09-30 리디자인, 이전 디자인은 app.js availabilityRowClassic 옛 행) —
   탐색 목록(.trow)과 같은 칩·평점 꼬리를 쓰고, 아래 칸은 상태 한 줄(예약 가능 n · 매진 · 오픈 딱지 · 지연)과 갱신 시각 + 회차 칩. */
.avcard{min-height:0;padding:0;border:1px solid var(--hairline);border-radius:16px;background:var(--surface);overflow:hidden}
.avcard.no-slots{background:color-mix(in srgb,var(--surface) 52%,transparent)}
.avcard.has-selection{border-color:color-mix(in srgb,var(--gold) 46%,var(--hairline))}
.avcard .avtheme{grid-template-columns:58px minmax(0,1fr) 64px;align-items:center;gap:12px;padding:11px 0 11px 11px}
.avcard .avtheme:focus-visible{outline:2px solid var(--focus);outline-offset:-3px;border-radius:15px 15px 4px 4px}
.avcard .avposter{width:58px;height:78px;border-radius:9px}
.avcard .avcopy{gap:0}
.avcard .avtitle{font-size:15px;font-weight:800}
.avcard .avstore{display:block;margin-top:3px;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avtags{display:flex;align-items:center;gap:3px;min-width:0;margin-top:7px;overflow:hidden}.avtags>*{flex-shrink:0}
.avtags .pmeter{gap:4px;padding:3px 7px}.avtags .pmeter .pml{font-size:10.5px}.avtags .pmeter .pms{gap:1.5px}.avtags .pmeter .pms i{width:3px;height:8px}
.avend{align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;margin:-11px 0;padding:0 2px;
  background:radial-gradient(110% 80% at 50% 40%,color-mix(in srgb,var(--gc,transparent) 13%,transparent),transparent 74%)}
.avend .ratebadge{display:flex;align-items:center;gap:4px}.avend .ratebadge svg{flex:0 0 auto;width:16px;height:16px}
.avend .rt{font-family:var(--fn);font-size:18px;font-weight:700;line-height:1;letter-spacing:-.06em;color:var(--text);font-variant-numeric:tabular-nums}
.avend .norating .rt{font-weight:500;color:var(--faint)}
.avend .tplays{font-size:10px;font-weight:600;line-height:1;letter-spacing:.01em;color:var(--faint);white-space:nowrap}
.avcard .avpickrow{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin:0;padding:9px 11px 11px;border-top:1px solid var(--hairline)}
.avpickhead{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;min-height:18px}
.avstate{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11.5px;font-weight:700}
.avstate b{margin-left:2px;font-size:12.5px;color:var(--success)}
.avcard.st-sold_out .avstate{color:var(--muted)}.avcard:is(.st-not_operating,.st-pending) .avstate{color:var(--faint)}
.avcard.st-unopened .avstate{color:var(--gold)}.avcard.st-error .avstate{color:var(--dhot)}
.avstate .ro-mini{font-size:10px;vertical-align:middle}
.avfresh{display:inline-flex;align-items:center;gap:4px;flex:none;color:var(--faint);font-size:10px;font-variant-numeric:tabular-nums}
.avfresh .avfast{width:16px;height:16px}.avfresh .avfast svg{width:16px;height:16px}
.avcard .avslots{gap:6px;margin:0 -11px;padding:0 11px;scroll-padding-inline:11px}
.avsum2{display:flex;align-items:center;gap:8px;margin:11px 14px 0;padding:0 2px;color:var(--muted);font-size:11.5px;font-weight:700}
.avsum2 strong{display:flex;align-items:baseline;gap:1px;color:var(--faint);font-size:11px;font-weight:700}
.avsum2 strong b{font-size:15px;color:var(--success)}.avsum2 strong i{margin:0 2px;font-style:normal}
.avsum2bar{flex:0 0 44px;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--success) var(--av-ratio,0%),var(--surface3) 0)}
.avsum2 em{margin-left:auto;padding:3px 9px;border-radius:999px;color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);font-size:10px;font-style:normal;font-weight:750;white-space:nowrap}
@media(max-width:359px){.avcard .avtheme{grid-template-columns:50px minmax(0,1fr) 54px;gap:9px;padding-left:9px}.avcard .avposter{width:50px;height:68px}.avcard .avpickrow{padding-left:9px;padding-right:9px}.avcard .avslots{margin:0 -9px;padding:0 9px}
  .avend .ratebadge svg{width:14px;height:14px}.avend .rt{font-size:16px}.avend .tplays{font-size:9.5px}.avtags{gap:2px}.avtags .pmeter{gap:3px;padding-left:5px;padding-right:5px}.avtags .pmeter .pml{font-size:10px}}
/* 시간 범위 시트 — 시작·종료를 각각 크게 조절하고 현재 창을 한 줄로 확인한다. */
.avrangelead{display:grid;grid-template-columns:1fr auto;align-items:center;gap:5px 12px;margin-bottom:12px;padding:13px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.avrangelead>span{color:var(--muted);font-size:12px;font-weight:700}.avrangelead>b{font-size:17px;color:var(--text)}.avrangelead>small{grid-column:1/-1;color:var(--muted);font-size:11.5px;line-height:1.45}.avdirecthint{min-height:14px;margin:0 1px;color:var(--faint);font-size:11px}.avdirecthint.error{color:var(--p4)}.avrangefield{margin-top:12px}.avrangefieldhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;color:var(--muted);font-size:10px}.avclockedit{height:32px;display:flex;align-items:center;gap:5px;padding:0 8px;border:1px solid var(--hairline);background:var(--surface2);color:var(--text);transition:border-color .15s,background .15s}.avclockedit:focus-within{border-color:var(--gold);background:rgba(255,207,92,.06)}.avclockedit input{width:53px;padding:0;border:0;outline:0;background:transparent;color:inherit;font-size:14px;font-weight:800;text-align:center}.avclockedit input[aria-invalid=true]{color:var(--p4)}.avclockedit span{width:13px;height:13px;display:grid;place-items:center;color:var(--gold)}.avclockedit svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8}.avrangefield>input[type=range]{--range-value:50%;width:100%;height:22px;margin:0;appearance:none;background:transparent}.avrangefield>input[type=range]::-webkit-slider-runnable-track{height:4px;background:linear-gradient(90deg,var(--gold) 0 var(--range-value),var(--surface3) var(--range-value) 100%)}.avrangefield>input[type=range]::-webkit-slider-thumb{width:18px;height:18px;margin-top:-7px;appearance:none;border:2px solid var(--gold);border-radius:1px;background:var(--surface);box-shadow:0 0 0 3px rgba(255,207,92,.12)}.avrangefield>input[type=range]::-moz-range-track{height:4px;background:var(--surface3)}.avrangefield>input[type=range]::-moz-range-progress{height:4px;background:var(--gold)}.avrangefield>input[type=range]::-moz-range-thumb{width:16px;height:16px;border:2px solid var(--gold);border-radius:1px;background:var(--surface)}.avrangeticks{position:relative;height:9px;margin-top:-1px;color:var(--faint);font-size:7px}.avrangeticks span{position:absolute;top:0;transform:translateX(-50%)}.avrangeticks span:nth-child(1){left:0;transform:none}.avrangeticks span:nth-child(2){left:22.22%}.avrangeticks span:nth-child(3){left:44.44%}.avrangeticks span:nth-child(4){left:66.67%}.avrangeticks span:nth-child(5){left:88.89%}.avrangeticks span:nth-child(6){right:0;transform:none}.avpresets{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:18px}.avpresets button{min-height:36px;color:var(--muted);font-size:10px;border:1px solid var(--hairline);background:var(--surface2)}.avpresets button:active{color:var(--gold);border-color:rgba(255,207,92,.4)}.avrangeactions{display:grid;grid-template-columns:1fr 1.5fr;gap:7px;margin-top:16px}.avrangeactions .btn{width:100%}
/* 예약 가능 시간 지역 선택 — 기존 두 줄 지역 탭을 한 버튼과 시트로 압축 */
/* 지역 선택 시트(탐색·매장 검색 공용, app.js openRegionPickSheet) — 유리 알약 [2026-09-28].
   시·도 6열 격자(전국 포함) → 고른 시·도의 상권 알약 흐름 → 고른 지역을 그대로 읽는 하단 고정 적용 버튼.
   선택은 기록 탭 렌즈(.rt-glass)와 같은 절제한 붉은 유리, 나머지는 툴바와 같은 옅은 유리. 높이를 고정해 시·도를 바꿔도 시트가 출렁이지 않는다 */
.avregion-sheet{height:min(680px,88vh)}
.avregion-sheet .sh-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;padding-top:4px;padding-bottom:0}
.avregion-head{margin:0 2px 10px;font-size:12.5px;font-weight:800;letter-spacing:-.01em;color:var(--muted)}
.avregion-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px 6px}
.avregion-chips{display:flex;flex-wrap:wrap;gap:7px 6px}
.avregion-grid button,.avregion-chips button{display:block;min-width:0;max-width:100%;height:40px;padding:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:38px;text-align:center;
  font-size:13.5px;font-weight:700;letter-spacing:-.02em;color:var(--text);border-radius:999px;border:1px solid var(--glass-line);
  background:var(--glass-bg);
  box-shadow:var(--glass-hi);transition:color .18s,background .18s,border-color .18s,box-shadow .18s,scale .2s cubic-bezier(.3,.7,.4,1)}
.avregion-chips button{height:38px;padding:0 15px;line-height:36px}
@media(hover:hover){.avregion-grid button:not(.on):hover,.avregion-chips button:not(.on):hover{border-color:color-mix(in srgb,var(--text) 24%,transparent)}}
.avregion-grid button:active,.avregion-chips button:active{scale:.95}
.avregion-grid button:focus-visible,.avregion-chips button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.avregion-grid button.on,.avregion-chips button.on,.avregion-sheet .avregion-apply{color:#fff;border-color:transparent;
  background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,0) 55%),linear-gradient(180deg,color-mix(in srgb,var(--p5) 92%,#fff),color-mix(in srgb,var(--p5) 94%,#000));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 0 0 1px rgba(255,255,255,.07),0 2px 6px -2px color-mix(in srgb,var(--p5) 32%,transparent)}
.avregion-grid button.on,.avregion-chips button.on{font-weight:800}
.avregion-subbox{flex:1 0 auto;display:flex;flex-direction:column;margin-top:22px}
/* 전국 — 상권 대신 남는 자리 가운데에 지구 표식 한 줄 */
.avregion-allnote{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;margin:0;padding:18px 12px 30px;color:var(--muted);font-size:13.5px;font-weight:600;letter-spacing:-.01em;text-align:center}
.avregion-allnote>span{width:56px;height:56px;display:grid;place-items:center;border-radius:50%;color:var(--muted);border:1px solid var(--glass-line);
  background:var(--glass-bg);box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.avregion-allnote>span svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6}
/* 적용 — 목록이 길어도 늘 보이게 본문 바닥에 고정, 위로 흐르는 알약은 바탕색으로 스며 사라진다 */
.avregion-foot{position:sticky;bottom:0;z-index:2;margin:auto -20px 0;padding:16px 20px 2px;background:linear-gradient(180deg,transparent,var(--bg2) 14px)}
.avregion-sheet .avregion-apply{width:100%;height:50px;padding:0 18px;border-radius:999px;font-size:15px;font-weight:800;letter-spacing:-.02em;transition:scale .2s cubic-bezier(.3,.7,.4,1)}
.avregion-apply>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avregion-apply svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;transition:translate .2s}
.avregion-apply:active{scale:.98}
@media(hover:hover){.avregion-apply:hover svg{translate:2px 0}}
.avregion-apply:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
/* 시·도를 바꾸면 상권 알약이 차례로 떠오른다(앞 24개만 순번, 나머지는 한꺼번에) */
.avregion-group.rgp-in .avregion-head,.avregion-allnote.rgp-in{animation:rgpIn .32s cubic-bezier(.25,1,.5,1) both}
.avregion-group.rgp-in .avregion-chips>button{animation:rgpIn .34s cubic-bezier(.25,1,.5,1) both;animation-delay:calc(30ms + var(--k,24) * 12ms)}
@keyframes rgpIn{from{opacity:0;translate:0 6px}}
@media(prefers-reduced-motion:reduce){.avregion-group.rgp-in .avregion-head,.avregion-allnote.rgp-in,.avregion-group.rgp-in .avregion-chips>button{animation:none}}
@media(max-width:359px){.avregion-grid,.avregion-chips{gap:6px 5px}.avregion-grid button,.avregion-chips button{font-size:13px}.avregion-chips button{padding:0 13px}}
/* 상세 예약 정보 안의 7일 보기 진입 — 탐색과 같은 달력+체크 아이콘을 넓은 버튼 문법으로 확장 */
.avweekbtn{width:100%;max-width:330px;min-height:54px;display:grid;grid-template-columns:34px minmax(0,1fr) 16px;align-items:center;gap:10px;margin-top:4px;padding:8px 12px 8px 8px;text-align:left;color:var(--text);border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);transition:border-color .15s,background .15s,transform .15s}.avweekbtn:active{transform:scale(.99)}.avweekicon{width:34px;height:34px;display:grid;place-items:center;color:var(--success);border-radius:50%;background:color-mix(in srgb,var(--success) 14%,transparent)}.avweekicon .availability-icon{width:19px;height:19px;stroke-width:1.65}.avweekcopy{min-width:0;display:flex;flex-direction:column;gap:2px}.avweekcopy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:13.5px;font-weight:800}.avweekcopy small{color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.35;word-break:keep-all}.avweekgo{display:grid;place-items:center;color:var(--muted)}.avweekgo svg{width:14px;height:14px;stroke-width:2}
.avweektheme{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.avweektheme b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px}.avweektheme span{flex:0 1 auto;max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}
/* 테마 상세 '예약 가능 시간' — 날짜(가로)×회차(세로) 표 (2026-10-14). 시트 본문은 고정하고 표 칸만 스크롤한다(머리 줄·시간 열 고정).
   가능·매진은 색과 함께 글자(가능/매진·남은 매수)로도 적어 색 구분이 어려워도 읽힌다. 평일·금요일·주말 시간표가 다를 때만 열을 요일 종류 색으로 물들인다 */
.avweek-sheet .sh-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.avweek-sheet .avweektheme{flex:none}
#avWeekBody{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.avg-legend{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin:0 2px 8px;color:var(--muted);font-size:11.5px;font-weight:700}
.avg-key{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.avg-key i{width:14px;height:14px;display:grid;place-items:center;border-radius:5px;font-style:normal;font-size:11px;line-height:1}
.avg-key.av i{background:color-mix(in srgb,var(--success) 20%,transparent);border:1px solid color-mix(in srgb,var(--success) 50%,transparent)}
.avg-key.so i{background:color-mix(in srgb,var(--danger) 14%,transparent);border:1px solid color-mix(in srgb,var(--danger) 42%,transparent)}
.avg-key.none i{color:var(--faint)}
.avg-legend em{margin-left:auto;color:var(--faint);font-size:11px;font-style:normal;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}
.avg-kinds{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 9px}.avg-kinds b{margin:0 2px;color:var(--faint);font-size:11px;font-weight:750}
/* 평일·금요일·주말 나눠 보기 버튼 — 켜진 종류만 표에 남고, 다시 누르면 전체. 점은 시간표가 실제로 달라 열 색이 있을 때만 */
.avg-kinds button{--avk:color-mix(in srgb,var(--text) 55%,transparent);display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:11.5px;font-weight:750;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}
.avg-kinds button.k-friday{--avk:var(--avk-fri)}.avg-kinds button.k-weekend{--avk:var(--avk-we)}
.avg-kinds i{width:8px;height:8px;flex:none;border-radius:50%;background:var(--avk)}
.avg-kinds button.on{color:var(--text);border-color:color-mix(in srgb,var(--avk) 70%,transparent);background:color-mix(in srgb,var(--avk) 20%,var(--surface))}
@media(hover:hover){.avg-kinds button:not(.on):hover{border-color:var(--glass-line-hi);color:var(--text)}}
.avg-kinds button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.avg-wrap{flex:0 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:16px;background:var(--surface);scrollbar-width:thin}
.avg-wrap:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.avg{min-width:100%;border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}
:where(.avg) :is(th,td){padding:0;font-weight:inherit}
.avg thead th{position:sticky;top:0;z-index:2;height:48px;background:var(--surface);border-bottom:1px solid var(--hairline)}
.avg thead th.avg-corner{left:0;z-index:3}
.avg-corner,.avg-time{width:54px;min-width:54px;border-right:1px solid var(--hairline)}
.avg-corner span{display:block;padding-left:10px;color:var(--faint);font-size:10.5px;font-weight:750;text-align:left}
.avg-day{min-width:46px;padding:0 2px;text-align:center;vertical-align:middle}
.avg-day span{display:block;color:var(--muted);font-size:10.5px;font-weight:750;line-height:1.25}
.avg-day b{display:block;margin-top:2px;color:var(--text);font-family:var(--fn);font-size:12px;font-weight:700;letter-spacing:-.03em;line-height:1.2}
.avg-day.sat span{color:var(--info)}.avg-day.sun span{color:var(--danger)}
.avg-day.today span{width:max-content;margin:0 auto;padding:0 6px;border-radius:999px;background:var(--text);color:var(--bg)}
.avg-time{position:sticky;left:0;z-index:1;padding:0 4px 0 10px;background:var(--surface);color:var(--muted);font-family:var(--fn);font-size:12px;font-weight:600;text-align:left;white-space:nowrap}
.avg tbody tr:first-child>*{padding-top:5px}.avg tbody tr:last-child>*{padding-bottom:5px}
.avg-td{padding:3px 2px;text-align:center;vertical-align:middle}
.avg-cell{width:100%;min-width:40px;max-width:64px;height:30px;display:flex;align-items:center;justify-content:center;gap:1px;margin:0 auto;padding:0;border:1px solid transparent;border-radius:9px;font-size:11.5px;font-weight:800;line-height:1;white-space:nowrap}
.avg-cell.av{color:color-mix(in srgb,var(--success) 80%,var(--text));background:color-mix(in srgb,var(--success) 16%,transparent);border-color:color-mix(in srgb,var(--success) 40%,transparent)}
.avg-cell.av b{font-size:12.5px;font-weight:800}.avg-cell.av small{font-size:9px;font-weight:800;opacity:.85}
.avg-cell.so{color:color-mix(in srgb,var(--danger) 86%,var(--text));background:color-mix(in srgb,var(--danger) 10%,transparent);border-color:color-mix(in srgb,var(--danger) 28%,transparent)}
.avg-cell.none{color:var(--faint);font-weight:600;opacity:.6}
button.avg-cell{cursor:pointer;transition:filter .15s,transform .12s}
@media(hover:hover){button.avg-cell:hover{filter:brightness(1.12)}}
button.avg-cell:active{transform:scale(.94)}
button.avg-cell:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.avg-cell.av.selected{color:var(--gold);background:color-mix(in srgb,var(--gold) 18%,var(--surface));border-color:color-mix(in srgb,var(--gold) 70%,transparent)}
.avg .k-friday{--avk:var(--avk-fri)}.avg .k-weekend{--avk:var(--avk-we)}
.avg-td:is(.k-friday,.k-weekend){background:color-mix(in srgb,var(--avk) 6%,transparent)}
.avg-day:is(.k-friday,.k-weekend){background:linear-gradient(color-mix(in srgb,var(--avk) 14%,transparent),color-mix(in srgb,var(--avk) 14%,transparent)),var(--surface)}
.avg-day:is(.k-friday,.k-weekend)::before{content:"";position:absolute;left:6px;right:6px;top:0;height:3px;border-radius:0 0 3px 3px;background:var(--avk)}
.avg-hint{flex:none;margin:8px 2px 0;color:var(--faint);font-size:11px;line-height:1.45;word-break:keep-all}
html[data-theme=light] .avg-band:is(.st-unopened,.st-opening){--avst:#8A6100}html[data-theme=light] .avg-band.st-error{--avst:#B8560F}html[data-theme=light] .avg-band.st-preopen{--avst:#2E6FCC}
html[data-theme=light] .avg-wrap{box-shadow:0 7px 18px rgba(45,60,78,.055)}
/* ===== 예약 가능 시간·취소표 알림 표 — 두 디자인 공통 모양(2026-10-14 통일: 이전 디자인의 P5·메타포 결) =====
   기울어진 평행사변형 칸과 먹선, 좁은 기울임 숫자 머리, 붉은 칼날 표식. 가능 = 꽉 찬 초록 칼날, 매진 = 사선 해칭을 얹은 빨강,
   선택 = 금색 칼날, 없음 = 흐린 기울임 대시. 다크 모드는 꽉 찬 색이 눈부시지 않게 채움색을 바탕 쪽으로 한 단계 눌러 쓴다(--avg-*).
   테마명 머리(.avweektheme)는 새 디자인 모양 그대로. 발광·점멸 없음 */
:is(.avweek-sheet,.cancel-add-sheet,.avail-grid-intro-sheet){--avk-fri:var(--accent);--avk-we:var(--gold);
  --avg-ok:color-mix(in srgb,var(--success) 72%,#0B0D10);--avg-ok-ink:#03140B;--avg-no:color-mix(in srgb,var(--p5) 66%,#0B0D10);--avg-no-ink:#F4E9EA;
  --avg-sel:color-mix(in srgb,var(--gold) 78%,#0B0D10);--avg-sel-ink:#1A1200;--avg-blade:#08090B;--avg-low:color-mix(in srgb,var(--dhot) 72%,#0B0D10);
  --avg-mark:color-mix(in srgb,var(--p5) 74%,#0B0D10);--avg-rule:color-mix(in srgb,var(--text) 45%,transparent);--avg-stripe:rgba(0,0,0,.22);--avg-dim:76%}
html[data-theme=light] :is(.avweek-sheet,.cancel-add-sheet,.avail-grid-intro-sheet){--avg-ok:#62BC8B;--avg-ok-ink:#06200F;--avg-no:#DC4858;--avg-no-ink:#fff;
  --avg-sel:#F6D486;--avg-sel-ink:#2A1D00;--avg-blade:#3A3326;--avg-low:#EFA067;--avg-mark:color-mix(in srgb,var(--p5) 78%,#fff);--avg-rule:color-mix(in srgb,var(--text) 55%,transparent);--avg-stripe:rgba(0,0,0,.1);--avg-dim:84%} /* 라이트도 채움을 한 톤 밝고 부드럽게 — 초록은 진한 글자, 빨강은 흰 글자로 대비 유지 */
.avg-legend{font-weight:800;letter-spacing:.01em}
.avg-key i{width:17px;height:11px;border:0;border-radius:0;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.avg-key.av i{background:var(--avg-ok)}
.avg-key.so i{background:repeating-linear-gradient(135deg,var(--avg-stripe) 0 2px,transparent 2px 5px),var(--avg-no)}
.avg-key.none i{clip-path:none;font-family:var(--fe);font-style:italic}
.avg-legend em{font-family:var(--fe);font-style:italic;font-size:12px;letter-spacing:.02em}
.avg-kinds button{height:28px;padding:0 14px 0 12px;border:0;border-radius:0;background:var(--surface2);box-shadow:none;color:var(--text);font-weight:800;clip-path:polygon(7px 0,100% 0,calc(100% - 7px) 100%,0 100%)}
.avg-kinds button.on{background:color-mix(in srgb,var(--avk) var(--avg-dim),var(--bg));color:var(--bg)}.avg-kinds button.k-weekday.on{background:color-mix(in srgb,var(--text) var(--avg-dim),var(--bg))}.avg-kinds button.on i{background:var(--bg)}
.avg-kinds button:focus-visible{outline:0;text-decoration:underline 2px;text-underline-offset:3px} /* 칼날 버튼은 clip-path 가 외곽선을 잘라 밑줄로 초점 표시 */
.avg-kinds i{width:5px;height:12px;border-radius:0;transform:skewX(-18deg)}
.avg-wrap{border:0;border-left:3px solid var(--avg-mark);border-radius:0;background:var(--bg2)}
.avg thead th,.avg-time{background:var(--bg2)}
.avg thead th{border-bottom:2px solid var(--avg-rule)}
.avg-corner,.avg-time{border-right:0}
.avg-corner span{font-family:var(--fe);font-style:italic;font-weight:800;letter-spacing:.08em;color:var(--muted)}
.avg-day span{font-weight:800}
.avg-day b{font-family:var(--fe);font-size:15px;font-style:italic;font-weight:800;letter-spacing:0}
.avg-day.today span{padding:0 8px;border-radius:0;background:var(--avg-mark);color:#fff;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.avg-time{font-family:var(--fe);font-size:14px;font-style:italic;font-weight:800;color:var(--text);letter-spacing:.01em}
.avg-time::before{content:"";display:inline-block;width:6px;height:10px;margin-right:5px;background:var(--avg-mark);clip-path:polygon(4px 0,100% 0,2px 100%,0 100%);vertical-align:-1px}
.avg-cell{height:28px;border:0;border-radius:0;clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);letter-spacing:.02em}
.avg-cell.av{background:var(--avg-ok);color:var(--avg-ok-ink);font-weight:900}
.avg-cell.so{background:repeating-linear-gradient(135deg,var(--avg-stripe) 0 2px,transparent 2px 6px),var(--avg-no);color:var(--avg-no-ink);font-weight:900}
.avg-cell.none{font-family:var(--fe);font-style:italic;opacity:.45;clip-path:none}
.avg-cell.av.selected,.avg-cell.pk.on{background:linear-gradient(100deg,transparent 0 8px,var(--avg-blade) 8px 11px,transparent 11px),var(--avg-sel);color:var(--avg-sel-ink);box-shadow:none}
.avg-cell.pk.on{gap:2px;padding:0 4px 0 7px;background:var(--avg-sel)} /* 취소표 선택은 ✓ 가 칼날 선·기울어진 왼쪽 끝에 가리지 않게 칼날 선 없이 금색만, 내용을 칼날 안쪽으로 */
.avg-cell.pk.on svg{width:10px;height:10px;stroke-width:3.4}
button.avg-cell:active{transform:translateX(1px) scale(.95)}
.avg-td:has(button.avg-cell:focus-visible){outline:2px solid var(--focus);outline-offset:-2px} /* 칼날 칸은 clip-path 가 외곽선을 잘라 칸 단위로 표시 */
.avg-day:is(.k-friday,.k-weekend){background:linear-gradient(color-mix(in srgb,var(--avk) 12%,transparent),color-mix(in srgb,var(--avk) 12%,transparent)),var(--bg2)}
.avg-day:is(.k-friday,.k-weekend)::before{left:0;right:0;height:4px;border-radius:0;clip-path:polygon(0 0,100% 0,calc(100% - 4px) 100%,4px 100%)}
/* 판정할 수 없는 날의 띠 — 사선 해칭 위 왼쪽 상태색 칼날 선, 아이콘은 기울어진 칩, 이름은 굵게 */
.avg-band{border-radius:0;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--avst) 14%,transparent) 0 4px,transparent 4px 10px) padding-box;box-shadow:inset 3px 0 0 color-mix(in srgb,var(--avst) var(--avg-dim),var(--bg))}
.avg-bandbox>i{width:28px;border-radius:0;background:color-mix(in srgb,var(--avst) var(--avg-dim),var(--bg));color:var(--bg);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%)}
.avg-band:is(.st-not_operating,.st-pending,.st-ended) .avg-bandbox>i{background:color-mix(in srgb,var(--text) 22%,var(--bg2));color:var(--text)}
.avg-bandbox:not(.opening)>span{font-weight:900}
.avg-bandbox.wide:not(.opening)>span{font-family:var(--fb);font-weight:900;letter-spacing:.02em}
/* 예약 오픈 띠 — 머리(자물쇠·예약 오픈)는 새 디자인 그대로 금색 글자만, 날짜는 기울임 숫자, 오늘·내일은 비스듬한 단계색 칩 */
.avg-open-d em{font-family:var(--fe);font-size:13px;font-style:italic;font-weight:800}
.avg-open-d.rel em{padding:2px 7px;border-radius:0;font-family:var(--fb);font-style:normal;font-size:11px;font-weight:900;clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%)}
.avg-open-d b{font-family:var(--fe);font-size:14px;font-style:italic;font-weight:800;letter-spacing:0}
.avg-open-d+.avg-open-d{border-left:1px solid color-mix(in srgb,var(--avst) 30%,transparent)}
/* 취소표 알림 추가 표 — 선택은 금색 칼날, 날짜 머리 선택 표식·모두 선택은 각진 체크 칸 */
.avg-cell.so.low{background:repeating-linear-gradient(135deg,var(--avg-stripe) 0 2px,transparent 2px 6px),var(--avg-low);color:#1A0B00}
.avg-cell.trk{border:0;background:color-mix(in srgb,var(--gold) 16%,transparent);color:var(--gold);font-weight:900}
.avg-chk{border-radius:0;border-width:2px;transform:skewX(-10deg)}
.avg-chk.some{border-color:var(--avg-sel);background:linear-gradient(var(--avg-sel),var(--avg-sel)) center/6px 6px no-repeat}
.avg-chk.all{border-color:transparent;background:var(--avg-sel);color:var(--avg-sel-ink)}
.cg-all{height:30px;padding:0 15px 0 12px;border:0;border-radius:0;background:var(--surface2);box-shadow:none;clip-path:polygon(7px 0,100% 0,calc(100% - 7px) 100%,0 100%);font-weight:900}
.cg-all.on{background:var(--avg-sel);color:var(--avg-sel-ink)}.cg-all.on .avg-chk{border-color:var(--avg-sel-ink);background:var(--avg-sel-ink);color:var(--avg-sel)}
.cg-all:focus-visible{outline:0;text-decoration:underline 2px;text-underline-offset:3px}
.cg-legend .avg-key.pk i{background:var(--avg-sel)}.cg-legend .avg-key.trk i{border:0;background:color-mix(in srgb,var(--gold) 35%,transparent)}
.cancel-add-sheet .cancel-time-manual button{border-radius:0;clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%)}
.avg-hint{padding-left:8px;border-left:2px solid var(--avg-mark)}
/* 표 개편 안내 — 각진 견본 틀·칼날 표식 */
.agi-title>span{width:52px;border-radius:0;background:var(--avg-ok);color:var(--avg-ok-ink);clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
.agi-shot{border-radius:0;border-left:3px solid var(--avg-mark)}
.agi-points i{border:0;border-radius:0;transform:skewX(-14deg)}
.agi-points i.ok{background:var(--avg-ok)}.agi-points i.no{background:var(--avg-no)}.agi-points i.day{border-radius:0;background:var(--avg-sel)}.agi-points i.kind{border-radius:0;background:linear-gradient(90deg,var(--accent) 0 50%,var(--gold) 50%)}
/* 관리자 주기 선택 — 고빈도 lane의 비용을 선택 지점에서 바로 설명 */
.avcadenceseg button{min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 3px}.avcadenceseg button span{font-size:12px;font-weight:850}.avcadenceseg button small{font-size:11px;font-weight:700;opacity:.78}.avcadenceseg button:disabled{color:var(--faint);background:var(--surface);opacity:.58}
.avspeed{--avspeed:100%;margin-top:8px;padding:11px 12px 9px;border:1px solid var(--hairline);background:var(--surface);transition:opacity .18s,border-color .18s}.avspeed.inactive{opacity:.52}.avspeedhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.avspeedhead>span{color:var(--muted);font-size:9px;font-weight:750}.avspeedhead strong{display:flex;align-items:baseline;gap:2px;font-size:9px;color:var(--muted)}.avspeedhead b{font-family:var(--fn);font-size:22px;line-height:1;color:var(--text)}.avspeedcontrol{display:grid;grid-template-columns:30px minmax(0,1fr) 30px;align-items:center;gap:9px;margin-top:9px}.avspeedcontrol button{width:30px;height:30px;border:1px solid var(--hairline);background:var(--surface2);color:var(--text);font-size:15px;font-weight:700}.avspeedcontrol button:disabled{color:var(--faint)}.avspeedcontrol input{width:100%;height:18px;margin:0;appearance:none;background:transparent;cursor:pointer}.avspeedcontrol input:disabled{cursor:default}.avspeedcontrol input::-webkit-slider-runnable-track{height:4px;background:linear-gradient(90deg,var(--success) var(--avspeed),var(--surface3) var(--avspeed))}.avspeedcontrol input::-webkit-slider-thumb{appearance:none;width:18px;height:18px;margin-top:-7px;border:4px solid var(--text);border-radius:50%;background:var(--bg);box-shadow:0 0 0 1px var(--hairline)}.avspeedcontrol input::-moz-range-track{height:4px;background:var(--surface3)}.avspeedcontrol input::-moz-range-progress{height:4px;background:var(--success)}.avspeedcontrol input::-moz-range-thumb{width:12px;height:12px;border:4px solid var(--text);border-radius:50%;background:var(--bg)}.avspeedmarks{display:flex;justify-content:space-between;gap:8px;margin:2px 39px 0;color:var(--faint);font-size:7px}
.avcapacity{--avcap:0%;margin-top:8px;padding:10px;border:1px solid rgba(56,211,159,.27);background:linear-gradient(105deg,rgba(56,211,159,.065),var(--surface) 56%)}.avcapacity.blocked{border-color:rgba(255,138,60,.35);background:linear-gradient(105deg,rgba(255,138,60,.07),var(--surface) 56%)}.avcapacity.unavailable{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:8.5px}.avcapacity.unavailable b{color:var(--text);font-size:10px}.avcaphead{display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.avcaphead>span{color:var(--muted);font-size:8px}.avcaphead strong{display:flex;align-items:baseline;gap:3px}.avcaphead b{font-family:var(--fn);font-size:17px;color:var(--success)}.avcaphead em{font-size:7.5px;font-style:normal;color:var(--faint)}.avcapacity.blocked .avcaphead b{color:var(--dhot)}.avcapbar{position:relative;height:3px;margin-top:8px;background:var(--surface3);overflow:hidden}.avcapbar i{position:absolute;inset:0 auto 0 0;width:var(--avcap);background:var(--success)}.avcapacity.blocked .avcapbar i{background:var(--dhot)}.avcapmeta,.avcaporigin{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;color:var(--faint);font-size:7.5px}.avcaporigin{padding-top:6px;border-top:1px solid var(--hairline)}.avcaporigin span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avcaporigin b{flex:none;font-family:var(--fn);color:var(--muted)}.avcapacity p{margin:7px 0 0;color:var(--muted);font-size:8.5px;line-height:1.4}.avcapacity.blocked p{color:var(--dhot)}
.avloadwarn{margin-top:8px;padding:9px 10px;border:1px solid rgba(255,138,60,.25);background:rgba(255,138,60,.055);color:var(--muted);font-size:9px;line-height:1.45}
.avdaysscope{margin:0 0 8px;padding:9px 10px;border:1px solid var(--hairline);background:var(--surface)}.avdaysscope>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.avdaysscope>div>span{font-size:10px;font-weight:800}.avdaysscope>div>b{color:var(--text);font-size:10px;text-align:right}.avdaysscope label{display:flex;align-items:center;gap:6px}.avdaysscope input{width:74px;height:34px;text-align:center}.avdaysscope i{color:var(--muted);font-size:9px;font-style:normal}.avdaysscope small{display:block;margin-top:5px;color:var(--faint);font-size:8px}.avdaysscope small b{color:var(--text)}
html[data-theme=light] .avrow{box-shadow:0 7px 18px rgba(45,60,78,.055)}html[data-theme=light] .avslot{color:#0E6B46;background:rgba(23,138,80,.08);border-color:rgba(23,138,80,.22)}html[data-theme=light] .avwarn{background:linear-gradient(90deg,rgba(194,136,0,.09),transparent)}html[data-theme=light] .avsocial .ratebadge{background:linear-gradient(135deg,rgba(20,30,42,.05),rgba(20,30,42,.015))}html[data-theme=light] .avonly.on .avonlyicon{color:#073D35;background:#4CD7C4;border-color:#4CD7C4}html[data-theme=light] .avrangefield input::-webkit-slider-thumb{background:#fff}html[data-theme=light] .avweekicon{color:#13865F;border-color:rgba(19,134,95,.28);background:rgba(19,134,95,.06)}
html[data-theme=light] .avcapacity{border-color:rgba(19,134,95,.28);background:linear-gradient(105deg,rgba(19,134,95,.065),var(--surface) 56%)}html[data-theme=light] .avcapacity.blocked{border-color:rgba(196,80,25,.3);background:linear-gradient(105deg,rgba(196,80,25,.06),var(--surface) 56%)}html[data-theme=light] .avcaphead b{color:#0F7B57}html[data-theme=light] .avcapacity.blocked .avcaphead b{color:#B64A1C}

html[data-theme=light] .avregionpick{color:#141B23}
@media(hover:hover){.avregionpick:hover{border-color:color-mix(in srgb,var(--text) 22%,transparent)}}
@media(max-width:399px){.avtoolbar{padding-left:8px;padding-right:8px;gap:8px}.avtoolbar .fchip.ic{min-width:31px;width:31px;height:32px}.avregionpick{height:36px;gap:5px;padding:0 10px 0 9px}.avregionpick .avregionpin{width:14px;height:14px}.avregionpick .avregionpin svg{width:14px;height:14px}.avregionpick>b{font-size:14px}.avregionpick>svg{width:9px;margin-left:-1px}}
@media(max-width:359px){.avregionpick{gap:4px;padding:0 8px}.avregionpick .avregionpin,.avregionpick .avregionpin svg{width:13px;height:13px}.avregionpick>svg{width:8px}.explore-region-toolbar{gap:6px}}
@media(max-width:359px){.toolbar:has(.fchip.availability){padding-left:8px;padding-right:8px}.toolbar:has(.fchip.availability) .filtrow{gap:1px}.toolbar:has(.fchip.availability) .fchip.ic{min-width:31px;width:31px;height:32px}.avdates{margin-left:8px;margin-right:8px;gap:2px}.avdate,.view-explore.avhead-collapsed.avdate-open .avdate{flex-basis:calc((100% - 12px)/7)}.avdate b{font-size:9px}.avtools{grid-template-columns:82px minmax(0,1fr) 94px;gap:4px;margin-left:8px;margin-right:8px}.avsort{padding-left:6px;padding-right:6px}.avrange{gap:5px;padding-left:7px;padding-right:7px}.avrangeicon{display:none}.avonly{gap:5px;padding-left:6px;padding-right:6px}.avonlyicon{display:none}.avtheme{grid-template-columns:50px minmax(0,1fr) 16px;gap:8px}.avpickrow{grid-template-columns:50px minmax(0,1fr);gap:8px}.avposter{width:50px;height:88px}.avintel{grid-template-columns:max-content 43px minmax(80px,1fr);gap:4px}.avsocial .ratebadge{gap:4px;padding:4px 6px}.avduration{min-width:43px;padding-left:4px;padding-right:5px}.avduration>svg{width:12px}.avsenses{gap:3px}.avvmeter{min-width:38px}}
@media(max-width:359px){.view-explore.avhead-collapsed .avcontrols{width:calc(100% - 16px);gap:5px}}
@media(prefers-reduced-motion:reduce){.playedcycle.turn .pcico{animation:none}.playedcycle .pcico>span{transition:none}}

/* 시리즈 구조형 UI 비교 — 선택기는 격리 테스트 서버에서만 렌더된다. */
.series-ui-picker{margin-top:14px;padding:12px;border:1px solid var(--hairline);border-radius:14px;background:color-mix(in srgb,var(--surface) 88%,transparent)}.series-ui-picker-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}.series-ui-picker-head b{font-size:10.5px}.series-ui-picker-head span{color:var(--faint);font-size:8px}.series-ui-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.series-ui-choice{min-width:0;min-height:54px;display:grid;grid-template-columns:26px minmax(0,1fr);align-items:center;gap:8px;padding:7px 8px;text-align:left;color:var(--muted);border:1px solid var(--hairline);border-radius:10px;background:var(--surface)}.series-ui-choice>i{display:grid;place-items:center;height:26px;color:var(--faint);font-family:var(--fn);font-size:8px;font-style:normal;border:1px solid var(--hairline);border-radius:7px}.series-ui-choice>span{min-width:0;display:flex;flex-direction:column;gap:2px}.series-ui-choice b{font-size:9.5px;white-space:nowrap}.series-ui-choice small{overflow:hidden;text-overflow:ellipsis;color:var(--faint);font-size:7px;white-space:nowrap}.series-ui-choice.on{color:var(--text);border-color:color-mix(in srgb,var(--gold) 46%,var(--border));background:color-mix(in srgb,var(--gold) 7%,var(--surface))}.series-ui-choice.on>i{color:#17130a;border-color:var(--gold);background:var(--gold)}.series-ui-picker.compact{margin:0 0 11px;padding:9px}.series-ui-picker.compact .series-ui-picker-head{margin-bottom:7px}.series-ui-picker.compact .series-ui-choice{min-height:41px}.series-ui-picker.compact .series-ui-choice small{display:none}
.series-editor-head>div>small{display:block;margin-bottom:3px;color:var(--gold);font-family:var(--fn);font-size:7px;letter-spacing:.08em}.series-editor-copy i{overflow:hidden;text-overflow:ellipsis;color:var(--gold);font-size:7px;font-style:normal;white-space:nowrap}

/* A · 여정 지도 — 연결된 정류장과 외전 갈림길을 직접 편집한다. */
.series-journey-setup{display:grid;gap:13px}.series-journey-editor .series-order-panel{padding:13px 4px 4px;border:0;background:transparent}.series-journey-map{position:relative;display:flex;flex-direction:column;gap:10px;padding-left:31px}.series-journey-map::before{content:"";position:absolute;left:14px;top:25px;bottom:24px;width:1px;background:linear-gradient(var(--gold),color-mix(in srgb,var(--gold) 28%,var(--border)) 78%,transparent)}.series-journey-stop{position:relative;border:1px solid var(--hairline);border-radius:13px;background:var(--surface)}.series-journey-stop::before{content:"";position:absolute;left:-23px;top:20px;width:13px;height:13px;border:3px solid var(--bg2);border-radius:50%;background:var(--gold);box-shadow:0 0 0 1px color-mix(in srgb,var(--gold) 45%,var(--border))}.series-journey-stop>header{min-height:52px;display:grid;grid-template-columns:35px minmax(0,1fr);align-items:center;gap:9px;padding:8px 10px;border-bottom:1px solid var(--hairline)}.series-journey-stop>header>span{font-family:var(--fn);font-size:14px;color:var(--gold)}.series-journey-stop>header>div{display:flex;flex-direction:column;gap:2px}.series-journey-stop>header small{color:var(--faint);font-family:var(--fn);font-size:7px}.series-journey-stop>header b{font-size:10px}.series-journey-stop.side{margin-top:4px;border-style:dashed}.series-journey-stop.side::before{background:var(--surface);border-color:var(--bg2)}.series-journey-stop.side>header>span{font-size:18px}.series-journey-stop .series-editor-theme{border-bottom-color:var(--hairline)}
.series-ui-journey.theme-series{border:1px solid color-mix(in srgb,var(--gold) 25%,var(--border));border-radius:16px;background:linear-gradient(125deg,color-mix(in srgb,var(--gold) 5%,var(--surface)),var(--surface) 58%)}.series-journey-head{grid-template-columns:42px minmax(0,1fr) auto 20px}.series-journey-head>span:nth-child(2),.series-board-head>span:nth-child(2),.series-playlist-head>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:2px}.series-journey-head small,.series-board-head small,.series-playlist-head small{color:var(--gold);font-family:var(--fn);font-size:7px;letter-spacing:.08em}.series-journey-head em,.series-board-head em,.series-playlist-head em{overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:8.5px;font-style:normal;white-space:nowrap}.series-journey-route{padding:5px 7px;color:var(--gold);font-family:var(--fn);font-size:8px;border:1px solid color-mix(in srgb,var(--gold) 30%,var(--border));border-radius:20px;white-space:nowrap}.series-ui-journey .series-flow{position:relative;padding-left:5px}.series-ui-journey .series-flow-step{position:relative;grid-template-columns:31px minmax(0,1fr)}.series-ui-journey .series-flow-step:not(:last-of-type)::after{content:"";position:absolute;left:15px;top:28px;bottom:-24px;width:1px;background:color-mix(in srgb,var(--gold) 38%,var(--border))}.series-ui-journey .series-step-no{z-index:1;width:31px;height:31px;color:#17130a;border-radius:50%;clip-path:none;background:var(--gold)}.series-ui-journey .series-flow-arrow{height:13px;margin-left:12px;opacity:0}.series-ui-journey .series-unordered{margin-left:4px;padding:12px;border:1px dashed var(--hairline);border-radius:12px}

/* B · 챕터 보드 — 단계가 독립된 칸이 되고 모바일에서는 가로로 넘긴다. */
.series-board-editor-head{background:linear-gradient(112deg,color-mix(in srgb,var(--p5) 7%,var(--surface2)),var(--surface))}.series-board-editor-head>div>small{color:#F06B83}.series-board-setup{display:grid;gap:12px}.series-board-editor .series-order-panel{margin-left:-15px;margin-right:-15px;padding:14px 0 5px;border-width:1px 0;background:transparent}.series-board-editor .series-section-title{padding:0 15px}.series-board-grid{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(246px,82vw);gap:10px;overflow-x:auto;padding:0 15px 10px;scroll-snap-type:x proximity;scrollbar-width:none}.series-board-grid::-webkit-scrollbar,.series-board-detail::-webkit-scrollbar{display:none}.series-board-column{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface);scroll-snap-align:start}.series-board-column>header{min-height:61px;display:grid;grid-template-columns:36px minmax(0,1fr) 24px;align-items:center;gap:8px;padding:9px 10px;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--p5) 5%,var(--surface2))}.series-board-column>header>span{display:grid;place-items:center;width:36px;height:36px;color:#fff;font-family:var(--fn);font-size:11px;border-radius:10px;background:#B72D4A}.series-board-column>header>div{display:flex;flex-direction:column;gap:2px}.series-board-column>header small{color:#D65B74;font-family:var(--fn);font-size:7px}.series-board-column>header b{font-size:10.5px}.series-board-column>header em{display:grid;place-items:center;width:24px;height:24px;color:var(--muted);font-family:var(--fn);font-size:8px;font-style:normal;border:1px solid var(--hairline);border-radius:50%}.series-board-column.side>header{background:color-mix(in srgb,var(--gold) 5%,var(--surface2))}.series-board-column.side>header>span{color:#17130a;background:var(--gold)}.series-board-column.side>header small{color:var(--gold)}.series-board-column .series-editor-theme{grid-template-columns:44px minmax(0,1fr) 28px;padding:9px}.series-board-column .series-editor-poster{width:44px;height:56px;border-radius:7px}.series-board-column .series-editor-theme label{grid-column:1/-1}.series-board-column .series-editor-theme select{width:100%}.series-board-column .series-editor-remove{grid-area:1/3}.series-board-column .series-editor-copy i{color:#D65B74}
.series-ui-board.theme-series{border:0;border-radius:18px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline)}.series-board-head{grid-template-columns:62px minmax(0,1fr) 20px;gap:13px;min-height:84px}.series-board-covers{width:62px;height:58px;display:flex;align-items:center;padding-left:3px}.series-board-covers>i{width:32px;height:45px;display:grid;place-items:center;overflow:hidden;border:2px solid var(--surface);border-radius:6px;background-size:cover!important;background-position:center!important;box-shadow:0 5px 13px rgba(0,0,0,.2)}.series-board-covers>i+i{margin-left:-18px}.series-board-covers .ph{font-size:8px}.series-board-head small{color:#E36A81}.series-board-detail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(232px,80vw);gap:9px;overflow-x:auto;padding-bottom:4px;scroll-snap-type:x proximity}.series-board-chapter{overflow:hidden;border:1px solid var(--hairline);border-radius:13px;background:var(--surface2);scroll-snap-align:start}.series-board-chapter>header{min-height:52px;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:8px;padding:8px 9px;border-bottom:1px solid var(--hairline)}.series-board-chapter>header>span{display:grid;place-items:center;width:34px;height:34px;color:#fff;font-family:var(--fn);font-size:9px;border-radius:9px;background:#B72D4A}.series-board-chapter>header>div{display:flex;flex-direction:column;gap:2px}.series-board-chapter>header small{color:#D65B74;font-family:var(--fn);font-size:7px}.series-board-chapter>header b{font-size:9.5px}.series-board-chapter>div{display:flex;flex-direction:column;gap:6px;padding:7px}.series-board-chapter .series-theme-card{grid-template-columns:36px minmax(0,1fr) auto;padding:6px}.series-board-chapter .series-theme-poster{width:36px;height:44px}.series-board-chapter.side>header>span{color:#17130a;background:var(--gold)}.series-board-chapter.side>header small{color:var(--gold)}

/* C · 플레이리스트 — 표처럼 빠르게 읽고 번호만 바꾸는 최소 편집 UI. */
.series-playlist-editor-head{min-height:70px;border-bottom-color:var(--text);background:transparent}.series-playlist-editor-head>div>small{color:var(--muted)}.series-playlist-setup{display:grid;gap:10px}.series-playlist-editor .series-add-panel{padding:0;border:0;background:transparent}.series-playlist-editor .series-order-panel{padding:0;border:0;background:transparent}.series-playlist-editor .series-section-title{padding:14px 0 9px;margin:0;border-bottom:1px solid var(--text)}.series-playlist-editor{border-bottom:1px solid var(--text)}.series-playlist-editor>header{height:32px;display:grid;grid-template-columns:32px minmax(0,1fr) 86px 28px;align-items:center;gap:7px;padding:0 8px;color:var(--faint);font-family:var(--fn);font-size:11px;border-bottom:1px solid var(--hairline)}.series-playlist-editor-row{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:stretch;border-bottom:1px solid var(--hairline)}.series-playlist-editor-row:last-child{border-bottom:0}.series-playlist-editor-no{display:grid;place-items:center;color:var(--muted);font-family:var(--fn);font-size:12px}.series-playlist-editor-row .series-editor-theme{min-width:0;padding-left:0;border:0}.series-playlist-editor-row .series-editor-poster{width:34px;height:44px;border-radius:4px}.series-playlist-editor-row .series-editor-copy i{color:var(--muted)}.series-playlist-editor-row:has(.series-editor-copy i:first-child){background:color-mix(in srgb,var(--surface2) 55%,transparent)}
.series-ui-playlist.theme-series{border-width:1px 0;border-color:var(--text);border-radius:0;background:transparent}.series-playlist-head{grid-template-columns:46px minmax(0,1fr) 28px 18px;min-height:78px;padding-left:4px;padding-right:4px}.series-playlist-cover{width:46px;height:58px;display:grid;place-items:center;overflow:hidden;border-radius:6px;background-size:cover!important;background-position:center!important}.series-playlist-cover .ph{color:var(--faint);font-size:12px}.series-playlist-head small{color:var(--muted)}.series-playlist-count{color:var(--muted);font-family:var(--fn);font-size:11px}.series-playlist-detail{border-top:1px solid var(--hairline)}.series-playlist-row{width:100%;min-width:0;min-height:62px;display:grid;grid-template-columns:29px 36px minmax(0,1fr) auto;align-items:center;gap:9px;padding:7px 4px;text-align:left;border-bottom:1px solid var(--hairline)}.series-playlist-row:last-child{border-bottom:0}.series-playlist-row.current{background:color-mix(in srgb,var(--gold) 6%,transparent)}.series-playlist-track{color:var(--faint);font-family:var(--fn);font-size:9px;text-align:center}.series-playlist-row.current .series-playlist-track{color:var(--gold)}.series-playlist-row .series-theme-poster{width:36px;height:46px;border-radius:4px}.series-playlist-state{display:grid;place-items:center;min-width:27px;color:var(--faint);font-size:7.5px}.series-playlist-state svg{width:13px;fill:none;stroke:currentColor}.series-playlist-row.current .series-playlist-state{padding:4px 6px;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 34%,var(--border));border-radius:10px}

html[data-theme=light] .series-ui-picker,html[data-theme=light] .series-journey-stop,html[data-theme=light] .series-board-column,html[data-theme=light] .series-ui-board.theme-series{box-shadow:0 10px 28px rgba(45,60,78,.07)}
html[data-theme=light] .series-board-column>header>span,html[data-theme=light] .series-board-chapter>header>span{background:#A92948}
@media(max-width:359px){.series-ui-picker{padding:9px}.series-ui-choice{grid-template-columns:1fr;justify-items:center;padding:6px 3px}.series-ui-choice>i{width:24px}.series-ui-choice>span{align-items:center}.series-ui-choice small,.series-ui-picker-head span{display:none}.series-board-grid{grid-auto-columns:minmax(230px,86vw)}}

/* 시리즈 최종 UI — 관리자 목록형, 테마 상세 여정형 */
.series-editor-head.series-playlist-editor-head{min-height:66px;border-bottom-color:var(--hairline);background:var(--surface)}.series-editor-head.series-playlist-editor-head h2{font-size:17px}.series-playlist-layout{padding-top:14px}.series-playlist-setup,.series-meta-fields{display:grid;gap:12px}.series-name-field>span,.series-note-field>span{display:flex;align-items:baseline;gap:6px;margin:0 0 7px 2px;color:var(--muted);font-size:12px;font-weight:900}.series-note-field>span small{color:var(--faint);font-size:11px;font-weight:700}.series-note-field textarea{width:100%;min-height:78px;padding:11px 12px;resize:vertical;line-height:1.55}.series-playlist-layout .series-add-panel,.series-playlist-layout .series-order-panel{padding:0;border:0;background:transparent}.series-playlist-layout .series-section-title{margin:20px 0 0;padding:13px 0 10px;border-bottom:1px solid var(--text)}.series-playlist-editor{overflow:hidden;border-bottom:1px solid var(--text)}.series-playlist-editor>header{height:34px;display:grid;grid-template-columns:38px minmax(0,1fr) 86px 28px;align-items:center;gap:7px;padding:0 8px;color:var(--faint);font-size:7.5px;border-bottom:1px solid var(--hairline)}.series-playlist-editor>header>:first-child{text-align:center}.series-playlist-editor-row{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:stretch;border-bottom:1px solid var(--hairline)}.series-playlist-editor-row:last-child{border-bottom:0}.series-playlist-editor-no{display:grid;place-items:center;color:var(--muted);font-family:var(--fn);font-size:11px}.series-playlist-editor-row:last-child .series-playlist-editor-no:has(+.series-editor-theme select option:checked[value=""]){color:var(--gold)}.series-playlist-editor-row .series-editor-theme{min-width:0;padding-left:0;border:0}.series-playlist-editor-row .series-editor-poster{width:34px;height:44px;border-radius:4px}
.theme-series.series-journey{border:1px solid color-mix(in srgb,var(--gold) 26%,var(--border));border-radius:16px;background:linear-gradient(118deg,color-mix(in srgb,var(--gold) 8%,transparent),transparent 58%),var(--surface)}.series-journey-head{grid-template-columns:42px minmax(0,1fr) 28px 20px}.series-journey-copy{min-width:0;align-items:flex-start}.series-kicker{display:flex;align-items:center;gap:6px;color:var(--faint);font-family:var(--fn);font-size:11px;font-weight:700;letter-spacing:.06em;line-height:1}.series-count{width:28px;height:28px;display:grid;place-items:center;color:var(--gold);font-family:var(--fn);font-size:11px;font-weight:800;border-radius:50%;background:color-mix(in srgb,var(--gold) 12%,transparent)}.series-journey .theme-series-body{padding:12px}.series-comment{margin:0 0 10px;padding:10px 12px;color:var(--muted);font-size:12px;line-height:1.55;border-radius:12px;background:var(--matte-tint);word-break:keep-all}.theme-series-tools.simple{justify-content:flex-end;margin-bottom:9px}.series-journey .series-flow{position:relative;padding-left:5px}.series-journey .series-flow-step{position:relative;grid-template-columns:31px minmax(0,1fr)}.series-journey .series-flow-step:not(:last-of-type)::after{content:"";position:absolute;left:15px;top:28px;bottom:-24px;width:1px;background:var(--border)}.series-journey .series-step-no{z-index:1;width:31px;height:31px;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);border-radius:50%;background:color-mix(in srgb,var(--gold) 14%,var(--surface))}.series-journey .series-flow-arrow{height:13px;margin-left:12px;opacity:0}.series-journey .series-unordered{margin-left:4px;padding:12px;border:1px dashed var(--hairline);border-radius:12px}.series-journey .series-unordered>div:first-child b{color:var(--text)}
html[data-theme=light] .theme-series.series-journey{box-shadow:0 10px 28px rgba(45,60,78,.07)}html[data-theme=light] .series-comment{color:#56616E}
.series-savebar{grid-template-columns:minmax(104px,.42fr) minmax(180px,1fr)}.series-delete{width:100%;height:46px;justify-content:center;gap:8px;padding:0 12px;border-radius:9px;border-color:color-mix(in srgb,var(--danger) 34%,var(--border));background:color-mix(in srgb,var(--danger) 5%,var(--surface2));font-size:15px;font-weight:900;transition:border-color .15s,background .15s,color .15s}.series-delete svg{width:18px;height:18px}.series-delete:active{background:color-mix(in srgb,var(--danger) 12%,var(--surface2))}.series-pane-head>button{border-radius:12px}.series-editor-remove{border:1px solid var(--hairline);background:var(--surface2);transition:border-color .15s,background .15s,color .15s}.series-editor-remove:active{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border));background:color-mix(in srgb,var(--danger) 8%,var(--surface2))}
html[data-theme=light] .series-delete{background:rgba(228,3,43,.035)}html[data-theme=light] .series-editor-remove{background:#F7F9FB}
@media(hover:hover){.series-delete:hover{border-color:color-mix(in srgb,var(--danger) 58%,var(--border));background:color-mix(in srgb,var(--danger) 9%,var(--surface2))}.series-editor-remove:hover{border-color:color-mix(in srgb,var(--danger) 42%,var(--border));background:color-mix(in srgb,var(--danger) 7%,var(--surface2))}}
.series-note-field textarea{font-family:var(--fb);font-size:13px;letter-spacing:-.01em}.series-searchbox,.series-searchbox input,.series-editor-theme select,.series-delete,.series-playlist-editor>header{font-family:var(--fb)}.series-playlist-editor>header{font-weight:750;letter-spacing:-.01em}.series-playlist-editor-no{font-family:var(--fn)}
.series-searchbox{height:50px;padding:0 8px 0 12px;border-radius:9px;transition:border-color .16s,box-shadow .16s}.series-searchbox:focus-within{box-shadow:none}.series-searchbox button{border-radius:7px}.series-search-results:not(:empty){margin-top:8px;padding:4px;border:1px solid var(--hairline);border-radius:9px;background:var(--surface2)}.series-search-result{padding-left:6px;padding-right:6px;border-radius:7px}.series-search-result:last-child{border-bottom:0}.series-search-poster{border-radius:6px}.series-search-result i{border-radius:7px}.series-editor-theme select{height:38px;border-radius:7px}.series-editor-remove{border-radius:7px}
html[data-theme=light] .series-search-results:not(:empty){background:#F7F9FB}
@media(hover:hover){.series-search-result:hover{background:color-mix(in srgb,var(--text) 4%,var(--surface))}.series-searchbox button:hover{color:var(--text);background:var(--surface3)}}
@media(max-width:359px){.series-journey-head{grid-template-columns:38px minmax(0,1fr) 26px 17px;gap:8px;padding-left:10px;padding-right:10px}.series-count{width:26px;height:26px}.series-playlist-editor>header{grid-template-columns:30px minmax(0,1fr) 82px 26px}.series-playlist-editor-row{grid-template-columns:30px minmax(0,1fr)}.series-editor-theme{grid-template-columns:34px minmax(0,1fr) 82px 26px;padding-right:3px}.series-editor-theme select{width:82px}}

/* ===== 매장 졸업률 — 프로필 그래프 · 졸업 시트 · 매장 검색(베타) =====
   색은 전부 var(--gold)/var(--accent) 기반 color-mix — 라이트 팔레트(#A97D0E·#0B9C8F)가 자동 적용된다 */
.grad-profile{width:100%;display:flex;align-items:center;justify-content:center;gap:20px;padding:4px 2px 2px;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}
.grad-profile .grad-ring{width:132px;height:132px}.grad-profile .grad-ring circle{stroke-width:10}
.grad-profile-copy{min-width:0;display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:7px}
.grad-profile-copy>b{font-family:var(--fn);font-size:22px;line-height:1;color:var(--muted)}.grad-profile-copy>b em{color:var(--gold);font-style:normal}
.grad-profile-copy>small{max-width:170px;color:var(--muted);font-size:11px;line-height:1.5;word-break:keep-all}
.grad-profile-copy>span{display:flex;align-items:center;gap:4px;color:var(--gold);font-size:10.5px;font-weight:900}.grad-profile-copy>span svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.grad-profile:active{transform:scale(.99)}
@media(max-width:359px){.grad-profile{gap:14px}.grad-profile .grad-ring{width:112px;height:112px}.grad-profile-copy>b{font-size:19px}}
/* 프로필 졸업률 카드 — 머리(제목 + 졸업 현황 캡슐) · 눈금 링 · 졸업/진행 수치. 금색은 링·졸업 수만(데이터 색) */
.grad-card{width:100%;padding:0;display:flex;flex-direction:column;gap:14px;color:var(--text);font-family:inherit;text-align:left;cursor:pointer;border-radius:12px;transition:transform .12s}
.grad-card:active{transform:scale(.99)}
.gpc-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.grad-card .pcap{margin:0}
.gpc-more{display:inline-flex;align-items:center;gap:2px;min-height:28px;padding:0 7px 0 11px;border-radius:999px;font-size:12px;font-weight:800;color:var(--gold);white-space:nowrap;
  border:1px solid color-mix(in srgb,var(--gold) 28%,var(--glass-line));background:linear-gradient(color-mix(in srgb,var(--gold) 9%,transparent),color-mix(in srgb,var(--gold) 9%,transparent)),var(--glass-bg);box-shadow:var(--glass-hi);transition:border-color .16s}
.gpc-more svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){.grad-card:hover .gpc-more{border-color:color-mix(in srgb,var(--gold) 50%,var(--glass-line))}}
.gpc-body{display:flex;align-items:center;gap:22px;padding:0 4px 2px}
.grad-card .grad-ring{width:124px;height:124px}.grad-card .grad-ring circle{stroke-width:9}
.grad-ring.ticked circle.tick{stroke:color-mix(in srgb,var(--text) 20%,transparent);stroke-width:2.6;stroke-dasharray:.16 .84}
.grad-card .grad-ring>b{font-size:26px;font-weight:700;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.grad-card .grad-ring>b small{font-size:12px;font-weight:700;margin-left:2px}
.gpc-stats{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}
.gpc-stats small{font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap}
.gpc-main{display:flex;flex-direction:column;gap:6px}
.gpc-main b{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 6px;font-family:var(--fn);font-variant-numeric:tabular-nums;line-height:1}
.gpc-main em{font-style:normal;font-size:34px;font-weight:700;color:var(--gold);letter-spacing:-.05em}
.gpc-main i{font-style:normal;font-size:14px;font-weight:600;color:var(--faint);white-space:nowrap}
.gpc-sub{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding-top:11px;border-top:1px solid var(--hairline)}
.gpc-sub b{font-family:var(--fn);font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}.gpc-sub b i{font-style:normal;font-family:var(--fb);font-size:11.5px;font-weight:700;color:var(--faint);margin-left:2px}
@media(max-width:359px){.gpc-body{gap:16px;padding:0}.grad-card .grad-ring{width:104px;height:104px}.grad-card .grad-ring>b{font-size:22px}.gpc-main em{font-size:28px}.gpc-main i{font-size:12.5px}}
/* 프로필 '플레이할 테마' 줄 — 아이콘 우물 · 다음 일정(D-n + 테마) · 개수. 색은 통계 색(--sc, 끄면 무채색)을 따른다 */
.statcard.plan-strip{min-height:0;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 16px 12px 12px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--sc,var(--text)) 7%,var(--surface)),var(--surface) 62%);border-color:color-mix(in srgb,var(--sc,var(--text)) 14%,var(--border))}
.statcard.plan-strip.tap{grid-template-columns:40px minmax(0,1fr) auto 14px;padding-right:12px}
.ps-ic{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--sc,var(--muted));background:color-mix(in srgb,var(--sc,var(--text)) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sc,var(--text)) 16%,transparent)}
.ps-ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ps-copy{min-width:0;display:flex;flex-direction:column;gap:5px}.plan-strip .k{padding-right:0}
.ps-next{display:flex;align-items:center;gap:7px;min-width:0;font-size:13.5px;font-weight:700;letter-spacing:-.02em;color:var(--text)}
.ps-next>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-next.none{font-size:12.5px;font-weight:600;color:var(--faint)}
.ps-dd{--dc:var(--info);flex:none;padding:3px 6px;border-radius:6px;font:800 10.5px/1.1 var(--fn);font-style:normal;letter-spacing:.02em;color:var(--dc);background:color-mix(in srgb,var(--dc) 14%,transparent)}
.ps-dd.dd7{--dc:var(--gold)}.ps-dd.dd3{--dc:var(--dhot)}.ps-dd.dd0{--dc:var(--p5)} /* 디데이 열 단계(ddayTier) — 무광 틴트, 발광·점멸 없음 */
.statcard.plan-strip .v{margin:0;padding:0;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.statcard.plan-strip .stat-go{position:static;width:14px;height:14px}
.beta-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:var(--r-tag);background:var(--tag-bg);color:var(--muted);font-size:10.5px;font-weight:800;font-style:normal;letter-spacing:.02em;line-height:1.45}

/* 졸업 시트 */
.grad-sheet .sh-body{padding-bottom:22px}
.grad-search-chip{gap:6px;padding:0 6px 0 12px;font-size:12px}
.grad-search-chip .beta-tag{padding:2px 6px;border-color:var(--glass-line);border-radius:999px;background:var(--tag-bg);color:var(--muted);font-size:11px;letter-spacing:.04em;clip-path:none}
.grad-search-chip svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.grad-hero{display:flex;align-items:center;gap:16px;padding:6px 2px 15px;border-bottom:1px solid var(--hairline)}
.grad-ring{position:relative;width:92px;height:92px;flex:none}
.grad-ring svg{width:100%;height:100%}
.grad-ring circle{fill:none;stroke-width:7}
.grad-ring .track{stroke:color-mix(in srgb,var(--gold) 18%,transparent)}
.grad-ring .val{stroke:var(--gold);stroke-linecap:round} /* 무광 게이지 — 발광 없음 */
.grad-ring>b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--fn);font-size:22px;font-weight:900;color:var(--gold)}
.grad-ring>b small{font-size:11px;font-weight:800;margin-left:1px}
.grad-hero-copy{min-width:0;display:flex;flex-direction:column;gap:5px}
.grad-hero-copy>b{font-size:15px}.grad-hero-copy>b span{color:var(--muted);font-weight:700;font-size:12px}
.grad-hero-copy>small{color:var(--muted);font-size:11px;line-height:1.55}.grad-hero-copy>small b{color:var(--text)}
.grad-sec{margin-top:16px}
.grad-sec h4{display:flex;align-items:baseline;gap:6px;margin:0 0 9px;font-size:11px;font-weight:900;letter-spacing:.08em;color:var(--faint)}
.grad-sec h4 .n{color:var(--gold);font-family:var(--fn);font-size:12px}
.grad-store-wrap{margin-top:7px;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden;transition:border-color .15s}
.grad-store-wrap.open{border-color:var(--glass-line-hi)}
.grad-store{position:relative;width:100%;padding:11px 48px 11px 12px;border:0;background:none;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}
.grad-store.done{display:flex;align-items:center;gap:11px;background:color-mix(in srgb,var(--gold) 6%,var(--surface))}
.grad-medal{width:36px;height:36px;display:grid;place-items:center;flex:none;color:var(--gold);border-radius:50%;background:color-mix(in srgb,var(--gold) 14%,transparent)}
.grad-medal svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.grad-store-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.grad-store-copy b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grad-store-copy small{color:var(--faint);font-size:10px}
.grad-donetag{flex:none;color:var(--gold);font-size:10px;font-weight:800;font-style:normal}
.grad-chev{position:absolute;right:10px;top:10px;width:30px;height:30px;display:grid;place-items:center;color:var(--muted);border:1px solid var(--glass-line);border-radius:50%;background:var(--glass-bg);box-shadow:var(--glass-hi);transition:color .16s,border-color .16s,transform .12s}
.grad-chev svg{width:14px;height:14px;display:block;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s cubic-bezier(.2,.8,.3,1)}
.grad-store.done .grad-chev{top:15px;color:var(--gold)}
.grad-store-wrap.open .grad-chev svg{transform:rotate(180deg)}
.grad-store:active .grad-chev{transform:scale(.93)}
@media(hover:hover){.grad-store:hover .grad-chev{color:var(--text);border-color:var(--glass-line-hi)}}
.grad-store-prog{display:flex;align-items:center;gap:9px;margin-top:8px}
.grad-bar{flex:1;height:5px;background:color-mix(in srgb,var(--gold) 14%,var(--surface3));border-radius:3px;overflow:hidden}
.grad-bar i{display:block;height:100%;background:var(--gold);border-radius:3px} /* 졸업까지의 진행 — 졸업률 링과 같은 골드 */
.grad-progtxt{flex:none;font-family:var(--fn);font-size:11px;color:var(--muted)}.grad-progtxt b{color:var(--text)}
.grad-remain{display:block;margin-top:7px;color:var(--faint);font-size:10.5px;line-height:1.55}
.grad-remain i{font-style:normal;color:var(--muted)}
.grad-store-detail{padding:5px 9px 9px;border-top:1px solid var(--hairline)}.grad-store-detail[hidden]{display:none}
.grad-theme-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 5px 8px;color:var(--faint);font-size:9.5px}.grad-theme-summary b{color:var(--muted);font-size:10.5px}
.st-tags{display:flex;flex:none;align-items:center;gap:5px}
.grad-store-error{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 5px;color:var(--muted);font-size:10.5px}.grad-store-error button{height:30px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-family:inherit;font-size:11.5px;font-weight:800}
.grad-empty{padding:14px 4px;color:var(--faint);font-size:11.5px;text-align:center}
/* 졸업률 숨김 — 펼친 매장 하단 버튼 + 숨긴 매장 목록(다시 보이기). [fb:bce90729] */
.grad-store-acts{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:9px 5px 2px}
.grad-hide-btn{flex:none;height:32px;padding:0 13px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-family:inherit;font-size:11.5px;font-weight:800;white-space:nowrap;cursor:pointer}
.grad-hide-btn:disabled{opacity:.55;cursor:default}
@media(hover:hover){.grad-hide-btn:hover{color:var(--text);border-color:var(--glass-line-hi)}}
.grad-hidden-note{margin:-3px 0 2px;color:var(--faint);font-size:10.5px}
.grad-hidden-row{display:flex;align-items:center;gap:10px;margin-top:7px;padding:10px 10px 10px 12px;border:1px dashed var(--border);border-radius:16px}
.grad-hidden-row .grad-store-copy b{color:var(--muted)}
.grad-hidden-row .grad-hide-btn{color:var(--text)}
/* 매장 검색 카드·이 매장의 테마 시트에서도 같은 토글 — 숨긴 매장은 카드에 '졸업률 제외', 펼침 하단에 안내 + 다시 포함. [fb:131b7aca] */
.grad-store-acts .grad-hide-note{flex:1;min-width:0;color:var(--faint);font-size:11px;line-height:1.4}
.sc-gradoff{flex:none;margin-left:10px;padding:2px 7px;border:1px dashed var(--border);border-radius:6px;color:var(--muted);font-size:11px;font-style:normal;font-weight:700;white-space:nowrap}

/* 매장 검색 뷰 */
.view-storesearch .appbar .title{display:flex;align-items:center;gap:6px}
.store-filterbar{display:flex;padding:9px 14px 1px}
.store-regionpick{min-width:0;height:38px;display:flex;align-items:center;gap:6px;padding:0 13px 0 11px;border-radius:999px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-family:inherit;font-size:12px;cursor:pointer}
.store-regionpick>svg:first-child{width:15px;height:15px;fill:none;stroke:var(--p5);stroke-width:2}
.store-regionpick>span{color:var(--faint);font-weight:700}.store-regionpick>b{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:12.5px}.store-regionpick>svg:last-child{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.store-regionpick.on{border-color:var(--glass-line-hi)}
.store-countline{display:flex;align-items:center;justify-content:space-between;gap:10px}
.store-countline b{color:var(--text)}
.storelist{display:flex;flex-direction:column;gap:9px;padding:10px 14px 8px}
.storecard{border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden;transition:border-color .15s}
.storecard.done{border-color:color-mix(in srgb,var(--gold) 38%,var(--border))}
.storecard.open{border-color:var(--glass-line-hi)}
.storecard-head{display:flex;flex-direction:column;gap:7px;width:100%;padding:12px 13px;border:0;background:none;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}
.sc-top{display:flex;align-items:center;gap:8px;min-width:0}
.sc-name{font-size:14.5px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-region{flex:none;color:var(--faint);font-size:11px}
.sc-chev{margin-left:auto;flex:none;display:flex;width:16px;height:16px;color:var(--faint);transition:transform .16s}
.sc-chev svg{width:16px;height:16px}
.storecard.open .sc-chev{transform:rotate(180deg)}
.sc-meta{display:flex;flex-wrap:wrap;gap:4px 6px}
.scm{padding:2px 7px;border:0;color:var(--muted);font-family:var(--fn);font-size:11px;border-radius:6px;background:var(--tag-bg)}
.scm.rt{color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent)}
.scm.cnt{color:var(--text)}
.sc-progrow{display:flex;align-items:center;min-height:16px}
.sc-prog{display:flex;align-items:center;gap:9px;width:100%}
.sc-gradtag{display:inline-flex;align-items:center;gap:5px;color:var(--gold);font-size:11px;font-weight:900}
.sc-gradtag svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sc-dead{color:var(--faint);font-size:10.5px}
.storecard-body{display:none;border-top:1px solid var(--hairline);padding:6px 9px 9px}
.storecard.open .storecard-body{display:block}
.st-row{display:flex;align-items:center;gap:10px;width:100%;padding:8px 5px;border:0;border-bottom:1px solid var(--hairline);background:none;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}
.st-row:last-child{border-bottom:0}
.st-poster{position:relative;width:34px;height:46px;flex:none;display:grid;place-items:center;overflow:hidden;border-radius:5px;background-size:cover;background-position:center;background-color:var(--surface2)}
.st-poster .ph{font-size:13px;color:var(--faint)}
.st-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.st-copy b{font-size:12.5px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-copy small{color:var(--faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-copy .st-elsewhere{color:var(--muted);font-size:11px;line-height:1.5;white-space:normal;word-break:keep-all}
.st-row.off .st-copy b{color:var(--muted)}
.st-played{display:inline-flex;align-items:center;gap:4px;flex:none;color:var(--success);font-size:11px;font-weight:800;font-style:normal}
.st-played svg{width:11px;height:11px}
.st-todo{flex:none;color:var(--faint);font-size:11px;font-style:normal}
.st-state{flex:none;color:var(--muted);font-size:11px;font-style:normal;padding:1px 6px;border-radius:6px;background:var(--tag-bg)}
.store-more{display:block;width:calc(100% - 28px);margin:4px auto 24px}
#storeResults.searching{opacity:.55;transition:opacity .15s}
/* ===== 재방문 (REVISIT) ===== */
/* 회차 배지 — RE+숫자 모노 칩. planbadge(청록)와 구분되는 블루 HUD 코드 미감, 리스트·리뷰·시트 공용 */
.rvbadge{display:inline-flex;align-items:baseline;gap:1px;margin-left:6px;padding:1px 6px 1px 5px;vertical-align:1px;
  font-family:var(--fn);font-size:9px;font-weight:800;letter-spacing:.08em;line-height:1.5;color:var(--info);
  border:1px solid color-mix(in srgb,var(--info) 45%,transparent);background:color-mix(in srgb,var(--info) 9%,transparent);
  border-radius:4px;transform:skewX(-8deg);text-shadow:0 0 8px color-mix(in srgb,var(--info) 35%,transparent);white-space:nowrap}
.rvbadge b{font-size:10.5px;font-weight:800}
/* 옵저버 배지 — 관전 참여(평점 평균 미반영). 살구색으로 재방(블루)·일정(청록)과 구분 */
.obbadge{display:inline-flex;align-items:center;margin-left:6px;padding:1.5px 6px;vertical-align:1px;
  font-size:9px;font-weight:800;letter-spacing:.02em;color:var(--apricot);white-space:nowrap;
  border:1px solid color-mix(in srgb,var(--apricot) 42%,transparent);background:color-mix(in srgb,var(--apricot) 8%,transparent);border-radius:4px}
/* hidden 속성이 아래 명시 display 에 지지 않게 — 회차 칩·옵저버 토글은 방문 위치에 따라 실시간 숨김 */
.ttl-visit[hidden],.toggle[hidden]{display:none!important}
/* 시트 헤더 회차 칩 — '기록 수정 · N번째 방문' */
.ttl-visit{display:inline-block;margin-left:8px;padding:2.5px 8px;vertical-align:2px;
  font-family:var(--fn);font-size:10px;font-weight:800;letter-spacing:.05em;color:var(--info);
  border:1px solid color-mix(in srgb,var(--info) 45%,transparent);background:color-mix(in srgb,var(--info) 9%,transparent);
  border-radius:4px;transform:skewX(-8deg)}
/* 리뷰 시트 상단 안내 — 재방/옵저버 리뷰는 평균 미반영 */
.revisit-note{display:flex;align-items:flex-start;gap:9px;margin:-4px 0 14px;padding:10px 12px;font-size:11.5px;line-height:1.55;color:var(--muted);
  border:1px solid color-mix(in srgb,var(--info) 30%,var(--border));background:color-mix(in srgb,var(--info) 6%,transparent);
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px))}
.revisit-note .rvbadge{margin:2px 0 0;flex:0 0 auto}
/* 리뷰 카드 — 재방문 리뷰 중첩 항목 */
.rev-visit{margin-top:12px;padding:10px 0 2px 13px;border-top:1px dashed var(--hairline);position:relative}
.rev-visit::before{content:"";position:absolute;left:0;top:16px;bottom:8px;width:2px;background:linear-gradient(color-mix(in srgb,var(--info) 65%,transparent),transparent);border-radius:2px}
.rev-visit .rv-head{display:flex;align-items:center;gap:7px}
.rev-visit .rv-head .rvbadge{margin-left:0}
.rev-visit .rv-line{width:10px;height:2px;background:color-mix(in srgb,var(--info) 55%,transparent);transform:skewX(-20deg);flex:0 0 auto}
.rev-visit .rv-cap{font-size:10.5px;font-weight:700;color:var(--faint)}
.rev-visit.obs .rv-cap{color:var(--apricot)}
.rev-visit .rmeta{font-family:var(--fn);font-size:11px;color:var(--faint);margin-top:6px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.rev-visit .rmeta b{color:var(--text);font-size:12px}
.rev-visit .revtext{margin-top:6px}
.rev-visit .revradar{margin-top:6px}
/* 리뷰 메타의 평점 래퍼 — .rmeta(flex) 직계였던 시절과 같은 세로 중앙 정렬을 래퍼 안에서 재현 */
.rv-score{display:inline-flex;align-items:center;gap:4px}
.rv-score.rv-dim{opacity:.72} /* 평균 미반영(재방·옵저버) 평점 — 살짝 가라앉힘 */
.rv-fail{display:inline-flex;align-items:center;line-height:0} /* 탈출 실패 — 평점 옆 잠긴 자물쇠(keyState, --danger) */
/* 상세 '내 기록' 패널 — 회차 행(탭=수정) + 재방문 추가 */
/* 테마 오픈일 — 상세 '세부 평가' 아래 한 줄 패널. 라벨은 .pcap 과 같은 글자, 값은 오른쪽 정렬 */
.opened-panel{padding:12px 16px}
.opened-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.opened-k{display:inline-flex;align-items:center;gap:7px;flex:none;font-size:13.5px;font-weight:800;letter-spacing:-.015em;color:var(--text)}
.opened-k svg{width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.opened-v{display:flex;align-items:baseline;justify-content:flex-end;flex-wrap:wrap;column-gap:8px;row-gap:2px;min-width:0;text-align:right}
.opened-v b{font-size:14px;font-weight:700;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}
.opened-v small{font-size:12px;color:var(--muted);white-space:nowrap}
.opened-intro-demo{margin:14px 0 4px}.opened-intro-demo .opened-panel{margin-top:0}
/* 테마 소개(시놉시스) — 상세 '예약' 아래. 그 테마 포스터를 깊게 흐린 빛이 카드 위쪽에 번지고(.syn-bg — 테마마다 다른 색),
   제목 옆 가는 결, 첫 문단은 조금 크게(리드), 안내 줄은 옅은 상자. 5줄을 넘으면 접고(.clamp — app.js armSynopsis 실측)
   아래를 흐리게, 가는 선 가운데 '더 보기'로 제자리 펼침. */
.synopsis{padding:18px 18px 14px;overflow:hidden;isolation:isolate}
.syn-bg{position:absolute;inset:-48px -36px auto;height:210px;z-index:-2;background-size:cover;background-position:center 35%;filter:blur(38px) saturate(1.35);opacity:.34;transform:translateZ(0);pointer-events:none}
.synopsis::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 22%,transparent) 0,color-mix(in srgb,var(--surface) 72%,transparent) 64px,color-mix(in srgb,var(--surface) 94%,transparent) 150px,var(--surface) 100%)}
.syn-top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:22px;margin-bottom:13px}
.syn-top .syn-head{flex:1;min-width:0;margin:0} /* h2 기본 여백 제거 — 아래 여백은 .syn-top 이 맡는다 */
.syn-head::after{content:"";flex:1;height:1px;margin-left:4px;background:linear-gradient(90deg,var(--hairline),transparent)}
.synopsis.folded .syn-top{margin-bottom:0}
.syn-reveal{display:inline-flex;align-items:center;gap:2px;flex:none;min-height:32px;margin:-6px -6px -6px 0;padding:0 6px 0 8px;border:0;border-radius:8px;background:none;color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;letter-spacing:0;cursor:pointer;transition:color .15s}
.syn-reveal svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s}
.synopsis:not(.folded) .syn-reveal svg{transform:rotate(180deg)}
.syn-reveal:focus-visible{outline:2px solid var(--p5);outline-offset:2px}
.syn-hide-mode:not(.folded) .syn-body{animation:synIn .28s ease both}
@keyframes synIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.syn-hide-mode:not(.folded) .syn-body{animation:none}.syn-reveal svg{transition:none}}
.syn-body{--syn-lh:1.78;position:relative;padding-left:0;font-size:14.5px;line-height:var(--syn-lh);letter-spacing:-.012em;color:color-mix(in srgb,var(--text) 86%,var(--muted));word-break:keep-all;overflow-wrap:anywhere}
.syn-body::before{content:none}
.syn-body>*{margin:0}
.syn-body>*+*{margin-top:1em}
.syn-body>p:first-child{font-size:1.07em;line-height:1.72;font-weight:500;letter-spacing:-.02em;color:var(--text)}
.syn-notes{margin:0;padding:10px 12px;list-style:none;font-size:12.5px;line-height:1.62;letter-spacing:-.005em;color:var(--muted);border:1px solid var(--hairline);border-radius:12px;background:color-mix(in srgb,var(--text) 4%,transparent)}
.syn-body p+.syn-notes{padding-top:10px;border-top:1px solid var(--hairline)}
.syn-notes li{position:relative;padding-left:12px}
.syn-notes li+li{margin-top:4px}
.syn-notes li::before{content:"";position:absolute;left:1px;top:.78em;width:5px;height:1.5px;border-radius:1px;background:var(--faint)}
.synopsis.clamp:not(.open) .syn-body{max-height:var(--syn-clamp,calc(5 * var(--syn-lh) * 1em));overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 2.6em),transparent);mask-image:linear-gradient(180deg,#000 calc(100% - 2.6em),transparent)}
.syn-body.syn-anim{overflow:hidden;transition:max-height .32s cubic-bezier(.2,.7,.2,1)}
.syn-more{display:flex;align-items:center;gap:8px;width:100%;min-height:34px;margin:6px 0 -2px;padding:0;border:0;border-radius:0;background:none;color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:color .15s}
.syn-more::before,.syn-more::after{content:"";flex:1;height:1px;background:var(--hairline)}
.syn-more[hidden]{display:none}
.syn-more svg{width:15px;height:15px;margin-left:-5px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s}
.synopsis.open .syn-more svg{transform:rotate(180deg)}
@media(hover:hover){.syn-more:hover,.syn-reveal:hover{color:var(--text)}}
.syn-more:focus-visible{outline:2px solid var(--p5);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.syn-more svg{transition:none}}
html[data-theme=light] .syn-bg{opacity:.26;filter:blur(38px) saturate(1.15)}
.myvisits .pcap{margin-bottom:6px}
.pcap-n{color:var(--info);font-size:12px;font-weight:700}
.pcap-act{margin-left:auto;display:inline-flex;align-items:center;gap:4px;padding:5px 10px;
  min-height:30px;font-family:var(--fb);font-size:12px;font-weight:800;letter-spacing:0;text-transform:none;color:var(--info);
  border:1px solid color-mix(in srgb,var(--info) 34%,var(--glass-line));background:linear-gradient(color-mix(in srgb,var(--info) 12%,transparent),color-mix(in srgb,var(--info) 12%,transparent)),var(--glass-bg);box-shadow:var(--glass-hi);border-radius:999px;transition:.16s}
.pcap-act svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}
.pcap-act:hover{border-color:color-mix(in srgb,var(--info) 55%,var(--glass-line))}
.pcap-act:active{transform:scale(.96)}
/* 회차 행 — 회차·날짜는 왼쪽 고정 칼럼, 배지 줄바꿈은 오른쪽 정보 영역(.vinfo) 안에서만(왼쪽 칼럼 침범 금지).
   날짜는 기록 리스트처럼 연도 위·월-일 아래 두 줄 스택으로 압축. 수정 연필은 절대 위치라 줄 수와 무관하게 우측 중앙 */
.visitrow{width:100%;display:flex;align-items:center;gap:10px;margin:0;padding:9px 26px 9px 2px;text-align:left;border-top:1px solid var(--hairline);font-size:inherit;color:inherit;transition:.14s;border-radius:6px;position:relative}
.myvisits .pcap+.visitrow{border-top:0}
.visitrow:hover{background:rgba(255,255,255,.025)}
.visitrow:active{transform:scale(.99)}
.visitrow .vdate{display:flex;flex-direction:column;flex:0 0 auto;font-family:var(--fn);line-height:1.25;min-width:38px}
.visitrow .vdate i{font-style:normal;font-size:11px;color:var(--faint);letter-spacing:.02em}
.visitrow .vdate b{font-size:11.5px;font-weight:700;color:var(--muted)}
.visitrow .vdate b.unk{color:var(--faint)}
/* 정보 영역 — 점수·배지가 여기 안에서만 줄바꿈된다(둘째 줄도 날짜 오른쪽에서 시작) */
.visitrow .vinfo{flex:1;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:5px 9px}
/* 점수 묶음 — 등급 아이콘+점수+인원을 한 단위로 묶어 줄바꿈·수축에도 아이콘이 찌그러지지 않는다 */
.visitrow .vscore{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;flex:0 0 auto}
.visitrow .vscore svg{flex:0 0 auto}
.visitrow .vscore b{font-family:var(--fn);font-size:12.5px;font-weight:800;color:var(--text)}
.visitrow .vscore i{font-style:normal;font-family:var(--fn);font-size:11.5px;color:var(--faint)}
.visitrow .planbadge,.visitrow .obbadge{margin-left:0}
.visitrow .leftbadge{margin-left:0}
.visitrow .vgo{position:absolute;right:2px;top:50%;transform:translateY(-50%);margin-left:0;color:var(--faint);display:grid;place-items:center}
.visitrow .vgo svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.9}
/* 회차 번호 칩 — 1차(중립) / 재방(블루) */
.vno{flex:0 0 auto;min-width:34px;text-align:center;padding:3px 6px;font-size:11px;font-weight:800;color:var(--muted);
  border-radius:6px;background:var(--tag-bg)}
.vno.re{color:var(--info);background:color-mix(in srgb,var(--info) 14%,transparent)}
/* 회차 선택 시트 — 어느 방문의 기록/리뷰인지 */
.visit-sheet .rev-theme{margin-bottom:12px}
.visit-list{display:flex;flex-direction:column;gap:8px}
.visit-pick{display:flex;align-items:center;gap:11px;width:100%;min-height:60px;text-align:left;padding:10px 12px;color:inherit;
  border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);transition:.15s}
@media(hover:hover){.visit-pick:hover{border-color:var(--glass-line-hi)}}
.visit-pick:focus-visible,.visit-add:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.visit-pick:active{transform:scale(.985)}
.visit-pick.locked{opacity:.45}
.visit-pick .vp-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.visit-pick .vp-mid b{font-size:13.5px;font-weight:800}
.visit-pick .vp-mid b i{font-style:normal;color:var(--faint);font-size:11.5px;margin-left:3px}
.visit-pick .vp-mid small{font-size:11.5px;color:var(--faint);font-variant-numeric:tabular-nums}
.vp-state{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:800;color:var(--text)}
.vp-state svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;color:var(--p5)}
.visit-pick.locked .vp-state{color:var(--faint)}
.vp-go{flex:0 0 auto;color:var(--faint);display:grid;place-items:center}
.vp-go svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
/* 날짜 미정 일정 수정 확인 [fb:c33d599f] — 새 기록 날짜가 같은 테마 날짜 미정 일정의 기간 안일 때 고를 일정 */
.flexplan-sheet .confirm-copy{margin-bottom:12px}
.flexplan-theme{margin:0 0 8px;font-size:13px;font-weight:800;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flexplan-list{display:flex;flex-direction:column;gap:7px;max-height:min(42vh,300px);overflow:auto}
.flexplan-pick{display:flex;align-items:center;gap:10px;width:100%;min-height:54px;padding:10px 12px;text-align:left;color:var(--text);border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.flexplan-pick:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.flexplan-pick .fp-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.flexplan-pick .fp-mid b{font-size:13.5px;font-weight:800}
.flexplan-pick .fp-mid b i{font-style:normal;color:var(--faint);font-size:11.5px;margin-left:3px}
.flexplan-pick .fp-mid small{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flexplan-pick .fp-check{flex:0 0 auto;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--surface2);color:transparent}
.flexplan-pick .fp-check svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.5}
.flexplan-pick.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
.flexplan-pick.on .fp-check{background:var(--accent);color:#fff}
.flexplan-note{margin:10px 1px 0;font-size:11.5px;line-height:1.45;color:var(--faint)}
.flexplan-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}.flexplan-actions .btn{width:100%;min-height:46px}.flexplan-actions .btn:disabled{opacity:.4}
/* 재방문 추가 버튼 — 점선 스트로크 + 회차 예고 */
.visit-add{display:flex;align-items:center;gap:11px;width:100%;text-align:left;margin-top:10px;padding:12px;color:inherit;
  border:1px dashed var(--glass-line-hi);border-radius:12px;background:transparent;transition:.15s}
@media(hover:hover){.visit-add:hover{border-color:var(--muted);background:var(--tag-bg)}}
.visit-add:active{transform:scale(.985)}
.visit-add .va-ic{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;color:var(--muted);
  border-radius:50%;background:var(--tag-bg)}
.visit-add .va-ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.visit-add .va-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.visit-add .va-tx b{font-size:13.5px;font-weight:800}
.visit-add .va-tx small{font-size:11px;color:var(--faint)}
/* 기록 액션 시트 — 버튼 우측 회차 예고 칩. 절대 위치로 띄워 라벨 중앙 정렬(다른 버튼과 동일)을 해치지 않는다 */
.recsheet-acts .btn{position:relative}
.recsheet-acts .ra-visit{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:800;color:var(--muted);padding:2px 7px;
  border-radius:6px;background:var(--tag-bg)}

/* (달력 재방문 표시는 예정 링과 같은 연주황 글로우 링 + 제목 옆 RE 딱지 — .thumb.revisit/.pent.revisit, 플랜 링 옆에 정의) */
/* 옵저버 토글(기록 폼) — 라벨 옆 여백 정리 */
.toggle.obs .lbl{color:var(--text)}
/* 재방문 기록 소개 팝업 — 그림은 실제 회차 선택·배지 렌더 클래스를 그대로 재사용(축소 없이 실측) */
.rvi-mark{display:grid;place-items:center}
.rvi-mark svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.9}
.rvi-picture{display:grid;grid-template-columns:1fr;pointer-events:none;margin-bottom:10px}
.rvi-picture .cni-tools-screen{width:100%;height:auto;min-height:0;transform:none;padding:10px 12px 12px}
.rvi-mock .cni-sheetbar{font-size:14.5px}
.rvi-mock .visit-pick{margin-top:8px}
.rvi-mock .rev-visit{border-top:0;padding-top:12px}
.rvi-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.rvi-row .rvi-th{width:32px;height:42px;flex:0 0 auto;border-radius:6px;border:1px solid var(--hairline);background:linear-gradient(160deg,var(--surface3),var(--surface2))}
.rvi-row b{font-size:14px;display:flex;align-items:center}
.rvi-row small{display:block;color:var(--faint);font-size:11.5px;margin-top:3px}
/* 라이트 테마 — 글로우 텍스트섀도만 정리(색은 변수로 자동) */
html[data-theme=light] .rvbadge,html[data-theme=light] .vno.re,html[data-theme=light] .ttl-visit{text-shadow:none}

/* 기록 팁 팝업 — 달력(그리드) 날짜 탭 → 날짜 시트 목업 */
.rti-picture{display:grid;grid-template-columns:1.35fr 1fr;gap:8px;margin-bottom:2px;pointer-events:none}
.rti-shot{position:relative;min-width:0;display:flex;flex-direction:column;justify-content:center;padding:30px 9px 10px;border:1px solid var(--border);border-radius:16px;background:var(--bg);overflow:hidden}
html[data-theme=light] .rti-shot{box-shadow:0 8px 22px rgba(45,60,78,.06)}
.rti-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.rti-dow{margin-bottom:1px;text-align:center;font-size:11px;font-weight:800;color:var(--muted)}
.rti-dow.sun,.rti-daybar .sun{color:var(--danger)}
.rti-dow.sat{color:var(--info)}
.rti-cell{position:relative;aspect-ratio:.82;border:1px solid var(--hairline);border-radius:6px;padding:1px 3px;background:var(--surface)}
.rti-cell b{display:block;font-size:11px;line-height:1.15;font-weight:800;color:var(--muted);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.rti-cell i{position:absolute;left:3px;right:3px;bottom:3px;height:32%;border-radius:3px}
.rti-cell i.fa{background:linear-gradient(150deg,#8A5A44,#3E2A3E)}
.rti-cell i.fb{background:linear-gradient(150deg,#2E4A5E,#1E2A3E)}
.rti-cell i.fp{border:1px dashed color-mix(in srgb,var(--info) 65%,transparent);background:color-mix(in srgb,var(--info) 10%,transparent)}
.rti-cell.tap{border-color:var(--p5);box-shadow:0 0 0 1px var(--p5)}
.rti-cell.tap b{color:var(--p5)}
.rti-tapdot{position:absolute;right:-5px;bottom:-5px;width:16px;height:16px;border-radius:50%;border:2px solid var(--p5);background:color-mix(in srgb,var(--p5) 20%,transparent)}
.rti-day{display:grid;gap:7px}
.rti-daybar{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;font-weight:900}
.rti-daybar .sun{font-size:11px;font-weight:800}
.rti-daybar svg{width:13px;height:13px;fill:none;stroke:var(--muted);stroke-width:2}
.rti-dayhint{padding:9px 6px;border:1px dashed var(--hairline);border-radius:8px;text-align:center;font-size:11px;color:var(--faint)}
.rti-add{width:100%;min-height:32px;font-size:11px;pointer-events:none}
.rti-add svg{width:12px;height:12px}
@media(max-width:359px){.rti-picture{grid-template-columns:1fr}.rti-shot{padding:25px 10px 10px}}

/* ================= UGC 신고 (앱스토어 가이드라인 1.2) ================= */
/* 리뷰 카드 깃발 — 내 리뷰의 PNG 버튼과 같은 자리·같은 톤의 고스트 버튼 */
.rev-flag{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:1px solid var(--border);border-radius:7px;color:var(--faint);background:var(--surface2)}
.rev-flag svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.8}
.rev-flag:active{transform:scale(.95);color:var(--danger)}
/* 신고 시트 — 대상 미리보기 + 사유 칩 */
.report-target{display:flex;align-items:center;gap:8px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);font-size:12.5px;color:var(--muted)}
.report-target svg{flex:0 0 auto;width:14px;height:14px;stroke:var(--danger);fill:none;stroke-width:1.8}
.report-target span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.report-reasons{display:flex;flex-wrap:wrap;gap:7px}
.rp-chip{min-height:36px;padding:0 14px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12.5px;font-weight:750;transition:color .16s,background .16s,scale .2s var(--ease-press)}
.rp-chip.on{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}
.rp-chip:active{scale:.96}
/* 공유 메모 푸터 깃발 — 삭제 버튼과 같은 크기, 중립 톤 */
.msf-report{flex:0 0 auto;width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--glass-line);border-radius:50%;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);transition:background-color .15s,transform .1s}
.msf-report svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}
.msf-report:active{transform:scale(.95);color:var(--danger)}

/* ================= 게스트 모드 — 가입 유도 ================= */
/* 인증 화면 '로그인 없이 둘러보기' */
.auth-browse{width:100%;margin-top:12px;padding:10px 0;color:var(--faint);font-size:12.5px;text-decoration:underline;text-underline-offset:3px}
.auth-browse:active{color:var(--text)}
/* 탐색 앱바 로그인 필 (게스트 — 알림 벨 자리) */
.guest-pill{flex:0 0 auto;height:34px;padding:0 14px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12.5px;font-weight:800;letter-spacing:-.01em}
.guest-pill:active{transform:scale(.96)}
/* 테마 상세 가입 카드 (리뷰 섹션 위) */
.guest-join-card{display:flex;align-items:center;gap:12px;width:calc(100% - 36px);margin:16px 18px 0;padding:14px 16px;text-align:left;border:1px solid color-mix(in srgb,var(--gold) 40%,var(--border));border-left:3px solid var(--gold);background:color-mix(in srgb,var(--gold) 7%,var(--surface2));clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px))}
.guest-join-card div{flex:1;min-width:0}
.guest-join-card b{display:block;font-size:14px;color:var(--text)}
.guest-join-card small{display:block;margin-top:3px;color:var(--faint);font-size:11.5px;line-height:1.5}
.guest-join-card span svg{width:18px;height:18px;stroke:var(--gold);fill:none;stroke-width:2}
.guest-join-card:active{transform:scale(.985)}
/* 가입 유도 시트 */
.signup-sheet .gs-sub{margin:0 2px 12px;color:var(--muted);font-size:13.5px;line-height:1.6}
.signup-sheet .gs-perks{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.signup-sheet .gs-perks span{padding:9px 12px;border:1px solid var(--border);background:var(--surface2);font-size:12.5px;color:var(--muted);border-radius:12px}
.signup-sheet .gs-row{display:flex;align-items:center;justify-content:space-between;margin-top:12px}
.signup-sheet .gs-login{color:var(--text);font-size:12.5px;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.signup-sheet .gs-later{color:var(--faint);font-size:12.5px;padding:6px 8px}

/* ================= 재사용 계획 ================= */
/* 기록 탭 머리 계획 | 일괄 입력 — 보기 도구(.vt-acts)와 같은 유리 캡슐 한 개를 가는 선으로 두 칸 분할(글래스는 공용 규칙). 계획 아이콘만 계획 화면의 골드 */
.record-head-actions{display:flex;flex:none;align-items:center;margin-left:auto;overflow:hidden}
.rha{display:flex;align-items:center;gap:5px;height:34px;padding:0 13px;color:var(--text);font-size:12px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;transition:background .14s}
.rha+.rha{border-left:1px solid var(--glass-line)}
.rha svg{width:16px;height:16px;flex:none;color:var(--muted);stroke:currentColor;fill:none;stroke-width:1.9;transition:scale .2s cubic-bezier(.3,.7,.4,1)}
.rha.plan-entry svg{color:var(--info)} /* 계획 = 일정 — 일정 파랑 (골드는 평점·인생·졸업에만) */
@media(hover:hover){.rha:hover{background:color-mix(in srgb,var(--text) 6%,transparent)}}
.rha:active{background:color-mix(in srgb,var(--text) 9%,transparent)}.rha:active svg{scale:.9}
.rha:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.view-plans,.plan-edit-sheet,.plan-day-sheet,.plan-theme-add-sheet,.plan-share-sheet,.chat-plan-detail-sheet{--plan-red:var(--p5);--plan-tone:var(--info)}.plan-library-scroll{padding:13px 18px 24px}.plan-library-intro{position:relative;display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:center;margin-bottom:16px;padding:15px;overflow:hidden;border:1px solid color-mix(in srgb,var(--plan-tone) 32%,var(--border));background:linear-gradient(125deg,color-mix(in srgb,var(--plan-tone) 8%,var(--surface)),var(--surface) 54%);border-radius:16px}.plan-library-intro::after{content:none}.plan-intro-icon{width:46px;height:46px;display:grid;place-items:center;color:var(--plan-tone);border:1px solid color-mix(in srgb,var(--plan-tone) 38%,var(--border));background:color-mix(in srgb,var(--plan-tone) 7%,transparent);border-radius:50%}.plan-intro-icon svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:square;stroke-linejoin:miter}.plan-library-intro i,.plan-detail-intro>i,.plan-target-mini i{display:block;font-style:normal;font-size:11px;font-weight:800;color:var(--muted)}.plan-library-intro h2{margin:0 0 4px;font-size:17px;line-height:1.2;letter-spacing:-.025em}.plan-library-intro p{font-size:11px;line-height:1.45;color:var(--muted)}
.plan-list{display:grid;gap:10px}.plan-card{position:relative;min-height:116px;display:grid;grid-template-columns:48px minmax(0,1fr) 20px;align-items:center;gap:12px;padding:15px;text-align:left;border:1px solid color-mix(in srgb,var(--plan-tone) 30%,var(--border));background:linear-gradient(125deg,color-mix(in srgb,var(--plan-tone) 5%,var(--surface)),var(--surface) 58%);color:var(--text)}.plan-card::before{content:none}.plan-card:active{transform:scale(.985)}.plan-card-mark{width:48px;height:56px;display:grid;place-items:center;color:var(--plan-tone);border:1px solid color-mix(in srgb,var(--plan-tone) 42%,var(--border));border-radius:50%}.plan-card-mark svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:square;stroke-linejoin:miter}.plan-card-copy{display:flex;min-width:0;flex-direction:column;gap:3px}.plan-card-copy>i{font-style:normal;font-size:11px;font-weight:700;color:var(--muted)}.plan-card-copy>b{overflow:hidden;font-size:16px;text-overflow:ellipsis;white-space:nowrap}.plan-card-copy>small{font-size:11px;color:var(--muted)}.plan-kind-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}.plan-kind-tags>span{padding:3px 7px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:800}.plan-card-go{color:var(--muted)}.plan-card-go svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
.plan-empty{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:28px 22px;text-align:center;border:1px dashed var(--border);background:var(--surface)}.plan-empty>span{width:46px;height:46px;display:grid;place-items:center;color:var(--plan-tone);border:1px solid color-mix(in srgb,var(--plan-tone) 35%,var(--border));border-radius:50%}.plan-empty>span svg{width:22px;height:22px;transform:rotate(-45deg);fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:square;stroke-linejoin:miter}.plan-empty>b{margin-top:8px;font-size:14px}.plan-empty>p{max-width:290px;color:var(--muted);font-size:11px;line-height:1.55}.plan-empty .btn{margin-top:9px}.plan-empty.library{min-height:300px}
/* 계획명은 작업 버튼 아래에서 전체 폭을 쓰고 긴 이름도 모두 표시한다. */
.appbar.plan-detail-bar{display:grid;grid-template-columns:auto minmax(0,1fr);gap:18px 12px;padding-bottom:20px}.plan-detail-bar>.plan-detail-actions{justify-self:end;flex:none}.plan-detail-heading{grid-column:1/-1;min-width:0;padding-top:16px;border-top:1px solid var(--hairline)}.appbar.plan-detail-bar .title{display:block;margin:0;overflow:visible;white-space:normal;overflow-wrap:anywhere;word-break:keep-all;font-size:26px;line-height:1.3;letter-spacing:-.04em;color:var(--text)}.plan-detail-heading .sub{margin-top:9px;white-space:normal;overflow-wrap:anywhere;font-size:11px;line-height:1.6;color:var(--muted)}.plan-detail-actions{display:flex;gap:3px}.plan-detail-actions .iconbtn:last-child{color:var(--muted)}.plan-kind-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:0 18px 8px;border:1px solid var(--border);background:var(--border)}.plan-kind-tabs button{min-height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--surface);color:var(--muted)}.plan-kind-tabs button b{font-size:11px}.plan-kind-tabs button small{font-family:var(--fn);font-size:11px}.plan-kind-tabs button.ready:not(.on) small{color:var(--plan-tone)}.plan-kind-tabs button.on{position:relative;background:linear-gradient(145deg,color-mix(in srgb,var(--p5) 24%,var(--surface)),var(--surface));color:var(--text)}.plan-kind-tabs button.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:var(--p5)}.plan-detail-scroll{padding:5px 18px 0}.plan-detail-intro{padding:8px 2px 17px}.plan-detail-intro h2{margin:4px 0;font-size:22px;letter-spacing:-.035em}.plan-detail-intro p{font-size:11px;line-height:1.55;color:var(--muted)}.plan-days{display:grid;gap:12px}.plan-day{border:1px solid var(--border);background:var(--surface);clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px))}.plan-day-head{min-height:52px;display:grid;grid-template-columns:auto 1fr 36px;align-items:center;gap:9px;padding:7px 9px 7px 13px;border-bottom:1px solid var(--hairline)}.plan-day-head>span{display:flex;align-items:baseline;gap:4px}.plan-day-head i{font-family:var(--fn);font-size:11px;font-style:normal;letter-spacing:0;color:var(--p5);font-weight:900}.plan-day-head>small{text-align:right;font-size:11px;color:var(--muted)}.plan-day-head .iconbtn{width:34px;height:34px;color:var(--muted)}.plan-day-head .iconbtn svg{width:14px}.plan-timeline{padding:10px 12px 12px}.plan-time-item{position:relative;display:grid;grid-template-columns:24px 55px minmax(0,1fr);gap:8px;min-height:72px}.plan-time-item:not(:last-child)::after{content:"";position:absolute;left:11px;top:25px;bottom:-5px;width:1px;background:linear-gradient(var(--p5),var(--border))}.plan-node{width:24px;height:24px;display:grid;place-items:center;z-index:1;color:var(--paper);background:var(--p5);font-family:var(--fn);font-size:11px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}.plan-time-item.meal .plan-node{background:var(--plan-tone);color:var(--bg);font-size:11px;font-weight:900}.plan-time{display:flex;flex-direction:column;gap:3px;padding-top:2px;font-family:var(--fn)}.plan-time>b{font-size:11px}.plan-time>small{font-size:11px;color:var(--faint)}.plan-item-copy{display:flex;min-width:0;flex-direction:column;gap:2px;padding:1px 0 12px}.plan-item-copy i{overflow:hidden;font-family:var(--fn);font-size:11px;font-style:normal;letter-spacing:0;color:var(--p5);text-overflow:ellipsis;white-space:nowrap}.plan-time-item.meal .plan-item-copy i{color:var(--plan-tone)}.plan-item-copy b{overflow:hidden;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}.plan-item-copy small{font-size:11px;color:var(--muted)}.plan-detail-spacer{height:92px}.plan-dock{position:absolute;left:0;right:0;bottom:0;z-index:8;display:grid;grid-template-columns:1fr 1.14fr;gap:7px;padding:12px 18px calc(11px + env(safe-area-inset-bottom));border-top:1px solid var(--hairline);background:rgba(8,9,11,.93);backdrop-filter:blur(16px)}.plan-dock .btn{min-width:0;margin:0;padding:0 9px;font-size:12px}.plan-dock .btn svg{width:15px}
.plan-apply-sheet{--plan-tone:var(--info)}.plan-edit-sheet .field,.plan-fed-setup .field,.plan-apply-sheet .field,.plan-save-sheet .field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px}.plan-edit-sheet .field>span,.plan-fed-setup .field>span,.plan-apply-sheet .field>span,.plan-save-sheet .field>span{font-size:11px;font-weight:850;color:var(--muted)}.plan-edit-sheet .field small{font-weight:600;color:var(--faint)}.plan-note-input{min-height:88px;resize:none;padding-top:11px}.plan-sheet-submit{width:100%;margin:5px 0 0}.plan-target-mini{display:flex;flex-direction:column;gap:4px;margin-bottom:14px;padding:13px;border-left:2px solid var(--plan-tone);background:color-mix(in srgb,var(--plan-tone) 7%,var(--surface2))}.plan-target-mini b{font-size:15px}.plan-day-input{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center;gap:8px}.plan-day-input b{font-size:11px;color:var(--muted)}.plan-apply-preview{display:flex;flex-direction:column;gap:4px;margin:2px 0 14px;padding:12px;border:1px solid var(--border);background:var(--surface2)}.plan-apply-preview i{font-size:11px;font-style:normal;font-weight:900;color:var(--faint)}.plan-apply-preview.ready{border-color:color-mix(in srgb,var(--plan-tone) 35%,var(--border))}.plan-apply-preview.ready i{color:var(--plan-tone)}.plan-apply-preview.blocked{border-color:color-mix(in srgb,var(--danger) 35%,var(--border))}.plan-apply-preview.blocked i{color:var(--danger)}.plan-apply-preview b{font-size:12px}.plan-apply-preview small{font-size:11px;color:var(--muted)}
.plan-apply-scope-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 1px 7px}.plan-apply-scope-head b{font-size:11px}.plan-apply-scope-head span{color:var(--faint);font-size:11px;text-align:right}.plan-apply-scope{margin-bottom:10px} /* 전체 | 일차 선택 — 공용 세그먼트(.segctl) */.plan-apply-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;gap:8px;margin:-2px 0 13px;padding:11px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface2)}.plan-apply-range[hidden]{display:none}.plan-apply-range label{display:flex;min-width:0;flex-direction:column;gap:5px}.plan-apply-range label>span{color:var(--muted);font-size:11px;font-weight:800}.plan-apply-range>i{padding-bottom:12px;color:var(--faint);font-size:11px;font-style:normal}.plan-apply-range .input{min-width:0;padding:0 9px}.plan-apply-preview{gap:10px}.plan-apply-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.plan-apply-summary>span{display:flex;min-width:0;flex-direction:column;gap:3px}.plan-apply-summary>em{flex:none;padding:4px 7px;border-radius:999px;background:color-mix(in srgb,var(--plan-tone) 9%,var(--surface));color:var(--plan-tone);font-size:11px;font-style:normal;font-weight:850}.plan-apply-days{display:grid;gap:8px}.plan-apply-day{overflow:hidden;border:1px solid var(--hairline);border-radius:12px;background:var(--surface)}.plan-apply-day>header{min-height:45px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid var(--hairline)}.plan-apply-day>header>span{display:flex;align-items:baseline;gap:6px}.plan-apply-day>header>span:last-child b{font-family:var(--fn);font-size:11px}.plan-apply-day>header small{font-size:11px}.plan-apply-kind{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;background:color-mix(in srgb,var(--plan-tone) 4%,var(--surface2))}.plan-apply-kind>span{color:var(--plan-tone);font-size:11px;font-weight:850}.plan-apply-day ol{list-style:none;margin:0;padding:0}.plan-apply-day li{display:grid;grid-template-columns:62px minmax(0,1fr);gap:9px;padding:9px 10px}.plan-apply-day li+li{border-top:1px solid var(--hairline)}.plan-apply-day li>span{padding-top:1px;color:var(--plan-tone);font-family:var(--fn);font-size:11px;font-weight:800}.plan-apply-day li>div{display:flex;min-width:0;flex-direction:column;gap:2px}.plan-apply-day li b,.plan-apply-day li small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-apply-day li b{font-size:11px}.plan-apply-day.unavailable{opacity:.7}.plan-apply-day>p{padding:13px 10px;color:var(--muted);font-size:11px}
.fed-number-picks.six{grid-template-columns:repeat(6,1fr)}.fed-number-picks.six button{min-width:0}.fed-save-actions{display:grid;grid-template-columns:1fr 1.12fr;gap:8px}.fed-save-actions .fed-save{min-width:0;padding:0 10px;font-size:clamp(12px,3.4vw,13.5px)}.fed-save-actions .fed-save svg{width:16px;height:16px;flex:none}
html[data-theme=light] .plan-card,html[data-theme=light] .plan-library-intro,html[data-theme=light] .plan-day{box-shadow:0 8px 22px rgba(45,60,78,.065)}html[data-theme=light] .plan-dock{background:rgba(246,248,251,.95)}html[data-theme=light] .plan-detail-actions .iconbtn:last-child,html[data-theme=light] .plan-day-head .iconbtn{color:#52606F}

/* 계획 화면 시각 정돈 — 정보 구조는 유지하고 정렬·여백·모서리를 부드럽게 통일 */
.view-plans>.appbar{padding-bottom:14px}.view-plans>.appbar.subview-appbar>div:nth-child(2){flex:1}.view-plans>.appbar>.btn{margin-left:auto;border-radius:12px;box-shadow:0 7px 20px rgba(228,3,43,.18)}.view-plans>.appbar>.iconbtn,.plan-detail-actions .iconbtn{border-radius:12px}
.plan-library-scroll{padding-top:10px}.plan-library-intro{grid-template-columns:44px minmax(0,1fr);gap:13px;margin-bottom:14px;padding:14px 16px;border-color:var(--border);border-radius:16px;background:var(--matte-tint);clip-path:none;box-shadow:none} /* 안내 — 무광 배너 */.plan-library-intro::after{display:none}.plan-intro-icon{width:42px;height:42px;border:0;border-radius:50%;clip-path:none;color:var(--info);background:color-mix(in srgb,var(--info) 16%,transparent)}.plan-intro-icon svg{width:23px;height:23px;stroke-linecap:round;stroke-linejoin:round}.plan-library-intro h2{margin:0 0 3px;font-size:16px;line-height:1.25}.plan-library-intro p{font-size:12px;line-height:1.5}
.plan-list{gap:12px}.plan-card{min-height:106px;grid-template-columns:44px minmax(0,1fr) 32px;gap:13px;padding:16px;border-color:color-mix(in srgb,var(--plan-tone) 22%,var(--border));border-radius:17px;background:linear-gradient(135deg,color-mix(in srgb,var(--plan-tone) 4%,var(--surface)),var(--surface) 72%);clip-path:none;box-shadow:0 10px 28px rgba(0,0,0,.14);transition:transform .16s,border-color .16s,box-shadow .16s}.plan-card::before{left:0;top:22px;width:3px;height:28px;border-radius:0 4px 4px 0}.plan-card:hover{border-color:color-mix(in srgb,var(--plan-tone) 38%,var(--border));box-shadow:0 14px 34px rgba(0,0,0,.18);transform:translateY(-1px)}.plan-card:active{transform:scale(.99)}.plan-card-mark{width:44px;height:44px;border-radius:13px;clip-path:none;background:color-mix(in srgb,var(--plan-tone) 8%,var(--surface2))}.plan-card-mark svg{width:21px;height:21px;stroke-linecap:round;stroke-linejoin:round}.plan-card-copy{gap:4px}.plan-card-copy>i{color:var(--plan-tone);font-size:11px}.plan-card-copy>b{font-size:15.5px;line-height:1.25}.plan-card-copy>small{font-size:11px}.plan-kind-tags{gap:6px;margin-top:3px}.plan-card-go{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--hairline);border-radius:50%;background:var(--surface2)}.plan-card-go svg{width:15px;height:15px}
.plan-empty{min-height:214px;gap:8px;border-style:solid;border-radius:18px;background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--plan-tone) 3%,var(--surface)))}.plan-empty>span{width:46px;height:46px;border-radius:14px;background:color-mix(in srgb,var(--plan-tone) 7%,var(--surface2));transform:none}.plan-empty>span svg{width:22px;height:22px;transform:none;stroke-linecap:round;stroke-linejoin:round}.plan-empty>b{margin-top:7px;font-size:14px}.plan-empty>p{font-size:11px}.plan-empty .btn{border-radius:12px}.plan-empty.library{min-height:270px}
.plan-detail-actions{gap:6px}.plan-kind-tabs{gap:6px;margin-bottom:10px;border:0;border-radius:15px;background:transparent}.plan-kind-tabs button{min-height:52px;border:1px solid var(--border);border-radius:13px;background:var(--surface2)}.plan-kind-tabs button.on{border-color:color-mix(in srgb,var(--p5) 42%,var(--border));background:linear-gradient(145deg,color-mix(in srgb,var(--p5) 15%,var(--surface2)),var(--surface2));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--p5) 8%,transparent)}.plan-kind-tabs button.on::after{display:none}.plan-detail-intro{padding:10px 4px 18px}.plan-detail-intro>i{letter-spacing:.02em}.plan-detail-intro h2{margin:4px 0 3px;font-size:20px}.plan-detail-intro p{font-size:11px}.plan-days{gap:14px}.plan-day{overflow:hidden;border-radius:17px;clip-path:none;box-shadow:0 10px 28px rgba(0,0,0,.12)}.plan-day-head{min-height:56px;padding:9px 10px 9px 14px}.plan-day-head .iconbtn{border-radius:11px}.plan-timeline{padding:13px 14px 14px}.plan-node{border-radius:50%;clip-path:none}.plan-time-item:not(:last-child)::after{background:linear-gradient(var(--p5),color-mix(in srgb,var(--border) 78%,transparent))}.plan-item-copy{gap:3px}.plan-detail-spacer{height:112px}.plan-dock{left:12px;right:12px;bottom:10px;gap:8px;padding:10px;border:1px solid var(--border);border-radius:17px;background:color-mix(in srgb,var(--bg) 91%,transparent);box-shadow:0 16px 38px rgba(0,0,0,.3)}.plan-dock .btn{height:48px;border-radius:12px;font-size:12px}
.plan-edit-sheet .input,.plan-fed-setup .input,.plan-apply-sheet .input,.plan-save-sheet .input{border-radius:12px}.plan-sheet-submit{border-radius:12px}.plan-target-mini{padding:13px 14px;border:1px solid color-mix(in srgb,var(--plan-tone) 24%,var(--border));border-radius:14px;background:color-mix(in srgb,var(--plan-tone) 6%,var(--surface2))}.plan-apply-preview{border-radius:13px}
html[data-theme=light] .plan-library-intro,html[data-theme=light] .plan-card,html[data-theme=light] .plan-day{box-shadow:0 10px 26px rgba(45,60,78,.08)}html[data-theme=light] .plan-card-copy>i{color:var(--muted)}html[data-theme=light] .plan-dock{background:rgba(246,248,251,.92);box-shadow:0 14px 34px rgba(45,60,78,.16)}
@media(max-width:359px){.record-head-actions .rha{gap:4px;padding:0 10px}.plan-library-scroll,.plan-detail-scroll{padding-left:13px;padding-right:13px}.plan-kind-tabs{margin-left:13px;margin-right:13px}.plan-detail-actions{gap:1px}.plan-detail-actions .iconbtn{width:36px;height:36px}.plan-dock{padding-left:13px;padding-right:13px}.plan-dock .btn{font-size:12px}}

/* 계획은 전체 탭이 아니라 일차별 요일 구성으로 관리 */
.plan-detail-scroll{padding-top:8px}.plan-day-head{grid-template-columns:auto 1fr;border-bottom:0;background:linear-gradient(135deg,color-mix(in srgb,var(--p5) 6%,var(--surface2)),var(--surface2))}.plan-day-head>small{padding-right:4px}.plan-day-variants{display:grid;gap:1px;background:var(--hairline)}.plan-day-variant{background:var(--surface)}.plan-variant-head{min-height:42px;display:grid;grid-template-columns:auto 1fr 34px;align-items:center;gap:8px;padding:5px 10px 5px 14px;border-top:1px solid var(--hairline)}.plan-variant-head>span{width:max-content;padding:5px 9px;border:1px solid color-mix(in srgb,var(--plan-tone) 26%,var(--border));border-radius:999px;background:color-mix(in srgb,var(--plan-tone) 6%,var(--surface2));color:var(--plan-tone);font-size:11px;font-weight:850}.plan-variant-head>small{text-align:right;color:var(--muted);font-size:11px}.plan-variant-head .iconbtn{width:32px;height:32px;border-radius:10px;color:var(--muted)}.plan-variant-head .iconbtn svg{width:13px}.plan-time-item{grid-template-columns:24px 55px minmax(0,1fr) 30px}.plan-item-remove{width:28px;height:28px;display:grid;place-items:center;margin-top:-1px;border:1px solid transparent;border-radius:9px;color:var(--faint)}.plan-item-remove:hover,.plan-item-remove:focus-visible{border-color:var(--border);background:var(--surface2);color:var(--text)}.plan-item-remove svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.plan-dock{grid-template-columns:.88fr .92fr 1.18fr}.plan-dock .btn{padding:0 6px;font-size:12px}.plan-dock .btn.g:first-child{color:var(--text)}
.plan-theme-add-sheet .field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px}.plan-theme-add-sheet .field>span{font-size:11px;font-weight:850;color:var(--muted)}.plan-theme-add-sheet .field>span small{margin-left:4px;color:var(--faint);font-size:11px;font-weight:700}.plan-theme-add-sheet .input{border-radius:12px}.plan-search-hint{margin:-1px 2px 0;color:var(--faint);font-size:11px}.plan-theme-results{max-height:212px;overflow:auto;margin:-2px 0 13px;border:1px solid var(--border);border-radius:14px;background:var(--surface2)}.plan-theme-results[hidden],.plan-theme-picked[hidden]{display:none} /* 선택 전 빈 선택 상자가 grid 로 드러나지 않게 */.plan-theme-results>p{padding:22px 14px;text-align:center;color:var(--muted);font-size:11px}.plan-theme-result{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:10px;padding:9px 11px;text-align:left;color:var(--text)}.plan-theme-result+ .plan-theme-result{border-top:1px solid var(--hairline)}.plan-theme-result:hover{background:color-mix(in srgb,var(--plan-tone) 6%,var(--surface2))}.plan-theme-result>span:nth-child(2){min-width:0}.plan-theme-result b,.plan-theme-result small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-theme-result b{font-size:11.5px}.plan-theme-result small{margin-top:3px;color:var(--muted);font-size:11px}.plan-theme-result>svg{width:15px;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2}.plan-theme-poster{width:38px;height:46px;display:grid;place-items:center;overflow:hidden;border-radius:9px;background-size:cover;background-position:center;color:var(--muted);font-size:12px;font-weight:900}.plan-theme-picked{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:11px;margin:-2px 0 14px;padding:10px;border:1px solid color-mix(in srgb,var(--plan-tone) 32%,var(--border));border-radius:14px;background:color-mix(in srgb,var(--plan-tone) 6%,var(--surface2))}.plan-theme-picked .plan-theme-poster{width:44px;height:52px}.plan-theme-picked i,.plan-theme-picked b,.plan-theme-picked small{display:block}.plan-theme-picked i{color:var(--plan-tone);font-size:11px;font-style:normal;font-weight:850}.plan-theme-picked b{margin-top:2px;font-size:12px}.plan-theme-picked small{margin-top:3px;color:var(--muted);font-size:11px}.plan-time-picker{margin:0 0 13px;padding:13px 13px 3px;border:1px solid var(--border);border-radius:16px;background:color-mix(in srgb,var(--surface2) 86%,transparent)}.plan-time-picker[hidden],.plan-time-picker .slotseg[hidden]{display:none}.plan-time-picker .field{margin-bottom:8px}.plan-time-picker .slotrow{justify-content:space-between}.plan-time-picker .slotrow>.input{flex:0 0 124px}.plan-time-picker .slotchips{margin-top:5px}.plan-time-empty{flex:1 1 100%;order:-1;margin:2px 0 1px;color:var(--faint);font-size:11px;line-height:1.55}.plan-time-picker .slotchips:has(.plan-time-empty){align-items:center}.plan-time-picker .slotchips .bookask{flex:1 1 180px;min-width:0}
html[data-theme=light] .plan-variant-head .iconbtn,html[data-theme=light] .plan-item-remove{color:#52606f}html[data-theme=light] .plan-theme-results{background:#f6f8fb}
@media(max-width:359px){.plan-dock{grid-template-columns:.82fr .9fr 1.2fr}.plan-dock .btn{padding:0 3px;font-size:11px}.plan-add-grid{gap:7px}.plan-time-item{grid-template-columns:22px 48px minmax(0,1fr) 27px}}

/* 계획 v2 — 열람 방식, 날 중심 편집, 계획 전용 아카이브 */
.plan-view-controls{display:flex;align-items:center;gap:7px;margin:0 0 14px}.plan-density,.plan-export{height:38px;display:flex;align-items:center;justify-content:center;gap:5px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}.plan-density svg,.plan-export svg{width:15px;height:15px;fill:none;stroke:currentColor}.plan-export{width:38px;padding:0}.plan-view-controls button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.plan-archive-days,.plan-basic-days,.plan-edit-days{display:grid;gap:16px}.plan-archive-day,.plan-basic-day{overflow:hidden;border:1px solid var(--border);border-radius:19px;background:var(--surface);box-shadow:0 12px 34px rgba(0,0,0,.15)}.plan-archive-day>header,.plan-basic-day>header{height:58px;display:flex;align-items:center;gap:11px;padding:0 16px;background:linear-gradient(120deg,#D8000C 0 14px,var(--surface2) 14px 100%)}.plan-archive-day>header>span{font-family:var(--mono);font-size:24px;font-weight:900;color:var(--p5);transform:rotate(-4deg)}.plan-archive-day>header div{display:flex;flex-direction:column}.plan-archive-day>header i,.plan-basic-day>header i{font-style:normal;font-size:8px;font-weight:900;letter-spacing:.08em;color:var(--p5)}.plan-archive-day>header b,.plan-basic-day>header b{font-size:14px}.plan-archive-variant+.plan-archive-variant{border-top:1px solid var(--border)}.plan-archive-kind,.plan-basic-kind{height:42px;display:flex;align-items:center;justify-content:space-between;padding:0 15px;background:var(--surface2)}.plan-archive-kind b,.plan-basic-kind b{font-size:10px}.plan-archive-kind small,.plan-basic-kind small{font-size:8.5px;color:var(--muted)}.plan-arch.cal-stage.mobile.layout-archive{padding:22px 16px 26px;border-radius:0}.plan-arch .arch{row-gap:26px}.plan-arch .plan-arch-cell{position:relative}.plan-arch .plan-arch-cell:not(:first-child)::before{content:"";position:absolute;z-index:5;left:-12px;top:38%;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid var(--archRed);filter:drop-shadow(1px 1px 0 var(--archChip));transform:rotate(-3deg)}.plan-arch .plan-arch-cell.meal .apo .thumb{background:repeating-linear-gradient(-45deg,#1a1a1e 0 12px,#25242a 12px 24px)}.plan-arch .plan-arch-cell.meal .apo .thumb .ph{font-size:0}.plan-arch .plan-arch-cell.meal .apo .thumb .ph::after{content:"BREAK";font-family:var(--cmono);font-size:18px;color:#EFE9DD}.plan-arch .plan-time-ticket .ats{margin-left:0}.plan-arch.cal-stage.mobile.layout-archive[data-density=compact] .atkt .atarr{display:inline-flex}.plan-arch.cal-stage.mobile.layout-archive[data-density=compact] .atkt .ats.end{display:inline;font-size:9px}.plan-arch.cal-stage.mobile.layout-archive[data-density=compact] .atkt .ats{font-size:9.5px}.plan-arch.cal-stage.mobile.layout-archive[data-density=compact] .atkt{gap:2px;padding-left:5px;padding-right:5px}.plan-arch .arate:empty{display:none}.plan-day-empty{padding:28px 16px;text-align:center;color:var(--muted);font-size:11px;background:var(--surface)}
.plan-basic-day>header{height:52px;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;background:var(--surface2)} /* 기본 보기 일차 머리 — 붉은 모서리 쐐기 없이 무광 */.plan-basic-variant+.plan-basic-variant{border-top:1px solid var(--border)}.plan-basic-list{padding:7px 13px 13px}.plan-basic-item{position:relative;display:grid;grid-template-columns:28px 50px minmax(0,1fr);align-items:center;gap:10px;min-height:72px;padding:8px 0}.plan-basic-item+.plan-basic-item{border-top:1px solid var(--hairline)}.plan-basic-no{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--text);color:var(--bg);font-family:var(--mono);font-size:11px;font-weight:900}.plan-basic-thumb{width:50px;height:60px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--surface2);background-size:cover;background-position:center;color:var(--muted);font-size:14px;font-weight:900}.plan-basic-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.plan-basic-copy>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px;font-weight:850}.plan-basic-copy>b{font-size:12px;line-height:1.25}.plan-basic-copy>small{font-family:var(--mono);font-size:11px;color:var(--muted)}.plan-basic-flow{position:absolute;left:11px;bottom:-6px;z-index:2;width:7px;height:7px;border-right:2px solid var(--faint);border-bottom:2px solid var(--faint);transform:rotate(45deg)}
.plan-edit-days{gap:10px}.plan-edit-day{width:100%;min-height:104px;display:grid;grid-template-columns:48px minmax(0,1fr) auto 28px;align-items:center;gap:11px;padding:13px;border:1px solid var(--border);border-radius:17px;background:var(--surface);color:var(--text);text-align:left;box-shadow:0 10px 28px rgba(0,0,0,.12)}.plan-edit-day-no{width:48px;height:58px;display:grid;place-items:center;border-radius:12px;background:var(--tag-bg);color:var(--text);font-family:var(--mono);font-size:19px;font-weight:900}.plan-edit-day-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.plan-edit-day-copy i{font-size:11px;font-style:normal;font-weight:800;color:var(--muted)}.plan-edit-day-copy b{font-size:14px}.plan-edit-day-copy small{font-size:11px;color:var(--muted)}.plan-edit-kinds{display:flex;flex-direction:column;gap:4px}.plan-edit-kinds>i{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 6px;border:1px solid var(--hairline);border-radius:7px;color:var(--faint);font-size:11px;font-style:normal}.plan-edit-kinds>i.on{border-color:color-mix(in srgb,var(--info) 34%,var(--border));color:var(--text);background:color-mix(in srgb,var(--info) 8%,var(--surface2))}.plan-edit-kinds b{font-family:var(--mono);font-size:11px;color:var(--info)}.plan-dock.read{grid-template-columns:.9fr 1.1fr}.plan-dock.edit{grid-template-columns:1fr}.plan-dock.edit .btn{width:100%}
.plan-day-sheet .sh-head>div:first-child{display:flex;flex-direction:column;gap:2px}.plan-sheet-sub{font-size:11px;font-weight:800;color:var(--muted)}.plan-day-sheet-kinds{display:grid;gap:10px;margin-top:12px}.plan-day-sheet-kind{overflow:hidden;border:1px solid var(--border);border-radius:15px;background:var(--surface2)}.plan-day-sheet-kind>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px}.plan-day-sheet-kind>header>span{display:flex;align-items:center;gap:6px}.plan-day-sheet-kind>header>span:first-child{flex-direction:column;align-items:flex-start;gap:1px}.plan-day-sheet-kind>header b{font-size:11px}.plan-day-sheet-kind>header small{font-size:11px;color:var(--muted)}.plan-kind-action{height:32px;display:flex;align-items:center;gap:3px;padding:0 10px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:11px;font-weight:800}.plan-kind-action svg{width:12px;height:12px;fill:none;stroke:currentColor}.plan-day-sheet-kind>p{padding:16px 10px 18px;border-top:1px solid var(--hairline);text-align:center;color:var(--muted);font-size:11px}.plan-sheet-items{border-top:1px solid var(--hairline)}.plan-sheet-item{display:grid;grid-template-columns:48px minmax(0,1fr) 30px;align-items:center;gap:8px;padding:9px 8px 9px 10px}.plan-sheet-item+.plan-sheet-item{border-top:1px solid var(--hairline)}.plan-sheet-time{display:flex;flex-direction:column;font-family:var(--mono)}.plan-sheet-time b{font-size:11px}.plan-sheet-time small{font-size:11px;color:var(--muted)}.plan-sheet-item>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:2px}.plan-sheet-item>span:nth-child(2) i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-style:normal;color:var(--muted)}.plan-sheet-item>span:nth-child(2) b{font-size:11px}.plan-sheet-item .iconbtn{width:30px;height:30px;border-radius:9px;color:var(--muted)}.plan-clear-kind{width:100%;padding:8px;border-top:1px solid var(--hairline);color:var(--muted);font-size:11px}.plan-copy-box{margin-top:12px;padding:12px;border:1px solid var(--border);border-radius:15px;background:var(--surface2)}.plan-copy-box>b{display:block;margin-bottom:8px;font-size:11px}.plan-copy-box>div{display:grid;grid-template-columns:1fr 1fr;gap:7px}.plan-copy-box .btn{height:38px;border-radius:10px;font-size:11px}.plan-copy-box small{display:block;margin-top:7px;color:var(--muted);font-size:11px;line-height:1.45}.plan-remove-day{width:100%;height:42px;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;border-radius:12px;color:var(--danger);font-size:11px;font-weight:850}.plan-remove-day svg{width:14px;fill:none;stroke:currentColor}
.plan-day-target{display:grid;grid-template-columns:minmax(0,1fr) 102px;align-items:center;gap:10px}.plan-day-target.fixed{grid-template-columns:minmax(0,1fr)}.plan-day-target-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.plan-day-offset{display:flex;min-width:0;flex-direction:column;gap:4px}.plan-day-offset>span{font-size:11px;font-weight:850;color:var(--muted)}.plan-day-offset .input{height:38px;padding-left:11px;background-color:var(--surface);font-size:11px;font-weight:850}
html[data-theme=light] .plan-archive-day,html[data-theme=light] .plan-basic-day,html[data-theme=light] .plan-edit-day{box-shadow:0 10px 28px rgba(45,60,78,.09)}html[data-theme=light] .plan-density,html[data-theme=light] .plan-export,html[data-theme=light] .plan-kind-action{color:#303743}html[data-theme=light] .plan-basic-no{background:#30343c;color:#fff}
@media(max-width:359px){.plan-view-controls{gap:5px}.plan-density{padding:0 8px}.plan-edit-day{grid-template-columns:42px minmax(0,1fr) 28px}.plan-edit-day-no{width:42px}.plan-edit-kinds{display:none}.plan-day-sheet-kind>header{align-items:flex-start;flex-direction:column}.plan-day-sheet-kind>header>span:last-child{width:100%}.plan-kind-action{flex:1;justify-content:center}}

/* 계획 아카이브 흐름 — 포스터·4px 하드 섀도를 제외한 실제 간격의 중앙에 화살표를 둔다. */
.plan-archive-days.single-day .plan-archive-day>header,.plan-basic-days.single-day .plan-basic-day>header,.plan-export-days.single-day .plan-archive-day>header{display:none}
.plan-arch.cal-stage.mobile.layout-archive .arch{column-gap:24px}.plan-arch.cal-stage.mobile.layout-archive[data-density=compact] .arch{column-gap:18px}
.plan-arch:not(.cal-export) .arch:has(>.plan-arch-cell:nth-child(3)){padding-left:20px}.plan-arch[data-density=compact]:not(.cal-export) .arch{padding-left:0!important}.plan-arch[data-density=compact]:not(.cal-export) .arch:has(>.plan-arch-cell:nth-child(4)){padding-left:14px!important}
.plan-arch .plan-arch-cell:not(:first-child)::before{content:none}.plan-arch .plan-poster-flow{position:relative}.plan-arch .plan-poster-flow .apo{transform:none!important}
.plan-arch .plan-arch-cell:not(:first-child) .plan-poster-flow::before{content:"";position:absolute;z-index:5;left:-14px;top:50%;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid var(--archRed);filter:drop-shadow(1px 1px 0 var(--archChip));transform:translateY(-50%) rotate(-3deg);pointer-events:none}.plan-arch[data-density=compact] .plan-arch-cell:not(:first-child) .plan-poster-flow::before{left:-11px}
.plan-export-canvas .plan-arch.cal-stage.mobile.cal-export.layout-archive .arch{column-gap:28px}.plan-export-canvas .plan-arch.cal-stage.mobile.cal-export.layout-archive[data-density=compact] .arch{column-gap:21px}.plan-export-canvas .plan-arch.cal-export .arch:has(>.plan-arch-cell:nth-child(6)){padding-left:23px}.plan-export-canvas .plan-arch[data-density=compact].cal-export .arch{padding-left:0}.plan-export-canvas .plan-arch[data-density=compact].cal-export .arch:has(>.plan-arch-cell:nth-child(8)){padding-left:16px}.plan-export-canvas .plan-arch .plan-arch-cell:not(:first-child) .plan-poster-flow::before{left:-17px;border-top-width:7px;border-bottom-width:7px;border-left-width:11px}.plan-export-canvas .plan-arch[data-density=compact] .plan-arch-cell:not(:first-child) .plan-poster-flow::before{left:-13.5px}
.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="0"],.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="1"],.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="2"],.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))!important;padding-left:0!important}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))!important;padding-left:0!important}

/* 계획 PNG 3·4열 — 큰 원본 폭에 맞춰 캡션과 시간 정보를 적극적으로 키운다. */
.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .atkt{gap:6px;padding:6px 10px 6.5px}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .atkt .ats{font-size:23px}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .atkt .ats.end{font-size:21px}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .plan-time-clock{width:18px;height:18px}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .at{font-size:28px;line-height:1.16}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .ast{font-size:18px}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .appl svg{width:15px;height:21px}.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="0"],[data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]) .appl b{font-size:18px}
.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .atkt{gap:5px;padding:5px 9px 5.5px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .atkt .ats{font-size:20px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .atkt .ats.end{font-size:18px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .plan-time-clock{width:16px;height:16px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .at{font-size:23px;line-height:1.17}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .ast{font-size:16px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .appl svg{width:13px;height:18px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"] .appl b{font-size:16px}

/* 계획 기본 보기 — 시간을 강조하고 실제 항목 간격의 중앙에만 흐름 화살표를 둔다. */
.plan-time-picker[hidden]{display:none}.plan-time-unset{border-style:dashed!important;color:var(--muted)!important;font-family:var(--fb)}.plan-time-unset.on{border-style:solid!important;color:var(--bg)!important}
.plan-basic-list{display:grid;gap:16px;padding:11px 13px 15px}.plan-basic-item{position:relative;min-height:76px;padding:8px;border:0;border-radius:15px;background:color-mix(in srgb,var(--surface2) 72%,transparent)}.plan-basic-item+.plan-basic-item{border-top:0}.plan-basic-item.unscheduled{background:color-mix(in srgb,var(--surface2) 44%,transparent)}.plan-basic-copy>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-basic-meta{min-width:0;display:flex;align-items:center;gap:6px;margin-top:2px}.plan-basic-meta>small{color:var(--muted);font-size:11px;font-weight:800}.plan-basic-time{display:inline-flex;align-items:center;gap:4px;min-width:0;padding:5px 8px;border-radius:999px;background:color-mix(in srgb,var(--info) 12%,var(--surface));color:var(--text);font-family:var(--mono);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--info) 26%,transparent)}.plan-basic-time b{font-size:11.5px;letter-spacing:.02em}.plan-basic-time i{color:var(--info);font-size:11px;font-style:normal}.plan-basic-time small{font-size:11px;font-weight:850}.plan-basic-time.unset{padding:5px 9px;background:color-mix(in srgb,var(--muted) 9%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--muted) 18%,transparent);color:var(--muted);font-size:11px;font-weight:850;letter-spacing:.02em}.plan-basic-flow{left:50%;top:calc(100% + 8px);bottom:auto;z-index:3;width:0;height:0;border:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--faint);transform:translate(-50%,-50%);pointer-events:none}
html[data-theme=light] .plan-basic-item{background:#f4f6f9}html[data-theme=light] .plan-basic-item.unscheduled{background:#f8f9fb}html[data-theme=light] .plan-basic-time{background:color-mix(in srgb,var(--info) 9%,#fff);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--info) 30%,#fff)}html[data-theme=light] .plan-basic-time.unset{background:#fff;box-shadow:inset 0 0 0 1px #dce1e7}
.plan-arch .plan-arch-cell.unscheduled .plan-poster-flow::before{content:none!important}.plan-arch .plan-time-ticket.unset{align-items:center;gap:3px;background:var(--archChip);color:var(--archTime);outline-color:var(--archChipLine)}.plan-arch .plan-time-ticket.unset .ats{margin-left:0;font-size:9.5px;letter-spacing:.08em;color:currentColor}.plan-tbd-clock{width:11px;height:11px;display:inline-flex;align-items:center;justify-content:center;color:currentColor}.plan-tbd-clock svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* 계획 아카이브 PNG — 화면보다 과감한 P5 타이포·슬래시 헤더 */
.plan-export-canvas{box-sizing:border-box;min-height:900px;padding-bottom:56px;color:#F4EFE7;background:#0B0B0D;font-family:var(--cbody,system-ui)}.plan-export-canvas.light{color:#17130C}.plan-export-hero{position:relative;min-height:370px;overflow:hidden;padding:52px 70px 42px;background:linear-gradient(112deg,#D8000C 0 34%,#0B0B0D 34% 100%);color:#fff}.plan-export-canvas.light .plan-export-hero{background:linear-gradient(112deg,#D8000C 0 34%,#17130C 34% 100%)}.plan-export-slash{position:absolute;z-index:0;right:-80px;top:-150px;width:720px;height:650px;background:#F4EFE7;clip-path:polygon(37% 0,100% 0,63% 100%,0 100%);transform:rotate(4deg);opacity:.98}.plan-export-code{position:relative;z-index:1;font-family:var(--cmono);font-size:21px;letter-spacing:.16em}.plan-export-title{position:relative;z-index:1;width:980px;margin-top:20px;display:flex;flex-direction:column;line-height:.82;transform:rotate(-2deg)}.plan-export-title span{font-family:var(--cmono);font-size:33px;letter-spacing:.12em}.plan-export-title b{max-width:900px;font-family:var(--cheading);font-size:92px;font-weight:400;text-transform:uppercase;text-shadow:7px 7px 0 #0B0B0D;word-break:keep-all}.plan-export-title i{position:absolute;right:0;bottom:-10px;padding:8px 18px;background:#fff;color:#D8000C;font-family:var(--cmono);font-size:44px;font-style:normal;transform:rotate(3deg);box-shadow:8px 8px 0 #D8000C}.plan-export-hero>p{position:relative;z-index:1;max-width:760px;margin:25px 0 0;font-size:22px;font-weight:750;line-height:1.45}.plan-export-meta{position:absolute;z-index:2;right:55px;bottom:36px;display:flex;align-items:center;gap:14px;color:#17130C;font-family:var(--cmono);font-size:18px;transform:rotate(-1deg)}.plan-export-meta>*{flex:none;padding:7px 10px;background:#fff;font-style:normal;white-space:nowrap}.plan-export-meta b{background:#D8000C;color:#fff}.plan-export-days{display:grid;gap:38px;padding:42px 54px}.plan-export-canvas .plan-archive-day{border:3px solid #D8000C;border-radius:0;box-shadow:10px 10px 0 color-mix(in srgb,#D8000C 60%,transparent)}.plan-export-canvas .plan-archive-day>header{height:76px;padding:0 28px;background:linear-gradient(115deg,#D8000C 0 25px,#17130C 25px 100%);color:#fff}.plan-export-canvas .plan-archive-day>header>span{font-size:36px;color:#fff}.plan-export-canvas .plan-archive-day>header i{font-size:12px;color:#ff6873}.plan-export-canvas .plan-archive-day>header b{font-size:22px}.plan-export-canvas .plan-archive-kind{height:54px;padding:0 28px;background:#F4EFE7;color:#17130C}.plan-export-canvas .plan-archive-kind b{font-size:15px}.plan-export-canvas .plan-archive-kind small{font-size:12px;color:#6f6558}.plan-export-canvas .plan-arch.plan-arch{padding-top:38px;padding-bottom:46px}.plan-export-canvas .plan-arch .plan-arch-cell:not(:first-child)::before{left:-17px;border-top-width:7px;border-bottom-width:7px;border-left-width:11px}.plan-export-foot{display:flex;align-items:center;justify-content:space-between;margin:0 54px;padding:18px 24px;border-top:5px solid #D8000C;font-family:var(--cmono);font-size:18px}.plan-export-foot b{font-family:var(--cheading);font-size:28px;font-weight:400}.plan-export-canvas .cal-stage.mobile.layout-archive[data-density=compact] .atkt .atarr{display:inline-flex}.plan-export-canvas .cal-stage.mobile.layout-archive[data-density=compact] .atkt .ats.end{display:inline}

/* 계획 PNG — foreignObject 에서 한글 폴백·구성 행·테두리가 빠지지 않게 고정한다. */
.plan-export-canvas{font-family:Pretendard,"Pretendard Variable","Apple SD Gothic Neo",sans-serif}.plan-export-canvas,.plan-export-canvas *{animation:none!important}
.plan-export-canvas .plan-archive-kind b{font-family:Pretendard,"Pretendard Variable","Apple SD Gothic Neo",sans-serif;white-space:nowrap}
/* 공용 .cal-stage 의 min-height:100%는 foreignObject 재배치 때 앞 구성 배경이 다음 라벨 행을 덮는다. */
.plan-export-canvas .plan-arch.cal-stage{min-height:0}
.plan-export-canvas .plan-archive-day{overflow:hidden;border:0;padding:3px;background:#D8000C;box-shadow:none;filter:none}
/* 카드 테두리와 포스터 사이 숨 쉴 공간을 포스터 크기에 맞춘다. */
.plan-export-canvas .plan-arch.plan-arch{padding:32px 24px 42px}.plan-export-canvas .plan-arch[data-density=compact].plan-arch{padding:28px 20px 38px}.plan-export-canvas .plan-arch[data-density=cozy]:has(>.arch:is([data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"])){padding:46px 40px 58px}.plan-export-canvas .plan-arch[data-density=cozy]:has(>.arch[data-theme-count="4"]){padding:42px 32px 52px}
.plan-export-canvas .plan-arch[data-density=cozy] .arch:is([data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"]){column-gap:59px!important}.plan-export-canvas .plan-arch[data-density=cozy]:has(>.arch:is([data-theme-count="1"],[data-theme-count="2"],[data-theme-count="3"])) .plan-arch-cell:not(:first-child) .plan-poster-flow::before{left:-43.5px;border-top-width:17.5px;border-bottom-width:17.5px;border-left-width:28px}.plan-export-canvas .plan-arch[data-density=cozy] .arch[data-theme-count="4"]{column-gap:46px!important}.plan-export-canvas .plan-arch[data-density=cozy]:has(>.arch[data-theme-count="4"]) .plan-arch-cell:not(:first-child) .plan-poster-flow::before{left:-34.5px;border-top-width:14.5px;border-bottom-width:14.5px;border-left-width:23px}.plan-export-canvas .plan-arch[data-density=compact] .arch{column-gap:24px!important}.plan-export-canvas .plan-arch[data-density=compact] .plan-arch-cell:not(:first-child) .plan-poster-flow::before{left:-15px}

/* 계획 PNG 선택·미리보기 — 같은 캔버스를 축소해 옵션과 최종 저장 결과를 일치시킨다. */
.plan-export-lead{margin:1px 2px 12px;font-size:11px;font-weight:800}
.plan-export-sheet .sh-body{padding-top:9px}.plan-export-options{padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface2)}.plan-export-option-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}.plan-export-option-head>b{font-size:11px}.plan-export-option-head>small{color:var(--muted);font-size:11px}.plan-export-option-head.preview{margin:14px 2px 8px}.plan-export-style-picks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.plan-export-style-picks>button{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:8px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);text-align:left}.plan-export-style-picks>button.on{border-color:color-mix(in srgb,var(--p5) 62%,var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--p5) 20%,transparent)}.plan-export-style-picks>button>i{width:100%;height:26px;border-radius:7px;background:linear-gradient(120deg,#d8000c 0 32%,#151515 32% 68%,#f1e8d8 68%);transform:none}.plan-export-style-picks>button[data-plan-export-style=editorial]>i{background:linear-gradient(180deg,#f1e8d8 0 70%,#7c2025 70%)}.plan-export-style-picks>button[data-plan-export-style=minimal]>i{background:linear-gradient(180deg,#f7f6f2 0 76%,#202020 76%)}.segctl.plan-export-style-picks{display:flex;gap:2px}.segctl.plan-export-style-picks>button{align-items:center;gap:5px;min-height:58px;padding:6px 8px;border:0;border-radius:999px;background:transparent;text-align:center} /* 미감 셋 중 하나 — 공용 세그먼트, 칸마다 작은 색 견본 */
.segctl.plan-export-style-picks>button>i{width:34px;height:14px;flex:none;border-radius:4px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--text) 14%,transparent)}.segctl.plan-export-style-picks>button.on{border:0;background:var(--lens);box-shadow:var(--lens-sh)}.segctl.plan-export-style-picks>button.on b{color:#fff}.plan-export-style-picks span,.plan-export-style-picks b,.plan-export-style-picks small{display:block;min-width:0}.plan-export-style-picks b{font-size:11px}.plan-export-style-picks small{margin-top:2px;color:var(--muted);font-size:11px;line-height:1.35}.plan-export-title-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 3px 0;border-top:1px solid var(--hairline)}.plan-export-title-toggle>span{display:flex;flex-direction:column;gap:2px}.plan-export-title-toggle b{font-size:11px}.plan-export-title-toggle small{color:var(--muted);font-size:11px}.plan-export-title-toggle input{position:absolute;opacity:0;pointer-events:none}.plan-export-title-toggle>i{position:relative;width:38px;height:22px;flex:none;border-radius:999px;background:var(--border);transition:background .15s}.plan-export-title-toggle>i::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}.plan-export-title-toggle input:checked+i{background:var(--lens);box-shadow:var(--lens-sh)}.plan-export-title-toggle input:checked+i::after{transform:translateX(16px)}.plan-export-preview{position:relative;width:100%;height:250px;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#09090b;box-shadow:0 12px 30px rgba(0,0,0,.2)}.plan-export-preview-paper{position:absolute;left:0;top:0;transform-origin:top left}.plan-export-save{width:100%;margin-top:12px;border-radius:12px}
.cal-export-options{margin-top:12px}.cal-export-preview .cal-export{min-height:0}.cal-export-preview .month{margin-bottom:0!important}

/* 계획 조작 UI는 앱의 일반 버튼·본문과 같은 읽기 크기를 쓴다. */
.plan-detail-intro{padding-left:0;padding-right:0}.plan-view-switch{display:flex;grid-template-columns:none;flex:0 0 auto} /* 공용 세그먼트(.segctl.sm) — 아이콘 두 칸 */.segctl.plan-view-switch>button{flex:0 0 48px;padding:2px 0}.plan-view-switch button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.plan-density{margin-left:auto;font-size:11px}.view-plans .plan-library-intro p,.view-plans .plan-detail-intro p{font-size:12px}.view-plans .plan-card-copy>i{font-size:11px}.view-plans .plan-card-copy>small{font-size:11px}.view-plans .plan-kind-tags>span{font-size:11px}.view-plans .plan-archive-kind b,.view-plans .plan-basic-kind b{font-size:12px}.view-plans .plan-archive-kind small,.view-plans .plan-basic-kind small{font-size:10.5px}.view-plans .plan-basic-copy>span{font-size:11px}.view-plans .plan-basic-copy>b{font-size:14px}.view-plans .plan-basic-meta>small{font-size:11px}.view-plans .plan-basic-time.unset{font-size:11px}.view-plans .plan-edit-day{column-gap:16px}.view-plans .plan-edit-day-copy i{font-size:11px}.view-plans .plan-edit-day-copy small{font-size:11px}.view-plans .plan-edit-kinds>i{font-size:11px}.view-plans .plan-edit-kinds b{font-size:11px}.view-plans .plan-dock .btn{font-size:12px}.plan-theme-add-sheet .field>span,.plan-edit-sheet .field>span,.plan-fed-setup .field>span,.plan-apply-sheet .field>span,.plan-save-sheet .field>span{font-size:12px}.plan-theme-add-sheet .field>span small{font-size:11px}.plan-search-hint{font-size:11px}.plan-theme-results>p{font-size:11px}.plan-theme-result b{font-size:12.5px}.plan-theme-result small{font-size:11px}.plan-theme-picked i{font-size:11px}.plan-theme-picked b{font-size:13px}.plan-theme-picked small{font-size:11px}.plan-time-empty{font-size:11px}.plan-sheet-sub{font-size:11px}.plan-day-sheet-kind>header b{font-size:12px}.plan-day-sheet-kind>header small{font-size:11px}.plan-kind-action{height:36px;font-size:11px}.plan-kind-action svg{width:14px;height:14px}.plan-day-sheet-kind>p{font-size:11px}.plan-sheet-time b{font-size:11.5px}.plan-sheet-time small{font-size:11px}.plan-sheet-item>span:nth-child(2) i{font-size:11px}.plan-sheet-item>span:nth-child(2) b{font-size:11.5px}.plan-clear-kind{font-size:11px}.plan-copy-box>b{font-size:12px}.plan-copy-box .btn{font-size:11px}.plan-copy-box small{font-size:11px}.plan-remove-day{font-size:11px}.plan-apply-preview i{font-size:11px}.plan-apply-preview b{font-size:13px}.plan-apply-preview small{font-size:11px}.plan-export-lead{font-size:13px}.plan-export-option-head>b{font-size:12px}.plan-export-option-head>small{font-size:11px}.plan-export-style-picks b{font-size:11.5px}.plan-export-style-picks small{font-size:11px}.plan-export-title-toggle b{font-size:11.5px}.plan-export-title-toggle small{font-size:11px}.plan-export-save{font-size:12px}
@media(max-width:359px){.view-plans .plan-edit-day{column-gap:12px}}
.plan-arch .plan-time-ticket{align-items:center;gap:3px}.plan-time-clock{width:11px;height:11px;display:inline-flex;flex:none;align-items:center;justify-content:center;color:currentColor}.plan-time-clock svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* 계획 PNG 타이틀은 한글 계획명에 맞는 단정한 굵은 산세리프로 통일한다. */
.plan-export-title{margin-top:0}.plan-export-title b{font-family:"Pretendard Variable",Pretendard,"Apple SD Gothic Neo",sans-serif;font-size:88px;font-weight:900;letter-spacing:-.055em;line-height:.98;text-transform:none}.plan-export-title span{margin-bottom:12px}.plan-export-canvas.no-title .plan-export-days{padding-top:54px}

/* 에디토리얼 — 따뜻한 지면과 얇은 적갈색 장식. */
.plan-export-canvas[data-export-style=editorial]{background:#F1E9DC!important;color:#1B1814}.plan-export-canvas[data-export-style=editorial] .plan-export-hero{min-height:335px;padding:58px 72px 46px;background:#F1E9DC;color:#1B1814;border-bottom:7px solid #7D2228}.plan-export-canvas[data-export-style=editorial] .plan-export-slash{right:-230px;top:-310px;width:760px;height:760px;border:2px solid rgba(125,34,40,.2);border-radius:50%;background:transparent;clip-path:none;transform:none}.plan-export-canvas[data-export-style=editorial] .plan-export-title{width:1050px;transform:none}.plan-export-canvas[data-export-style=editorial] .plan-export-title span{color:#7D2228;font-size:25px;letter-spacing:.18em}.plan-export-canvas[data-export-style=editorial] .plan-export-title b{font-size:84px;text-shadow:none}.plan-export-canvas[data-export-style=editorial] .plan-export-hero>p{margin-top:22px;color:#5F554A;font-weight:650}.plan-export-canvas[data-export-style=editorial] .plan-export-meta{color:#1B1814;transform:none}.plan-export-canvas[data-export-style=editorial] .plan-export-meta>*{border:1px solid #CBBBA7;background:#F8F3EA}.plan-export-canvas[data-export-style=editorial] .plan-export-meta b{border-color:#7D2228;background:#7D2228;color:#fff}.plan-export-canvas[data-export-style=editorial] .plan-archive-day{border:2px solid #7D2228;box-shadow:none;filter:drop-shadow(7px 8px 0 rgba(125,34,40,.2))}.plan-export-canvas[data-export-style=editorial] .plan-archive-day>header{background:#281E1D}.plan-export-canvas[data-export-style=editorial] .plan-archive-kind{background:#F8F3EA}.plan-export-canvas[data-export-style=editorial] .plan-export-foot{border-top-color:#7D2228}

/* 계획 구성의 테마 본문을 그대로 편집 진입점으로 쓴다. */
.plan-sheet-item{grid-template-columns:minmax(0,1fr) 30px}.plan-sheet-edit{width:100%;min-width:0;display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:8px;border-radius:10px;color:var(--text);text-align:left}.plan-sheet-edit>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:2px}.plan-sheet-edit>span:nth-child(2) i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px;font-style:normal}.plan-sheet-edit>span:nth-child(2) b{font-size:11.5px}.plan-sheet-edit:not(.static){cursor:pointer}.plan-sheet-edit:not(.static):active{background:var(--matte-tint)}

/* 계획 공유 — 전달 순간 스냅샷과 내 계획을 시각적으로 분리한다. */
.plan-own-library,.plan-shared-library{display:grid;gap:10px}.plan-shared-library{margin-top:24px;padding-top:20px;border-top:1px solid var(--hairline)}.plan-own-library>header,.plan-shared-library>header{display:flex;align-items:center;justify-content:space-between;padding:0 3px}.plan-own-library>header b,.plan-shared-library>header b{font-size:13px}.plan-own-library>header span,.plan-shared-library>header>span{min-width:25px;height:25px;display:grid;place-items:center;border-radius:999px;background:var(--surface2);color:var(--muted);font:800 10px var(--mono)}.plan-shared-library>header>div{display:flex;flex-direction:column;gap:2px}.plan-shared-library>header i{color:var(--apricot,#E9A879);font:900 7.5px var(--fe);font-style:normal;letter-spacing:.1em}.plan-empty.library.compact{min-height:196px}.plan-card.shared{border-color:var(--border);background:var(--surface)}.plan-card.shared::before{background:var(--apricot,#E9A879)}.plan-card.shared .plan-card-mark{overflow:hidden;border-color:var(--border);padding:2px;background:var(--surface2)}.plan-card.shared .plan-card-mark .avatar{width:100%;height:100%;border:0;border-radius:10px}.plan-card.shared .plan-card-copy>i{color:var(--muted)}.plan-kind-tags>span.snapshot{color:var(--text)}
.plan-share-origin{display:grid;grid-template-columns:42px minmax(0,1fr) 26px;align-items:center;gap:11px;margin-bottom:15px;padding:13px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.plan-share-origin>.avatar{width:42px;height:42px}.plan-share-origin>div{min-width:0;display:flex;flex-direction:column;gap:2px}.plan-share-origin i{color:var(--muted);font-size:11px;font-style:normal;font-weight:900}.plan-share-origin b{font-size:12px;line-height:1.35}.plan-share-origin small{color:var(--muted);font-size:11px;line-height:1.45}.plan-share-origin>span{color:var(--muted)}.plan-share-origin>span svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}.plan-dock.read.owner{grid-template-columns:.88fr .94fr 1.18fr}.plan-dock.shared{grid-template-columns:1fr}.plan-dock.shared .btn{width:100%}
.plan-share-preview{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;padding:14px;border:1px solid color-mix(in srgb,var(--plan-tone) 28%,var(--border));border-radius:16px;background:linear-gradient(135deg,color-mix(in srgb,var(--plan-tone) 7%,var(--surface2)),var(--surface2))}.plan-share-preview>span{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:color-mix(in srgb,var(--plan-tone) 10%,var(--surface));color:var(--plan-tone)}.plan-share-preview>span svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8}.plan-share-preview>div{min-width:0;display:flex;flex-direction:column;gap:2px}.plan-share-preview b{overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.plan-share-preview small{color:var(--muted);font-size:11px}.plan-share-note{margin:10px 2px 14px;color:var(--muted);font-size:11px;line-height:1.55}.plan-share-list{display:grid;gap:7px}.plan-share-row{min-height:66px;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 9px 10px 11px;border:1px solid var(--border);border-radius:14px;background:var(--surface2)}.plan-share-row>.avatar{width:40px;height:40px}.plan-share-row>div{min-width:0;display:flex;flex-direction:column;gap:2px}.plan-share-row b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.plan-share-row small{color:var(--muted);font-size:11px}.plan-share-send{height:36px;display:flex;align-items:center;gap:5px;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}.plan-share-send svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8}.plan-share-send.again{border-color:var(--border);color:var(--muted)}.plan-share-send.sent{color:var(--success)}.plan-share-send:disabled{opacity:.72}.plan-share-empty{min-height:220px}
html[data-theme=light] .plan-card.shared{background:#fff}html[data-theme=light] .plan-share-row,html[data-theme=light] .plan-share-preview{background:#fff}
/* 계획 보관함 리디자인(2026-10-01) — 히어로(요약 숫자·포스터 부채꼴)와 포스터 커버 카드. 이전 디자인은 옛 마크업이라 .plan-folio/.pc-folio 가 붙지 않는다 */
.plan-folio{padding-top:12px}.plan-folio .plan-folio-hero{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"copy fan" "stats stats";gap:16px 12px;align-items:center;margin-bottom:22px;padding:20px 18px 0 20px;border:1px solid var(--glass-line);border-radius:var(--r-island);background:radial-gradient(90% 120% at 100% 0%,color-mix(in srgb,var(--info) 13%,transparent),transparent 62%),linear-gradient(165deg,var(--surface2),var(--surface) 70%);box-shadow:var(--glass-hi),0 18px 40px -22px rgba(0,0,0,.7)}
.plan-folio-copy{grid-area:copy;min-width:0}.plan-folio .plan-folio-hero h2{margin:0 0 6px;font-size:21px;font-weight:850;line-height:1.2;letter-spacing:-.035em}.plan-folio .plan-folio-hero p{margin:0;color:var(--muted);font-size:12px;line-height:1.5;word-break:keep-all}
.plan-folio-fan{grid-area:fan;position:relative;width:96px;height:86px;display:block;margin-right:2px}.plan-folio-fan .plan-cover-p{top:6px;left:24px;width:48px;height:68px}.plan-folio-fan.n3 .plan-cover-p:nth-child(1){transform:translateX(-22px) translateY(6px) rotate(-12deg)}.plan-folio-fan.n3 .plan-cover-p:nth-child(2){transform:translateX(22px) translateY(6px) rotate(12deg)}.plan-folio-fan.n2 .plan-cover-p:nth-child(1){transform:translateX(-14px) translateY(4px) rotate(-9deg)}.plan-folio-fan.n2 .plan-cover-p:nth-child(2){transform:translateX(10px) rotate(4deg)}
.plan-folio-stats{grid-area:stats;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 -18px 0 -20px;border-top:1px solid var(--hairline)}.plan-folio-stats>span{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;padding:12px 0 14px 20px}.plan-folio-stats>span+span{border-left:1px solid var(--hairline);padding-left:16px}.plan-folio-stats b{font-size:19px;font-weight:850;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.plan-folio-stats small{color:var(--muted);font-size:11px;font-weight:700;white-space:nowrap}
/* 포스터 커버 — 카드·히어로 공용 */
.plan-cover-p,.plan-cover-empty{position:absolute;display:grid;place-items:center;overflow:hidden;border-radius:7px;background:var(--surface3) center/cover no-repeat;box-shadow:0 8px 16px -6px rgba(0,0,0,.65),inset 0 0 0 1px rgba(255,255,255,.09);transition:transform .25s var(--ease-out)}.plan-cover-p .ph{position:static;font-size:17px;font-weight:900;color:rgba(231,236,242,.55)}
.plan-cover-empty{border:1px dashed color-mix(in srgb,var(--text) 22%,transparent);background:color-mix(in srgb,var(--text) 3%,transparent);box-shadow:none;color:var(--faint)}.plan-cover-empty svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.plan-cover{position:relative;width:68px;height:84px;display:block}.plan-cover .plan-cover-p,.plan-cover .plan-cover-empty{top:6px;left:10px;width:48px;height:70px}.plan-cover.n3 .plan-cover-p:nth-child(1){transform:translateX(-13px) translateY(3px) rotate(-10deg) scale(.88);filter:brightness(.8) saturate(.9)}.plan-cover.n3 .plan-cover-p:nth-child(2){transform:translateX(13px) translateY(3px) rotate(10deg) scale(.88);filter:brightness(.8) saturate(.9)}.plan-cover.n2 .plan-cover-p:nth-child(1){transform:translateX(11px) translateY(2px) rotate(9deg) scale(.9);filter:brightness(.8) saturate(.9)}.plan-cover.n2 .plan-cover-p:nth-child(2){transform:translateX(-3px) rotate(-2deg)}
/* 섹션 머리 — 제목 · 가는 선 · 개수 */
.plan-folio .plan-own-library,.plan-folio .plan-shared-library{gap:12px}.plan-folio .plan-shared-library{margin-top:30px;padding-top:0;border-top:0}.plan-folio .plan-own-library>header,.plan-folio .plan-shared-library>header{gap:10px;padding:0 2px}.plan-folio :is(.plan-own-library,.plan-shared-library)>header::after{content:"";order:1;flex:1;height:1px;background:var(--hairline)}.plan-folio :is(.plan-own-library,.plan-shared-library)>header>span{order:2;min-width:0;height:auto;padding:0;background:none;color:var(--faint);font:700 12px var(--fb);font-variant-numeric:tabular-nums}.plan-folio :is(.plan-own-library,.plan-shared-library)>header b{font-size:14px;font-weight:800;letter-spacing:-.02em}
/* 카드 */
.plan-folio .plan-list{gap:12px}.plan-card.pc-folio{min-height:116px;grid-template-columns:68px minmax(0,1fr) 18px;gap:14px;padding:14px 14px 14px 12px;overflow:hidden;isolation:isolate;border:1px solid var(--glass-line);background:linear-gradient(165deg,var(--surface2),var(--surface) 72%);box-shadow:var(--glass-hi),0 14px 30px -18px rgba(0,0,0,.75)}
.plan-card.pc-folio:hover{border-color:var(--glass-line-hi);box-shadow:var(--glass-hi),0 18px 36px -18px rgba(0,0,0,.8);transform:translateY(-1px)}.plan-card.pc-folio:active{transform:scale(.988)}.plan-card.pc-folio::before{content:none}
.plan-card-aura{position:absolute;z-index:-1;left:-24px;top:-40px;bottom:-40px;width:62%;background:center/cover no-repeat;filter:blur(32px) saturate(1.1);opacity:.18;-webkit-mask-image:linear-gradient(90deg,#000 20%,transparent);mask-image:linear-gradient(90deg,#000 20%,transparent);pointer-events:none}
.plan-card-cover{position:relative;display:block;width:68px;height:84px}.plan-card.pc-folio:hover .plan-cover.n3 .plan-cover-p:nth-child(1){transform:translateX(-16px) translateY(3px) rotate(-13deg) scale(.88)}.plan-card.pc-folio:hover .plan-cover.n3 .plan-cover-p:nth-child(2){transform:translateX(16px) translateY(3px) rotate(13deg) scale(.88)}
.plan-cover-from{position:absolute;right:-3px;bottom:0;width:26px;height:26px;padding:2px;border-radius:50%;background:var(--surface)}.plan-cover-from .avatar{width:100%;height:100%;border:0;border-radius:50%;font-size:11px}
.plan-card.pc-folio .plan-card-copy{gap:5px}.plan-card.pc-folio .plan-card-copy>b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;font-size:16px;font-weight:800;line-height:1.28;letter-spacing:-.025em;word-break:keep-all;overflow-wrap:anywhere}
.plan-card.pc-folio .plan-card-from{overflow:hidden;color:var(--apricot);font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.plan-card-stats{display:flex;flex-wrap:wrap;align-items:center;gap:2px 0;color:var(--muted);font-size:12px}.plan-card-stats>em{display:inline;font-style:normal;white-space:nowrap}.plan-card-stats>em+em::before{content:"";display:inline-block;width:1px;height:10px;margin:0 8px;vertical-align:-1px;background:var(--hairline)}.plan-card-stats strong{color:var(--text);font-weight:800;font-variant-numeric:tabular-nums}.plan-card-stats svg{width:12px;height:12px;margin-right:4px;vertical-align:-2px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.plan-card.is-empty .plan-card-stats{color:var(--faint)}
.plan-card.pc-folio .plan-kind-tags{gap:5px;margin-top:2px}.plan-card.pc-folio .plan-kind-tags>span{padding:3px 8px;border:1px solid transparent;border-radius:var(--r-pill);background:var(--tag-bg);color:var(--muted);font-size:10.5px;font-weight:750;line-height:1.3}
.plan-card.pc-folio .plan-kind-tags>.k-weekday{border-color:color-mix(in srgb,var(--info) 26%,transparent);background:color-mix(in srgb,var(--info) 10%,transparent);color:color-mix(in srgb,var(--info) 78%,var(--text))}.plan-card.pc-folio .plan-kind-tags>.k-weekend{border-color:color-mix(in srgb,var(--apricot) 28%,transparent);background:color-mix(in srgb,var(--apricot) 10%,transparent);color:color-mix(in srgb,var(--apricot) 80%,var(--text))}
.plan-card.pc-folio .plan-kind-tags>.snapshot{border-color:var(--glass-line);background:none;color:var(--text)}.plan-card.pc-folio .plan-kind-tags>.snapshot.saved{border-color:color-mix(in srgb,var(--success) 30%,transparent);background:color-mix(in srgb,var(--success) 10%,transparent);color:color-mix(in srgb,var(--success) 78%,var(--text))}
.plan-card.pc-folio .plan-card-go{width:18px;height:auto;border:0;background:none;color:var(--faint);transition:transform .2s var(--ease-out),color .2s}.plan-card.pc-folio:hover .plan-card-go{color:var(--text);transform:translateX(2px)}.plan-card.pc-folio .plan-card-go svg{width:16px;height:16px}
.plan-folio .plan-empty.library{border:1px dashed color-mix(in srgb,var(--text) 18%,transparent);border-radius:var(--r-island);background:color-mix(in srgb,var(--text) 2%,transparent)}.plan-folio .plan-empty.library>span{border-radius:50%;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--info)}
html[data-theme=light] .plan-folio .plan-folio-hero{background:radial-gradient(90% 120% at 100% 0%,color-mix(in srgb,var(--info) 12%,transparent),transparent 62%),linear-gradient(165deg,#fff,#F7F9FC);box-shadow:0 14px 34px -18px rgba(45,60,78,.28)}html[data-theme=light] .plan-card.pc-folio{background:linear-gradient(165deg,#fff,#FAFBFD);box-shadow:0 12px 28px -16px rgba(45,60,78,.26)}html[data-theme=light] .plan-card.pc-folio:hover{box-shadow:0 16px 34px -16px rgba(45,60,78,.32)}html[data-theme=light] .plan-card-aura{opacity:.13}html[data-theme=light] .plan-cover-p{box-shadow:0 8px 16px -8px rgba(30,40,55,.5),inset 0 0 0 1px rgba(0,0,0,.06)}html[data-theme=light] .plan-cover.n3 .plan-cover-p:not(:last-child),html[data-theme=light] .plan-cover.n2 .plan-cover-p:first-child{filter:brightness(.9) saturate(.9)}html[data-theme=light] .plan-cover-p .ph{color:rgba(255,255,255,.75)}
@media(max-width:359px){.plan-folio .plan-folio-hero{padding:18px 14px 0 16px}.plan-folio-stats{margin:0 -14px 0 -16px}.plan-folio-stats>span{padding-left:16px}.plan-folio-stats>span+span{padding-left:12px}.plan-folio-fan{width:84px;transform:scale(.9);transform-origin:right center}.plan-card.pc-folio{grid-template-columns:60px minmax(0,1fr) 14px;gap:12px}.plan-card.pc-folio .plan-card-cover,.plan-card.pc-folio .plan-cover{width:60px}.plan-cover .plan-cover-p,.plan-cover .plan-cover-empty{left:7px;width:46px;height:66px}}
/* 계획 상세 리디자인(2026-10-01) — 제목 옆 포스터 부채꼴, 메모 카드, 일차·구성 머리, 시각 열·세로 선·포스터 카드 타임라인과 여유·겹침, 편집 일차·하단 바. 이전 디자인은 .pd-folio/.pb-folio 가 붙지 않는다 */
.plan-detail-bar.pd-folio-bar .plan-detail-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;align-items:center}.plan-detail-bar.pd-folio-bar .plan-detail-heading>.title,.plan-detail-bar.pd-folio-bar .plan-detail-heading>.sub{grid-column:1}.appbar.plan-detail-bar.pd-folio-bar .title{font-weight:850;letter-spacing:-.04em}.plan-detail-bar.pd-folio-bar .plan-detail-heading .sub{margin-top:6px;font-size:12px}
.pd-fan{grid-column:2;grid-row:1/3;position:relative;width:74px;height:62px;display:block}.pd-fan .plan-cover-p{top:4px;left:21px;width:34px;height:50px;border-radius:5px}.pd-fan.n3 .plan-cover-p:nth-child(1){transform:translateX(-17px) translateY(4px) rotate(-12deg)}.pd-fan.n3 .plan-cover-p:nth-child(2){transform:translateX(17px) translateY(4px) rotate(12deg)}.pd-fan.n2 .plan-cover-p:nth-child(1){transform:translateX(-10px) translateY(3px) rotate(-9deg)}.pd-fan.n2 .plan-cover-p:nth-child(2){transform:translateX(8px) rotate(4deg)}.pd-fan .plan-cover-p .ph{font-size:13px}
.pd-folio .plan-detail-intro.has-note{padding:4px 0 16px}.pd-folio .plan-detail-intro.has-note p{margin:0;padding:12px 14px 13px;border:1px solid var(--glass-line);border-radius:var(--r-card);background:var(--matte-tint);color:var(--text);font-size:12.5px;line-height:1.6;word-break:keep-all;overflow-wrap:anywhere}.pd-note-label{display:block;margin-bottom:3px;color:var(--muted);font-size:11px;font-style:normal;font-weight:800}
.pd-folio .plan-share-origin{border-color:color-mix(in srgb,var(--apricot) 26%,var(--glass-line));border-radius:var(--r-card);background:linear-gradient(135deg,color-mix(in srgb,var(--apricot) 9%,var(--surface2)),var(--surface) 70%);box-shadow:var(--glass-hi)}.pd-folio .plan-share-origin>.avatar{border-radius:50%;box-shadow:0 0 0 2px var(--surface),0 0 0 3px color-mix(in srgb,var(--apricot) 45%,transparent)}.pd-folio .plan-share-origin i{color:var(--apricot);font-weight:800}
.pd-folio .plan-view-controls{margin-bottom:16px}
/* 일차 카드 */
.plan-basic-day.pb-folio{border:1px solid var(--glass-line);border-radius:var(--r-island);background:linear-gradient(170deg,var(--surface2),var(--surface) 46%);box-shadow:var(--glass-hi),0 18px 40px -24px rgba(0,0,0,.75)}.plan-basic-day.pb-folio>header{height:auto;flex-direction:row;align-items:baseline;justify-content:flex-start;gap:9px;padding:17px 18px 6px;background:none}.pd-dayno{color:color-mix(in srgb,var(--text) 34%,transparent);font:800 26px/1 var(--fb);letter-spacing:-.04em;font-variant-numeric:tabular-nums}.plan-basic-day.pb-folio>header b{font-size:15px;font-weight:800;letter-spacing:-.02em}.plan-basic-day.pb-folio>header small{margin-left:auto;color:var(--muted);font-size:11.5px;font-weight:700}.plan-basic-day.pb-folio .plan-day-empty{background:none;color:var(--faint);font-size:12px}
.plan-basic-variant.pb-folio+.plan-basic-variant.pb-folio{position:relative;border-top:0}.plan-basic-variant.pb-folio+.plan-basic-variant.pb-folio::before{content:"";position:absolute;left:16px;right:16px;top:0;height:1px;background:var(--hairline)}.plan-basic-variant.pb-folio+.plan-basic-variant.pb-folio .plan-basic-kind{padding-top:14px}.pd-folio .plan-detail-intro.has-note h2{margin-bottom:12px}
.plan-basic-variant.pb-folio .plan-basic-kind{height:auto;padding:10px 16px 4px;background:none}.plan-basic-variant.pb-folio .plan-basic-kind b{padding:3px 9px;border:1px solid transparent;border-radius:var(--r-pill);background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:800;line-height:1.3}.plan-basic-variant.pb-folio .plan-basic-kind b.k-weekday{border-color:color-mix(in srgb,var(--info) 26%,transparent);background:color-mix(in srgb,var(--info) 10%,transparent);color:color-mix(in srgb,var(--info) 78%,var(--text))}.plan-basic-variant.pb-folio .plan-basic-kind b.k-weekend{border-color:color-mix(in srgb,var(--apricot) 28%,transparent);background:color-mix(in srgb,var(--apricot) 10%,transparent);color:color-mix(in srgb,var(--apricot) 80%,var(--text))}.plan-basic-variant.pb-folio .plan-basic-kind small{color:var(--faint);font-size:11px;font-weight:700}
/* 타임라인 — 시각 48 · 선 12 · 카드 */
.plan-basic-variant.pb-folio .plan-basic-list{position:relative;grid-template-columns:minmax(0,1fr);gap:10px;padding:10px 16px 18px 12px}
.plan-basic-variant.pb-folio .plan-basic-item{position:relative;display:grid;grid-template-columns:48px 12px minmax(0,1fr);gap:0 6px;align-items:start;min-height:0;padding:0;border:0;border-radius:0;background:none;color:var(--text);text-align:left}.plan-basic-variant.pb-folio .plan-basic-item:active{transform:none}.plan-basic-variant.pb-folio .plan-basic-item:active .plan-basic-card{transform:scale(.985)}
.plan-basic-variant.pb-folio .plan-basic-item::after{content:"";position:absolute;left:59.5px;top:0;bottom:-10px;width:1px;background:var(--hairline)}.plan-basic-variant.pb-folio .plan-basic-item:first-child::after{top:22px}.plan-basic-variant.pb-folio .plan-basic-item:last-child::after{bottom:auto;height:22px}.plan-basic-variant.pb-folio .plan-basic-item:only-child::after{display:none}.plan-basic-variant.pb-folio .plan-basic-item.unscheduled::after{background:repeating-linear-gradient(to bottom,var(--hairline) 0 3px,transparent 3px 7px)}
.plan-basic-variant.pb-folio .plan-basic-time{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:0;padding:13px 0 0;border-radius:0;background:none;box-shadow:none;color:var(--text);font-family:var(--fb)}.plan-basic-variant.pb-folio .plan-basic-time b{font-size:15px;font-weight:800;line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.plan-basic-variant.pb-folio .plan-basic-time small{color:var(--muted);font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.plan-basic-variant.pb-folio .plan-basic-time.unset{padding:12px 0 0;background:none;box-shadow:none;color:var(--faint);font-size:11px;font-weight:700;line-height:1.3;text-align:right;letter-spacing:0;word-break:keep-all}
.plan-basic-node{position:relative;z-index:1;width:9px;height:9px;margin:15px auto 0;border:2px solid var(--info);border-radius:50%;background:var(--surface)}.plan-basic-item.unscheduled .plan-basic-node{border-color:var(--faint);border-style:dashed}.plan-basic-item.meal .plan-basic-node{border-color:var(--apricot)}
.plan-basic-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:8px 10px 8px 8px;border:1px solid var(--glass-line);border-radius:14px;background:linear-gradient(165deg,var(--surface3),var(--surface2) 80%);box-shadow:var(--glass-hi);transition:border-color .18s,transform .18s var(--ease-out)}.plan-basic-item.unscheduled .plan-basic-card{background:color-mix(in srgb,var(--surface2) 55%,transparent);box-shadow:none}.plan-basic-item.plan-theme-open:hover .plan-basic-card{border-color:var(--glass-line-hi)}
.plan-basic-variant.pb-folio .plan-basic-thumb{width:44px;height:60px;border:0;border-radius:8px;box-shadow:0 6px 12px -6px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.08);font-size:15px}.plan-basic-variant.pb-folio .plan-basic-thumb .ph{position:static;font-size:15px;color:rgba(231,236,242,.55)}.plan-basic-variant.pb-folio .plan-basic-thumb.meal{height:44px;border-radius:50%;background:color-mix(in srgb,var(--apricot) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--apricot) 26%,transparent);color:var(--apricot)}.plan-basic-thumb.meal svg{width:21px;height:21px}
.plan-basic-variant.pb-folio .plan-basic-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.plan-basic-variant.pb-folio .plan-basic-copy>span{color:var(--muted);font-size:11px;font-weight:700}.plan-basic-variant.pb-folio .plan-basic-copy>b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;font-size:14px;font-weight:800;line-height:1.3;letter-spacing:-.02em;word-break:keep-all;overflow-wrap:anywhere}.plan-basic-variant.pb-folio .plan-basic-meta{gap:0;margin-top:1px}.plan-basic-variant.pb-folio .plan-basic-meta>small{color:var(--muted);font-size:11px;font-weight:700}.plan-basic-variant.pb-folio .plan-basic-meta>small+small::before{content:"·";margin:0 5px;color:var(--faint)}
.plan-basic-go{display:grid;place-items:center;color:var(--faint);transition:transform .2s var(--ease-out),color .2s}.plan-basic-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.plan-basic-item.plan-theme-open:hover .plan-basic-go{color:var(--text);transform:translateX(2px)}
.plan-basic-gap{position:relative;display:grid;grid-template-columns:48px 12px minmax(0,1fr);gap:0 6px}.plan-basic-gap::before{content:"";position:absolute;left:59.5px;top:0;bottom:-10px;width:1px;background:var(--hairline)}.plan-basic-gap>span{grid-column:3;justify-self:start;padding:3px 9px;border-radius:var(--r-pill);background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700;line-height:1.3;white-space:nowrap}.plan-basic-gap.over>span{background:color-mix(in srgb,var(--warning) 13%,transparent);color:color-mix(in srgb,var(--warning) 82%,var(--text))}
/* 편집 일차 */
.pd-folio .plan-edit-days{gap:12px}.pd-folio .plan-edit-day{border:1px solid var(--glass-line);border-radius:var(--r-card);background:linear-gradient(165deg,var(--surface2),var(--surface) 72%);box-shadow:var(--glass-hi),0 14px 30px -18px rgba(0,0,0,.75);transition:border-color .16s,transform .16s}.pd-folio .plan-edit-day:hover{border-color:var(--glass-line-hi)}.pd-folio .plan-edit-day-no{border:1px solid var(--glass-line);background:none;color:color-mix(in srgb,var(--text) 60%,transparent);font:800 21px/1 var(--fb);letter-spacing:-.04em;font-variant-numeric:tabular-nums}.pd-folio .plan-edit-day-copy b{font-size:15px;font-weight:800;letter-spacing:-.02em}
.pd-folio .plan-edit-kinds>i{border-color:transparent;border-radius:var(--r-pill);background:var(--tag-bg);padding:3px 9px;font-weight:700}.pd-folio .plan-edit-kinds b{font-family:var(--fb);font-weight:800;font-variant-numeric:tabular-nums;color:var(--faint)}.pd-folio .plan-edit-kinds>i.on{border-color:var(--glass-line);background:var(--glass-bg);color:var(--text)}.pd-folio .plan-edit-kinds>i.on b{color:var(--text)}.pd-folio .plan-edit-kinds>i.on.k-weekday{border-color:color-mix(in srgb,var(--info) 26%,transparent);background:color-mix(in srgb,var(--info) 10%,transparent)}.pd-folio .plan-edit-kinds>i.on.k-weekday b{color:var(--info)}.pd-folio .plan-edit-kinds>i.on.k-weekend{border-color:color-mix(in srgb,var(--apricot) 28%,transparent);background:color-mix(in srgb,var(--apricot) 10%,transparent)}.pd-folio .plan-edit-kinds>i.on.k-weekend b{color:var(--apricot)}
.pd-folio .plan-edit-day .plan-card-go{width:18px;height:auto;border:0;background:none;color:var(--faint)}
/* 하단 바 — 유리 */
.pd-folio~.plan-dock{border-color:var(--glass-line);border-radius:var(--r-island);background:color-mix(in srgb,var(--surface) 78%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);box-shadow:var(--glass-hi),0 18px 40px -16px rgba(0,0,0,.7)}.pd-folio~.plan-dock .btn{border-radius:14px}
html[data-theme=light] .plan-basic-day.pb-folio{background:linear-gradient(170deg,#fff,#F8FAFC 50%);box-shadow:0 14px 34px -20px rgba(45,60,78,.3)}html[data-theme=light] .plan-basic-variant.pb-folio .plan-basic-item,html[data-theme=light] .plan-basic-variant.pb-folio .plan-basic-item.unscheduled{background:none}html[data-theme=light] .plan-basic-variant.pb-folio .plan-basic-time,html[data-theme=light] .plan-basic-variant.pb-folio .plan-basic-time.unset{background:none;box-shadow:none}html[data-theme=light] .plan-basic-card{background:#fff;box-shadow:0 6px 16px -10px rgba(45,60,78,.3)}html[data-theme=light] .plan-basic-item.unscheduled .plan-basic-card{background:#F7F9FB;box-shadow:none}html[data-theme=light] .plan-basic-variant.pb-folio .plan-basic-thumb:not(.meal){box-shadow:0 6px 12px -7px rgba(30,40,55,.5),inset 0 0 0 1px rgba(0,0,0,.06)}html[data-theme=light] .plan-basic-variant.pb-folio .plan-basic-thumb .ph{color:rgba(255,255,255,.75)}html[data-theme=light] .pd-folio .plan-edit-day{background:linear-gradient(165deg,#fff,#FAFBFD);box-shadow:0 12px 28px -16px rgba(45,60,78,.26)}html[data-theme=light] .pd-folio~.plan-dock{background:rgba(255,255,255,.82);box-shadow:0 14px 34px -14px rgba(45,60,78,.3)}html[data-theme=light] .pd-folio .plan-share-origin{background:linear-gradient(135deg,color-mix(in srgb,var(--apricot) 8%,#fff),#fff 70%)}html[data-theme=light] .pd-fan .plan-cover-p:not(:last-child){filter:brightness(.92)}
@media(max-width:359px){.plan-basic-variant.pb-folio .plan-basic-list{padding-left:8px;padding-right:12px}.plan-basic-variant.pb-folio .plan-basic-item,.plan-basic-gap{grid-template-columns:44px 10px minmax(0,1fr);gap:0 5px}.plan-basic-variant.pb-folio .plan-basic-item::after,.plan-basic-gap::before{left:53.5px}.plan-basic-card{grid-template-columns:40px minmax(0,1fr) auto;gap:10px}.plan-basic-variant.pb-folio .plan-basic-thumb{width:40px;height:56px}.plan-basic-variant.pb-folio .plan-basic-thumb.meal{height:40px}.plan-basic-variant.pb-folio .plan-basic-time b{font-size:14px}.pd-fan{width:62px;transform:scale(.88);transform-origin:right center}}
@media(max-width:359px){.plan-dock.read.owner{grid-template-columns:.82fr .9fr 1.2fr}.plan-dock.read.owner .btn{padding:0 3px;font-size:11px}.plan-share-row{grid-template-columns:36px minmax(0,1fr) auto}.plan-share-row>.avatar{width:36px;height:36px}.plan-share-send{padding:0 8px}.plan-share-origin{grid-template-columns:38px minmax(0,1fr)}.plan-share-origin>.avatar{width:38px;height:38px}.plan-share-origin>span{display:none}}

/* 계획 테마 빠른 정보 — 열람 카드만 팝업 진입점이고 PNG·식사 항목은 정적인 상태를 유지한다. */
.plan-theme-open{appearance:none;margin:0;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}.plan-basic-item.plan-theme-open{width:100%}.plan-arch-cell.plan-theme-open{width:100%;display:flex;flex-direction:column;align-items:stretch;padding:0;background:transparent}.plan-theme-open:focus-visible{outline:2px solid var(--p5);outline-offset:4px}.plan-theme-open:active{transform:scale(.985)}
.plan-theme-info-sheet{max-height:min(86vh,760px)}.plan-theme-info-sheet .sh-head{align-items:flex-start}.plan-theme-info-sheet .sh-head>div{display:flex;flex-direction:column;gap:2px}.plan-theme-info-kicker{color:var(--muted);font-size:11px;font-weight:750}.plan-theme-info-sheet .sh-body{padding-top:7px}.plan-theme-info-card{display:grid;gap:13px}.plan-theme-info-hero{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:14px;padding:12px;border:1px solid var(--border);border-radius:18px;background:var(--surface2)}.plan-theme-info-poster{width:92px;aspect-ratio:3/4;display:grid;place-items:center;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface);background-size:cover;background-position:center;color:var(--muted);font-size:24px;font-weight:900;box-shadow:0 10px 24px rgba(0,0,0,.22)}.plan-theme-info-copy{min-width:0;display:flex;flex-direction:column;align-items:flex-start}.plan-theme-info-copy i{margin-bottom:6px;padding:3px 7px;border:1px solid color-mix(in srgb,var(--danger) 34%,var(--border));border-radius:999px;background:color-mix(in srgb,var(--danger) 8%,transparent);color:var(--danger);font-size:11px;font-style:normal;font-weight:900}.plan-theme-info-copy h2{max-width:100%;margin:0;font-size:20px;line-height:1.18;letter-spacing:-.025em;word-break:keep-all}.plan-theme-info-copy>b{margin-top:7px;color:var(--muted);font-size:11px}.plan-theme-info-copy p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.plan-theme-info-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.plan-theme-info-facts>div{min-height:63px;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:11px 12px;border:1px solid var(--border);border-radius:14px;background:var(--surface2)}.plan-theme-info-facts small,.plan-theme-recommend small{color:var(--muted);font-size:11px;font-weight:750}.plan-theme-info-facts b{font-size:12px}.plan-theme-recommend{display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.plan-theme-recommend>span{width:31px;height:31px;display:grid;place-items:center;border-radius:50%;background:var(--tag-bg);color:var(--muted)}.plan-theme-recommend svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}.plan-theme-recommend>div{display:flex;flex-direction:column;gap:2px}.plan-theme-recommend b{font-size:11.5px}.plan-theme-detail{width:100%;min-height:47px;border-radius:13px}.plan-theme-detail svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.plan-theme-info-error{min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center}.plan-theme-info-error b{font-size:13px}.plan-theme-info-error span{color:var(--muted);font-size:11px}.plan-theme-info-error button{height:34px;margin-top:8px;padding:0 13px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);color:var(--text);font-size:11px;font-weight:850}
html[data-theme=light] .plan-theme-info-hero{background:#fff}html[data-theme=light] .plan-theme-info-poster{box-shadow:0 10px 24px rgba(45,60,78,.13)}html[data-theme=light] .plan-theme-info-facts>div{background:#f7f8fa}

/* 미니멀 — 넓은 여백, 무채색 선, 작은 레드 포인트만 남긴 절제안. */
.plan-export-canvas[data-export-style=minimal]{background:#F7F6F2!important;color:#181818}.plan-export-canvas[data-export-style=minimal] .plan-export-hero{min-height:292px;padding:64px 74px 42px;background:#F7F6F2;color:#181818;border-bottom:1px solid #BEBDB8}.plan-export-canvas[data-export-style=minimal] .plan-export-slash{display:none}.plan-export-canvas[data-export-style=minimal] .plan-export-title{width:1100px;transform:none}.plan-export-canvas[data-export-style=minimal] .plan-export-title span{margin-bottom:18px;color:#A71D28;font-size:21px;letter-spacing:.22em}.plan-export-canvas[data-export-style=minimal] .plan-export-title b{font-size:76px;font-weight:800;letter-spacing:-.045em;text-shadow:none}.plan-export-canvas[data-export-style=minimal] .plan-export-hero>p{margin-top:21px;color:#62615D;font-size:19px;font-weight:600}.plan-export-canvas[data-export-style=minimal] .plan-export-meta{right:70px;bottom:44px;gap:18px;color:#181818;transform:none}.plan-export-canvas[data-export-style=minimal] .plan-export-meta>*{padding:0;border:0;background:transparent}.plan-export-canvas[data-export-style=minimal] .plan-export-meta b{color:#A71D28}.plan-export-canvas[data-export-style=minimal] .plan-export-days{gap:30px}.plan-export-canvas[data-export-style=minimal] .plan-archive-day{border:1px solid #B8B6B0;box-shadow:none}.plan-export-canvas[data-export-style=minimal] .plan-archive-day>header{background:#202020}.plan-export-canvas[data-export-style=minimal] .plan-archive-kind{border-bottom:1px solid #D6D3CC;background:#FBFAF7}.plan-export-canvas[data-export-style=minimal] .plan-export-foot{border-top:1px solid #202020}.plan-export-canvas[data-export-style=minimal] .plan-export-foot b{font-family:"Pretendard Variable",Pretendard,"Apple SD Gothic Neo",sans-serif;font-weight:800}

/* 미감별 프레임도 border 대신 안쪽 배경 여백으로 그려 네 변을 한 번만 정확히 그린다. */
.plan-export-canvas[data-export-style=editorial] .plan-archive-day{border:0;padding:2px;background:#7D2228;filter:none}
.plan-export-canvas[data-export-style=minimal] .plan-archive-day{border:0;padding:1px;background:#B8B6B0;filter:none}

/* ===== 소셜 메뉴 =====
   친구·채팅·모임·뉴스 — 기록 보기 탭과 같은 글래스 트랙 + 붉은 렌즈(.rectabs 공용, 탭 수 2~4는 --n).
   배지는 실제 미확인 수만, 렌즈 위에서는 흰 바탕으로 뒤집어 읽히게 한다. 4칸이 좁은 폭(<360px)에서는 아이콘을 접는다 */
.stabs{margin:2px 18px 4px}
.stabs .rtab{gap:4px;padding:0 3px}
.stabs .rtab svg{width:15px;height:15px}
.stabs .unreadb{min-width:16px;height:16px;margin-left:0;padding:0 4px;font-size:9.5px}
.stabs .rtab.on .unreadb{background:#fff;color:var(--p5)}
@media(max-width:359px){.stabs[data-n="4"] .rtab svg{display:none}}
/* 소셜 머리 동작 — 기록 탭 머리(.record-head-actions)와 같은 유리 캡슐 한 개를 가는 선으로 나눈 칸(.rha 공용).
   아이콘만 칸은 .rha-ic, 만들기·쓰기 아이콘만 가운데 + 버튼과 같은 붉은색(.rha-new) */
.soc-acts{display:flex;flex:none;align-items:center;overflow:hidden}
.rha.rha-ic{padding:0 11px}
.rha.rha-new svg{color:var(--p5)}
.soc-acts .rha:disabled{background:none}
@media(max-width:359px){.soc-acts .rha{gap:4px;padding:0 10px}.soc-acts .rha.rha-ic{padding:0 9px}.soc-acts [data-act="group-code-sheet"] svg{display:none}}
/* 프로필 머리 동작 — 소셜 머리와 같은 유리 캡슐(.me-acts): 유용한 기능 | 피드백 | 설정. 피드백 결과 숫자는 캡슐이 자르지 않게 칸 안 골드 배지.
   좁은 폭(<360px)에서는 라벨을 남기고 라벨 칸의 아이콘을 접는다 */
.me-acts{display:flex;flex:none;align-items:center;overflow:hidden}
.me-acts .fb-dot{min-width:16px;height:16px;margin:0;padding:0 4px;font-size:9.5px;vertical-align:0}
@media(max-width:359px){.me-acts .rha{gap:4px;padding:0 10px}.me-acts .rha.rha-ic{padding:0 9px}.me-acts .rha:not(.rha-ic) svg{display:none}}
/* 친구 행 동작(수락·거절·요청 취소·친구 요청) — 머리 캡슐과 같은 유리 알약. 행의 주 동작(수락·친구 요청)만 붉은 렌즈 */
.view-friends .urow .act .pill:not(.tst){height:30px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid var(--glass-line);border-radius:999px;
  background:var(--glass-bg);
  box-shadow:var(--glass-hi);color:var(--text);font-size:11px;font-weight:800;transition:scale .2s cubic-bezier(.3,.7,.4,1),background .14s}
.view-friends .urow .act .pill.ghost{color:var(--muted)}
.view-friends .urow .act .pill.accent{gap:4px;padding-left:10px;color:var(--text)}.view-friends .urow .act .pill.accent svg{width:13px;height:13px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round} /* 수락·친구 요청 — 유리 알약 + 아이콘(붉은 렌즈는 현재 선택·폼 제출 전용), 거절·취소는 옅은 글자 */
.view-friends .urow .act .pill.done{color:var(--success)}.view-friends .urow .act .pill.accept{color:var(--success);border-color:color-mix(in srgb,var(--success) 34%,var(--glass-line));background:linear-gradient(color-mix(in srgb,var(--success) 13%,transparent),color-mix(in srgb,var(--success) 13%,transparent)),var(--glass-bg)} /* 수락 — 초록 유리(단색 채움 아님) */
@media(hover:hover){.view-friends .urow .act .pill.ghost:hover{color:var(--text)}}
.view-friends .urow .act .pill:not(:disabled):active{scale:.95}
.view-friends .urow .act .pill:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.shub-sec{display:flex;align-items:center;justify-content:space-between;margin:14px 20px 2px}
.shub-sec b{font-size:12px;font-weight:800;letter-spacing:-.01em;color:var(--muted)}
.shub-sec .more{min-height:44px;display:inline-flex;align-items:center;gap:2px;padding:0 4px;color:var(--muted);font-size:12px;font-weight:750}
.shub-sec .more svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.grp-events-head{gap:10px}.grp-events-head>b{flex:1;min-width:0;white-space:nowrap}.grp-events-tools{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.grp-event-filter{min-height:44px;display:inline-flex;align-items:center;gap:7px;padding:0 3px;color:var(--faint);font-size:11px;font-weight:800;white-space:nowrap}
.grp-event-filter>i{position:relative;width:34px;height:20px;flex:0 0 auto;border-radius:999px;background:var(--surface3);transition:background .16s}.grp-event-filter>i>u{position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:var(--muted);text-decoration:none;transition:transform .16s,background .16s}
.grp-event-filter.on{color:var(--text)}.grp-event-filter.on>i{background:var(--sw-lens);box-shadow:var(--sw-lens-sh)}.grp-event-filter.on>i>u{transform:translateX(14px);background:var(--sw-knob);box-shadow:var(--sw-knob-sh)}.grp-event-filter:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.grp-events-sheet-filter{display:flex;justify-content:flex-end;grid-column:1/-1;margin:-5px 0 3px}
.shub-stage{display:flex;flex-direction:column;align-items:center;gap:9px;margin:52px 20px;padding:34px 24px;border:1px solid var(--border);border-radius:16px;background:var(--matte);text-align:center}
.shub-stage svg{width:30px;height:30px;fill:none;stroke:var(--faint);stroke-width:1.7}
.shub-stage .stage-tag{font-size:11px;font-weight:800;color:var(--muted);border-radius:6px;background:var(--tag-bg);padding:3px 8px}
.shub-stage b{font-size:15px;letter-spacing:-.02em}
.shub-stage p{margin:0;max-width:300px;color:var(--muted);font-size:12px;line-height:1.65;word-break:keep-all}
.view-friends .subview-appbar .appbar-actions{margin-left:auto}

/* ---- 모임 (D10~D12 1차) ---- */
.group-invite-inbox{margin-top:2px}
.group-invite-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 20px 3px}
.group-invite-heading h2{margin:0;color:var(--text);font-size:13px;font-weight:850;letter-spacing:-.02em}
.group-invite-heading h2:focus{outline:2px solid var(--focus);outline-offset:4px}
.group-invite-heading span{color:var(--faint);font-size:10px}
.group-invite-list{display:flex;flex-direction:column;gap:9px;margin:6px 18px 4px}
.group-invite-card{display:flex;min-width:0;flex-direction:column;gap:10px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--gold) 27%,var(--border));border-radius:16px;background:linear-gradient(145deg,color-mix(in srgb,var(--gold) 5%,var(--surface)),var(--surface) 60%)}
.group-invite-card:focus{outline:2px solid var(--focus);outline-offset:2px}
.group-invite-from{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;min-width:0}
.group-invite-from>div{display:flex;min-width:0;flex-direction:column;gap:2px}.group-invite-from>div span{overflow:hidden;color:var(--muted);font-size:11.5px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.group-invite-from>div small{overflow:hidden;color:var(--faint);font-size:9.5px;text-overflow:ellipsis;white-space:nowrap}
.group-invite-from>i{padding:3px 7px;border:1px solid var(--border);border-radius:6px;background:var(--surface2);color:var(--faint);font-size:9px;font-style:normal;font-weight:800;white-space:nowrap}
.group-invite-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:4px 10px}.group-invite-copy h3{min-width:0;margin:0;overflow:hidden;font-size:15px;letter-spacing:-.025em;text-overflow:ellipsis;white-space:nowrap}.group-invite-copy p{grid-column:1/-1;display:-webkit-box;margin:1px 0 0;overflow:hidden;color:var(--muted);font-size:11.5px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2}.group-invite-copy>span{color:var(--faint);font-family:var(--fn);font-size:9.5px;white-space:nowrap}
.group-invite-conditions{display:flex;flex-wrap:wrap;gap:5px;margin:0;padding:0;list-style:none}.group-invite-conditions li{padding:4px 7px;border:1px solid var(--hairline);border-radius:7px;background:var(--surface2);color:var(--muted);font-size:9.5px;line-height:1.25}
.group-invite-context{display:flex;flex-direction:column;gap:2px;margin:0;padding-left:9px;border-left:2px solid color-mix(in srgb,var(--gold) 70%,var(--border));line-height:1.4}.group-invite-context b{font-size:10.5px}.group-invite-context span{color:var(--faint);font-size:9.5px}
.group-invite-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.group-invite-actions>button{position:static;height:38px;min-width:0;padding:0 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface2);color:var(--text);font-size:12px;font-weight:850}.group-invite-actions>button.accept{border-color:transparent;background:var(--p5);color:var(--paper)}.group-invite-actions>button:disabled{opacity:.5;cursor:wait}.group-invite-actions>button:focus-visible,.group-invite-feedback button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.group-invite-feedback:empty{display:none}.group-invite-feedback{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:8px 9px;border-radius:9px;background:var(--surface2);color:var(--muted);font-size:10px;line-height:1.45}.group-invite-feedback span{min-width:0;overflow-wrap:anywhere}.group-invite-feedback span b{display:block;color:var(--text);font-size:10.5px}.group-invite-feedback.busy{border-left:2px solid var(--accent)}.group-invite-feedback.error{border-left:2px solid var(--danger)}.group-invite-feedback button{position:static;flex:0 0 auto;height:34px;padding:0 9px;border:1px solid color-mix(in srgb,var(--danger) 38%,var(--border));border-radius:8px;background:var(--surface);color:var(--danger);font-size:9.5px;font-weight:850;white-space:nowrap}
.glist{display:flex;flex-direction:column;gap:9px;margin:6px 18px 2px}
.gcard{display:flex;flex-direction:column;gap:7px;padding:13px 14px;border:1px solid var(--hairline);border-radius:16px;background:var(--surface);text-align:left;transition:border-color .16s,background .16s,transform .16s}
.gcard:hover{border-color:var(--border);background:var(--surface2)}
.gcard:active{transform:scale(.985)}
.gc-head{display:flex;align-items:center;gap:7px;min-width:0}
.gc-head b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;letter-spacing:-.02em}
.gc-official,.gc-private{flex:0 0 auto;padding:2px 7px;border-radius:6px;font-size:11px;font-weight:850;font-style:normal}
.gc-official{color:var(--p5);border:1px solid color-mix(in srgb,var(--p5) 40%,transparent);background:color-mix(in srgb,var(--p5) 8%,transparent)} /* 공식 = 브랜드 붉은 태그 */
.gc-private{color:var(--muted);border:0;background:var(--tag-bg)}
.gc-cnt{flex:0 0 auto;color:var(--faint);font-family:var(--fn);font-size:11px}
.gc-desc{margin:0;color:var(--muted);font-size:11.5px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gc-next{display:flex;align-items:center;gap:6px;min-width:0;color:var(--text);font-size:11px}
.gc-next svg{flex:0 0 auto;width:14px;height:14px;fill:none;stroke:var(--info);stroke-width:1.9}
.gc-next span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:750}
.gc-next time{flex:0 0 auto;margin-left:auto;color:var(--info);font-family:var(--fn);font-size:11px}
.gc-next.none{color:var(--faint)}.gc-next.none svg{stroke:var(--faint)}.gc-next.none span{font-weight:650}
.grp-desc{margin:8px 20px 2px;color:var(--muted);font-size:12px;line-height:1.6;word-break:keep-all}
.grp-event{display:flex;flex-direction:column;gap:10px;margin:6px 18px 9px;padding:12px 13px;border:1px solid var(--hairline);border-radius:16px;background:var(--surface)}
.grp-event.hero{border-color:color-mix(in srgb,var(--p5) 26%,var(--border));background:linear-gradient(150deg,color-mix(in srgb,var(--p5) 7%,var(--surface)),var(--surface) 62%)}
.grp-event-main{display:flex;align-items:center;gap:11px;min-width:0;width:100%;padding:0;border:0;background:none;color:inherit;text-align:left;font:inherit;cursor:pointer}
.grp-event-main>svg:last-child{width:16px;height:16px;margin-left:auto;flex:0 0 auto;fill:none;stroke:var(--faint);stroke-width:2}
.grp-poster{flex:0 0 auto;width:52px;height:69px;object-fit:cover;border-radius:8px;background:var(--surface3)}
.grp-event-copy{min-width:0;display:flex;flex-direction:column;gap:4px;justify-content:center}
.grp-event-copy b{font-size:13.5px;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grp-when{color:var(--info);font-family:var(--fn);font-size:11px}
.grp-event-desc{max-width:100%;overflow:hidden;color:var(--muted);font-size:11px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.grp-count{color:var(--faint);font-size:11px}.grp-count i{font-style:normal;color:var(--muted)}
.grp-seat-full{width:max-content;padding:2px 6px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850}
.grp-event.seat-full{border-color:var(--border);background:var(--surface2)}.grp-event.seat-full .grp-when{color:var(--muted)}
.event-seat-mine{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint);color:var(--text)}.event-seat-mine>svg{width:18px;height:18px;flex:none;color:var(--info);fill:none;stroke:currentColor;stroke-width:1.8}.event-seat-mine>span{display:flex;min-width:0;flex-direction:column;gap:2px}.event-seat-mine b{font-size:11px}.event-seat-mine small{color:var(--muted);font-size:11px;line-height:1.4}
.grp-events-all .grp-event{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center;margin:6px 0 9px}
.grp-events-all .grp-event:last-child{margin-bottom:0}
.grp-events-all .grp-event-main{grid-column:1;grid-row:1}
.grp-events-all .rsvp.compact{grid-column:2;grid-row:1;width:42px;height:102px;align-self:center;flex-direction:column;gap:0}
.grp-events-all .rsvp.compact .kknob{left:3px;right:3px;top:3px;bottom:auto;width:auto;height:calc((100% - 6px)/var(--kn,3));transform:translateY(calc(var(--ki,0)*100%))}
.grp-events-all .rsvp.compact>button{width:100%;min-height:0;padding:0;border:0;background:transparent}
.grp-events-all .rsvp.compact>button span{display:none}
.grp-events-all .event-seat-mine,.grp-events-all .grp-evsaved,.grp-events-all .grp-evchat{grid-column:1/-1}
.grp-noevent{display:flex;flex-direction:column;align-items:center;gap:7px;margin:14px 18px 6px;padding:24px 18px;border:1px solid var(--border);border-radius:16px;background:var(--matte);text-align:center}
.grp-noevent svg{width:22px;height:22px;fill:none;stroke:var(--faint);stroke-width:1.8}
.grp-noevent b{font-size:13px}.grp-noevent span{color:var(--faint);font-size:11px}
.grp-noevent .btn span{color:inherit;font-size:inherit}
.grp-events-all .grp-noevent.filtered{grid-column:1/-1;margin:8px 0}
@media(max-width:359px){.grp-events-head{align-items:flex-start;flex-wrap:wrap}.grp-events-tools{width:100%;justify-content:flex-end;margin-top:-7px}}
.grp-chatrow{width:calc(100% - 32px);margin:0 16px;text-align:left;min-height:60px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-top-color:var(--hairline)}
:not(.grp-chatrow)+.grp-chatrow{margin-top:8px;border-top-color:var(--border);border-top-left-radius:16px;border-top-right-radius:16px}
.grp-chatrow:not(:has(+ .grp-chatrow)){margin-bottom:8px;border-bottom-left-radius:16px;border-bottom-right-radius:16px}
.grp-chatrow+.grp-chatrow{border-top:1px solid var(--hairline)}
.grp-chatrow .avatar.gicon{width:36px;height:36px;border-radius:50%}
@media(hover:hover){.grp-chatrow:hover{background:color-mix(in srgb,var(--text) 4%,var(--surface))}}
.grp-chatrow .chatmeta svg{width:15px;height:15px;fill:none;stroke:var(--faint);stroke-width:2}
.sh-body>.grp-chatrow{width:100%;margin:0}.sh-body>.grp-chatrow:first-child{border-top-color:var(--border);border-top-left-radius:16px;border-top-right-radius:16px}.sh-body>.grp-chatrow .chatmeta .ct{font-size:11px} /* 모임 설정 시트 — 시트 본문 폭의 무광 묶음 */
.grp-member .pill{flex:0 0 auto}
.grp-role{margin-left:4px;padding:1px 6px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850;font-style:normal;vertical-align:1px}
.grp-role.owner{color:var(--text)}
.grp-foot{display:flex;justify-content:center;margin:18px 18px 8px}
.grp-leave{color:var(--danger)}
.grp-field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px}
.grp-field>span{font-size:12px;font-weight:850}
.grp-field>span em{color:var(--faint);font-size:11px;font-weight:650;font-style:normal}
.grp-field .hint{margin:2px 0 0}
.event-description-input{min-height:84px;resize:vertical;line-height:1.55}.event-seat-create>p{margin:-1px 0 2px;color:var(--muted);font-size:10.5px;line-height:1.5;word-break:keep-all}
.event-seat-members{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px;max-height:244px;overflow-y:auto;padding:1px}.event-seat-member{display:grid;grid-template-columns:34px minmax(0,1fr) 18px;align-items:center;gap:8px;min-width:0;min-height:52px;padding:7px 9px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);color:var(--text);text-align:left}.event-seat-member .avatar{width:34px;height:34px;font-size:11px}.event-seat-member>span{display:flex;min-width:0;flex-direction:column;gap:2px}.event-seat-member b,.event-seat-member small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-seat-member b{font-size:11.5px}.event-seat-member small{color:var(--faint);font-size:8.5px}.event-seat-member>i{display:grid;width:18px;height:18px;place-items:center;color:var(--faint);font-style:normal}.event-seat-member>i svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}.event-seat-member.on{border-color:color-mix(in srgb,var(--gold) 58%,var(--border));background:color-mix(in srgb,var(--gold) 8%,var(--surface2))}.event-seat-member.on small,.event-seat-member.on>i{color:var(--gold)}.event-seat-member:disabled{cursor:not-allowed;color:var(--muted);background:var(--surface);opacity:.68}.event-seat-members.manage .event-seat-member{border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}.event-seat-members.manage .event-seat-member small{font-size:11px}.event-seat-members.manage .event-seat-member.on{border-color:color-mix(in srgb,var(--p5) 55%,transparent);background:color-mix(in srgb,var(--p5) 12%,var(--surface2))}.event-seat-members.manage .event-seat-member.on :is(small,i){color:var(--p5)}
.event-seat-duration{display:grid;gap:8px;margin-top:4px;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.event-seat-duration[hidden]{display:none}.event-seat-duration>label{display:flex;align-items:center;justify-content:space-between;gap:12px}.event-seat-duration>label>span:first-child{font-size:11px;font-weight:800}.event-seat-duration>label>span:last-child{display:flex;align-items:center;gap:5px}.event-seat-duration .input{width:72px;height:40px;padding:0 9px;text-align:right;font-family:var(--fn);font-weight:850}.event-seat-duration em{color:var(--muted);font-size:11px;font-style:normal}.event-seat-duration>small{color:var(--faint);font-size:11px;line-height:1.45}.event-seat-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.event-seat-presets:not(.segctl) button{min-height:40px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--muted);font-size:10.5px;font-weight:800}.event-seat-presets.segctl{display:flex}.event-seat-presets:not(.segctl) :is(button.on,button[aria-pressed=true]){border-color:color-mix(in srgb,var(--gold) 52%,var(--border));color:var(--gold);background:color-mix(in srgb,var(--gold) 7%,var(--surface))}
.event-seat-selection{color:var(--faint);font-size:9.5px;line-height:1.4}.event-seat-current{display:grid;gap:6px;margin-bottom:14px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint)}.event-seat-current>b{font-size:12px}.event-seat-current>span{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}.event-seat-current small{color:var(--muted);font-size:11px}.event-seat-manage-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.event-seat-manage-head>span{display:flex;flex-direction:column;gap:2px}.event-seat-manage-head b{font-size:12px}.event-seat-manage-head small,.event-seat-manage-head em{color:var(--faint);font-size:11px;font-style:normal}.event-seat-save{width:100%;margin-top:12px}
@media(max-width:359px){.event-seat-members{grid-template-columns:minmax(0,1fr)}.event-seat-member{min-height:50px}.event-seat-current>span{align-items:flex-start;flex-direction:column;gap:2px}}
.grp-profile-desc{margin:0 0 14px;color:var(--muted);line-height:1.55}
.grp-profile-editor{margin:0 0 14px;padding:16px;border:1px solid var(--hairline);border-radius:15px;background:var(--surface2)}
.grp-profile-preview{display:flex;justify-content:center;margin:0 0 14px}
.grp-profile-photo-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:-2px}
.grp-profile-photo-actions .btn{justify-content:center;min-width:0}
.grp-profile-photo-actions svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}
.grp-profile-editor>.hint{margin:10px 1px 0;line-height:1.5}
.grp-profile-default-only{display:flex;align-items:center;gap:13px;margin:2px 0 16px;padding:14px;border:1px solid var(--hairline);border-radius:15px;background:var(--surface2)}
.grp-profile-default-only>div{min-width:0}.grp-profile-default-only b{font-size:13px}.grp-profile-default-only p{margin:4px 0 0;color:var(--muted);font-size:10.5px;line-height:1.45;word-break:keep-all}
.grp-submit{width:100%;min-height:46px;margin-top:4px}
/* 멤버 태그 — 작은 색점과 얇은 틴트만 써 이름보다 앞서지 않게 한다. */
.member-tags{display:inline-flex;min-width:0;flex-wrap:wrap;align-items:center;gap:4px}.member-tag{--tag-color:#6FE3C1;display:inline-flex;align-items:center;gap:4px;min-height:19px;padding:1px 6px 1px 5px;border:1px solid color-mix(in srgb,var(--tag-color) 42%,var(--border));border-radius:999px;background:color-mix(in srgb,var(--tag-color) 10%,var(--surface2));color:var(--text);font-size:9px;font-weight:800;line-height:1.25;white-space:nowrap}.member-tag i{width:5px;height:5px;flex:0 0 auto;border-radius:50%;background:var(--tag-color)}.member-tag b{font:inherit}.member-row-tags,.my-group-tags{margin-top:5px}.profile-member-tags{display:flex;margin-top:7px}.grp-tag-needed{border-left:2px solid var(--gold);background:color-mix(in srgb,var(--gold) 4%,transparent)}
.group-tag-builder .sh-body,.group-tag-choice-sheet .sh-body{padding-bottom:max(28px,env(safe-area-inset-bottom))}.group-tag-preview-note{display:flex;flex-direction:column;gap:3px;margin-bottom:11px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.group-tag-preview-note b{font-size:13px}.group-tag-preview-note span{color:var(--muted);font-size:12px}.group-tag-type-list{display:flex;flex-direction:column;gap:10px}.group-tag-type{padding:13px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.group-tag-type>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.group-tag-type>header b{font-size:12px}.group-tag-type>header>div{display:flex;gap:3px}.group-tag-type>header button{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--glass-line);border-radius:8px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.group-tag-type>header button:disabled{opacity:.28}.group-tag-type>header svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}.group-tag-type>header [data-tag-type-move] svg{transform:rotate(90deg)}.group-tag-option-list{display:flex;flex-direction:column;gap:6px}.group-tag-option{display:grid;grid-template-columns:38px minmax(0,1fr) 34px;gap:6px;align-items:center}.group-tag-option>.input{height:40px}.group-tag-option>button{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--glass-line);border-radius:50%;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted)}.group-tag-option>button:disabled{opacity:.24}.group-tag-option>button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.tag-color-input{--tag-color:#6FE3C1;position:relative;display:grid;place-items:center;width:38px;height:38px;border:1px solid color-mix(in srgb,var(--tag-color) 48%,var(--border));border-radius:11px;background:color-mix(in srgb,var(--tag-color) 12%,var(--surface));cursor:pointer;overflow:hidden}.tag-color-input input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.tag-color-input i{width:13px;height:13px;border:3px solid color-mix(in srgb,var(--tag-color) 30%,var(--surface));border-radius:50%;background:var(--tag-color)}.group-tag-option-add{display:inline-flex;align-items:center;gap:5px;min-height:34px;margin:10px 0 0;padding:0 13px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}.group-tag-option-add svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}.group-tag-option-add:disabled{opacity:.35}.group-tag-type-add,.group-tag-save{width:100%;margin-top:10px}.group-tag-type-add svg{width:15px;height:15px}.group-tag-choice-intro{margin:0 0 13px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--muted);font-size:12px;line-height:1.55}.group-tag-choice{min-width:0;margin:0 0 12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.group-tag-choice legend{float:left;display:flex;width:100%;align-items:center;gap:7px;padding:0;font-size:12.5px;font-weight:850}.group-tag-choice legend span{flex:1}.group-tag-choice legend em{color:var(--faint);font-size:11px;font-style:normal}.group-tag-choice legend+div{clear:both;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding-top:11px}.group-tag-choice label{position:relative;min-width:0}.group-tag-choice input{position:absolute;opacity:0;pointer-events:none}.group-tag-choice label>span{display:flex;align-items:center;gap:7px;min-height:43px;padding:0 12px;border:1px solid color-mix(in srgb,var(--tag-color) 28%,var(--border));border-radius:12px;background:var(--surface2);cursor:pointer}.group-tag-choice label i{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--tag-color)}.group-tag-choice label b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}.group-tag-choice label:has(input:checked)>span{border-color:var(--tag-color);background:color-mix(in srgb,var(--tag-color) 14%,var(--surface));color:var(--text)}.group-tag-choice label:has(input:focus-visible)>span{outline:2px solid var(--focus);outline-offset:2px}
.join-builder-sheet .sh-body,.join-answer-sheet .sh-body,.join-review-sheet .sh-body{padding-bottom:max(28px,env(safe-area-inset-bottom))}.join-intro{min-height:76px}.join-survey-list{display:flex;flex-direction:column;gap:10px}.join-survey-card{padding:13px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.join-survey-card>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.join-survey-card>header b{font-size:12px}.join-survey-card>header>div{display:flex;gap:3px}.join-survey-card>header button{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--glass-line);border-radius:8px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text)}.join-survey-card>header button:disabled{opacity:.28}.join-survey-card>header svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}.join-survey-card>header [data-join-qmove=up] svg{transform:rotate(90deg)}.join-survey-card>header [data-join-qmove=down] svg{transform:rotate(90deg)}.join-survey-card>.input{margin-bottom:8px}.join-survey-meta{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:8px}.join-survey-meta label{display:flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:12px;font-weight:800}.join-survey-meta input{accent-color:var(--p5)}.grp-field.compact{margin:2px 0 0}.join-option-lines{min-height:64px;padding:10px 12px;line-height:1.55}.join-survey-limits{display:grid;grid-template-columns:1fr 1fr;gap:8px}.join-survey-limits label{display:flex;flex-direction:column;gap:5px}.join-survey-limits span{font-size:11px;font-weight:800;color:var(--muted)}.join-survey-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px}.join-survey-add .btn{gap:6px}.join-survey-add svg{width:15px;height:15px}.join-builder-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.join-disable{width:100%;margin-top:8px;color:var(--danger)}.join-builder-empty{margin:0}.join-notice-editor textarea{min-height:180px}.join-notice-copy{margin:4px 0 18px;color:var(--text);font-size:13.5px;line-height:1.75;white-space:pre-wrap;word-break:keep-all}.join-survey-intro{margin:0 0 16px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--muted);font-size:12px;line-height:1.6;white-space:pre-wrap}.join-answer-question{min-width:0;margin:0 0 12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.join-answer-question legend{float:left;display:flex;align-items:flex-start;gap:7px;width:100%;padding:0;font-size:12.5px;font-weight:850;line-height:1.45}.join-answer-question legend span{flex:1;min-width:0;overflow-wrap:anywhere}.join-answer-question legend em{flex:0 0 auto;margin-top:2px;color:var(--faint);font-size:11px;font-style:normal}.join-answer-question legend+*{clear:both}.join-answer-question>p{margin:6px 0 10px;color:var(--muted);font-size:12px;line-height:1.5}.join-answer-options{display:grid;gap:6px;margin-top:10px}.join-answer-options label{position:relative;display:flex;align-items:center;min-height:42px;padding:0 13px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:12.5px;font-weight:700;cursor:pointer}.join-answer-options input{position:absolute;opacity:0;pointer-events:none}.join-answer-options label:has(input:checked){border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff;font-weight:850}.join-answer-options label:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.join-answer-options.multi{grid-template-columns:1fr 1fr}.join-answer-question>small{display:block;margin-top:6px;color:var(--faint);font-size:11px}.join-answer-text{min-height:104px;margin-top:10px}.join-answer-question>input[type=date]{margin-top:10px}.join-answer-slider{margin-top:10px}.join-answer-slider input{width:100%;accent-color:var(--p5)}.join-answer-slider output{display:block;margin:7px 0 5px;color:var(--text);font-size:12.5px;font-weight:850;text-align:center}.join-answer-slider>div{display:flex;justify-content:space-between;gap:5px;color:var(--faint);font-size:11px}.join-answer-slider>div span{flex:1;text-align:center}.join-answer-ack{display:flex;align-items:center;gap:9px;margin-bottom:10px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.join-answer-ack svg{width:18px;height:18px;color:var(--success);fill:none;stroke:currentColor;stroke-width:2}.join-answer-ack span{display:flex;min-width:0;flex-direction:column;gap:2px;color:var(--muted);font-size:11.5px}.join-answer-ack b{color:var(--text);font-size:12.5px}.join-review-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.join-review-list>div{display:flex;flex-direction:column;gap:5px;padding:12px 13px}.join-review-list>div+div{border-top:1px solid var(--hairline)}.join-review-list span{color:var(--muted);font-size:11.5px}.join-review-list b{font-size:12.5px;line-height:1.5;white-space:pre-wrap}
.grp-code-input{height:52px;text-align:center;font-family:var(--fn);font-size:20px;letter-spacing:.3em;text-transform:uppercase}
.grp-code-show{margin:6px 0 10px;padding:18px 8px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--text);text-align:center;font-family:var(--fn);font-size:26px;font-weight:800;letter-spacing:.28em}
.grp-invite-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.grp-invite-actions .btn{min-width:0;justify-content:center}.grp-invite-actions svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9}
.grp-theme-list{display:flex;flex-direction:column;gap:5px;max-height:180px;overflow:auto}
.grp-theme-pick{display:flex;align-items:baseline;gap:8px;min-height:40px;padding:8px 11px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);text-align:left}
.grp-theme-pick b{font-size:12px}.grp-theme-pick span{color:var(--faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grp-theme-pick.on{border-color:color-mix(in srgb,var(--p5) 55%,var(--border));background:color-mix(in srgb,var(--p5) 8%,var(--surface2))}
.grp-progress-sheet .sh-head>div:first-child{min-width:0}.grp-progress-sheet .sh-head p{margin:3px 0 0;color:var(--muted);font-size:12px}
.grp-progress-search{position:relative;display:block}.grp-progress-search>span{position:absolute;left:13px;top:50%;z-index:1;width:17px;height:17px;color:var(--faint);transform:translateY(-50%);pointer-events:none}.grp-progress-search svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.9}.grp-progress-search .input{height:47px;padding-left:40px}
.grp-progress-matches{display:flex;flex-direction:column;gap:5px;margin-top:8px}.grp-progress-matches>p{margin:20px 0;color:var(--faint);font-size:11.5px;text-align:center}
.grp-progress-pick{display:flex;align-items:center;gap:10px;width:100%;min-height:58px;padding:7px 9px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);text-align:left}.grp-progress-pick>span:nth-child(2){display:flex;flex:1;min-width:0;flex-direction:column;gap:3px}.grp-progress-pick b,.grp-progress-pick small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grp-progress-pick b{font-size:12.5px}.grp-progress-pick small{color:var(--faint);font-size:11px}.grp-progress-pick>svg{width:15px;height:15px;fill:none;stroke:var(--faint);stroke-width:2}
.grp-progress-poster{display:block;flex:0 0 auto;width:36px;height:46px;border-radius:7px;background-color:var(--surface3);background-position:center;background-size:cover;overflow:hidden}.grp-progress-poster .ph{width:100%;height:100%;font-size:8px}
.grp-progress-result{margin-top:10px}.grp-progress-theme{display:flex;align-items:center;gap:11px;padding:10px 2px 12px}.grp-progress-theme .grp-progress-poster{width:43px;height:56px}.grp-progress-theme>div{display:flex;min-width:0;flex-direction:column;gap:4px}.grp-progress-theme b,.grp-progress-theme span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grp-progress-theme b{font-size:14px}.grp-progress-theme span{color:var(--muted);font-size:11px}
.grp-progress-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.grp-progress-col{min-width:0;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.grp-progress-col.played{border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.grp-progress-col header{display:flex;align-items:center;gap:6px;padding:11px 10px 9px;border-bottom:1px solid var(--hairline)}.grp-progress-col header b{flex:1;font-size:12px}.grp-progress-col header span{display:inline-flex;align-items:center;justify-content:center;min-width:23px;height:21px;padding:0 7px;border-radius:999px;background:var(--surface3);color:var(--muted);font-size:11px;font-weight:850}.grp-progress-col.played header span{background:color-mix(in srgb,var(--accent) 13%,var(--surface2));color:var(--accent)}
.grp-progress-col ul{display:flex;flex-direction:column;margin:0;padding:4px 8px 7px;list-style:none}.grp-progress-col li{min-width:0}.grp-progress-col li+li{border-top:1px solid var(--hairline)}.grp-progress-user{display:flex;align-items:center;gap:7px;width:100%;min-width:0;min-height:43px;padding:5px 1px;color:var(--text);text-align:left;border-radius:8px}.grp-progress-user:not(.self):active{background:var(--surface2)}.grp-progress-user>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:1px}.grp-progress-user b{display:flex;min-width:0;align-items:flex-start;flex-wrap:wrap;gap:2px 4px;font-size:11.5px;line-height:1.25}.grp-progress-name{min-width:0;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}.grp-progress-user b>.masterb{flex:0 0 auto;margin-left:0;vertical-align:0}.grp-progress-user small{overflow:hidden;color:var(--faint);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.grp-progress-user em{flex:0 0 auto;color:var(--muted);font-size:11px;font-style:normal}.grp-progress-col li.empty-row{display:flex;align-items:center;justify-content:center;padding:18px 5px;color:var(--faint);font-size:11px;text-align:center}
.grp-progress-pending{margin-top:9px;padding:11px 12px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.grp-progress-pending>b{font-size:11px}.grp-progress-pending>p{margin:4px 0 8px;color:var(--faint);font-size:11px}.grp-progress-pending>div{display:flex;flex-wrap:wrap;gap:6px}.grp-progress-pending>div>button{display:inline-flex;max-width:100%;align-items:center;gap:5px;padding:4px 7px 4px 4px;color:var(--text);border-radius:999px;background:var(--surface3);font-size:11px}.grp-progress-pending>div>button>span{white-space:normal;word-break:keep-all;overflow-wrap:anywhere}.grp-progress-pending .avatar{width:22px;height:22px;font-size:9px}
html[data-theme=light] .group-invite-card{background:linear-gradient(145deg,#fffaf0,#fff 62%)}html[data-theme=light] .group-invite-from>i,html[data-theme=light] .group-invite-conditions li{background:#f7f5f0}
html[data-theme=light] .gcard{background:#fff}html[data-theme=light] .gcard:hover{background:#f7f8fa}

/* ---- 커뮤니티 (D15~D17) — U15-A 열린 편집 리스트: 카드 아님, 구분선 중심 ---- */
.cmu-scroll{padding-bottom:24px}
.cmu-row{display:flex;flex-direction:column;gap:5px;width:100%;padding:13px 20px;border-top:1px solid var(--hairline);text-align:left;transition:background .16s}
.cmu-row:hover{background:var(--surface)}
.cmu-row.notice{border-top:0;background:var(--matte-tint)}
.cmu-row.event{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:start;gap:14px;padding:20px;border-left:0;background:var(--surface)}
.cmu-row.event:hover{background:var(--surface2)}.cmu-row.event.closed{background:var(--surface2);color:var(--muted)}
.cmu-event-mark{width:48px;min-height:62px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface2);color:var(--text)}
.cmu-event-mark>small{color:var(--muted);font-size:11px;font-weight:700;line-height:1.4}.cmu-event-mark>strong{font-family:var(--fn);font-size:25px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}.cmu-event-mark svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8}
.cmu-row.event.closed .cmu-event-mark,.cmu-event-detail.closed .cmu-event-mark{border-color:var(--border);background:var(--surface3);color:var(--muted)}
.cmu-event-copy{display:flex;min-width:0;flex-direction:column;gap:9px}.cmu-event-labels{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:22px}
.cmu-event-tag,.cmu-event-state{font-size:11px;font-weight:750;font-style:normal;line-height:1.4}.cmu-event-tag{color:var(--muted)}.cmu-event-state{padding:3px 8px;border-radius:6px;background:color-mix(in srgb,var(--info) 12%,var(--surface2));color:var(--info)}
.cmu-row.event.closed .cmu-event-state,.cmu-event-detail.closed .cmu-event-state{background:var(--surface3);color:var(--muted)}
.cmu-row.event .cmu-row-head b{font-size:15px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.cmu-event-facts{display:flex;min-width:0;flex-direction:column;gap:5px;color:var(--muted);font-size:11.5px;line-height:1.55}
.cmu-event-facts>span{display:grid;grid-template-columns:26px minmax(0,1fr);gap:8px;align-items:baseline}.cmu-event-facts small{color:var(--faint);font-size:11px;font-weight:600}.cmu-event-facts b{color:var(--text);font-size:11.5px;font-weight:650;font-variant-numeric:tabular-nums}.cmu-event-facts b,.cmu-event-facts>span>span{min-width:0;overflow-wrap:anywhere}.cmu-row.event.closed .cmu-event-facts b,.cmu-event-detail.closed .cmu-event-facts b{color:var(--muted)}
.cmu-row.event .cmu-preview{margin:0;font-size:11.5px}.cmu-row.event .cmu-meta{padding-top:9px;border-top:1px solid var(--hairline);font-size:11px;gap:4px 10px}
.cmu-row.event:focus-visible,.cmu-event-detail:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}

.cmu-notice-tag{flex:0 0 auto;padding:1px 7px;border:0;background:var(--tag-bg);border-radius:6px;color:var(--text);font-size:11px;font-weight:850;font-style:normal}
/* 뉴스 태그 — 커뮤니티('on') 단계에서 작성자 없는 뉴스 글을 구분 */
.cmu-news-tag{flex:0 0 auto;padding:1px 7px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850;font-style:normal}
.cmu-row-head{display:flex;align-items:center;gap:7px;min-width:0}
.cmu-row-head b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;letter-spacing:-.02em}
.cmu-category-tag,.cmu-category-band{flex:0 0 auto;padding:2px 7px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850;font-style:normal}
.cmu-search{flex:0 0 auto;padding:10px 18px;border-bottom:1px solid var(--hairline);color:var(--text)}
.cmu-search .searchbar{width:100%;margin:0}
.cmu-search .input{background:var(--surface2);color:var(--text);border-color:var(--border)}.cmu-search .input::placeholder{color:var(--faint)}
.cmu-search-options{margin-top:8px}.cmu-search-options>.btn{margin-top:8px}.cmu-search-options summary{width:max-content;padding:4px 0;color:var(--muted);font-size:12px;cursor:pointer}.cmu-search-options p{margin:8px 0 0;font-size:11px;line-height:1.5;color:var(--muted)}
.cmu-search-dates{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:8px}.cmu-search-dates label{min-width:0;display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}.cmu-search-dates .input{width:100%;min-width:0;min-height:40px;padding:8px;font-size:13px}.cmu-search-dates .cmu-search-only{grid-column:1/-1;flex-direction:row;align-items:center;color:var(--text)}.cmu-search-only input{accent-color:var(--accent);width:18px;height:18px}
.cmu-sort{display:flex;align-items:center;gap:10px;margin-top:10px;color:var(--muted);font-size:12px}.cmu-sort .input{width:auto;min-width:0;min-height:40px;padding:8px 34px 8px 12px;font-size:13px}
/* 일정 탭 — 검색·필터·정렬의 높이와 간격을 맞춘 하나의 도구 영역 */
.cmu-schedule-search{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px 12px;padding:12px 20px;background:var(--bg)}
.cmu-schedule-search>.searchbar{grid-column:1/-1;border-radius:12px}
.cmu-schedule-search .cmu-sort{grid-column:2;grid-row:2;gap:7px;margin:0;font-size:11px;min-height:44px}.cmu-schedule-search .cmu-sort .input{height:44px;min-height:44px;padding:8px 32px 8px 11px;font-size:11px;border-radius:12px}
.cmu-schedule-search .cmu-search-options{grid-column:1/-1;grid-row:2;margin:0;min-width:0}.cmu-schedule-search .cmu-search-options summary{display:flex;align-items:center;gap:6px;min-height:44px;max-width:calc(100% - 190px);padding:0;font-size:11px;list-style:none;white-space:nowrap}.cmu-schedule-search .cmu-search-options summary::-webkit-details-marker{display:none}.cmu-schedule-search .cmu-search-options summary::before{content:'›';color:var(--muted);font-size:18px;line-height:1;transform:rotate(90deg)}.cmu-schedule-search .cmu-search-options[open] summary::before{transform:rotate(-90deg)}
.cmu-schedule-search .cmu-search-dates{margin-top:8px;padding-top:12px;border-top:1px solid var(--hairline)}.cmu-schedule-search .cmu-search-options>.btn{min-height:40px;border-radius:10px}
.cmu-schedule-scroll>.shub-sec{margin-top:14px;margin-bottom:12px}.cmu-schedule-scroll .cmu-order{max-width:65%;text-align:right;line-height:1.5}

.cmu-category-filter{display:flex;gap:6px;overflow-x:auto;flex:0 0 auto;padding:8px 18px;border-bottom:1px solid var(--hairline);scrollbar-width:none}
.cmu-category-filter::-webkit-scrollbar{display:none}
/* 분류 칩 — 보기 도구와 같은 유리 알약, 선택 칸은 지금 선택을 뜻하는 붉은 렌즈 */
.cmu-category-filter button{flex:0 0 auto;min-height:34px;padding:0 13px;border:1px solid var(--glass-line);border-radius:999px;
  background:var(--glass-bg);
  box-shadow:var(--glass-hi);color:var(--muted);font-size:11.5px;font-weight:800;transition:color .14s}
@media(hover:hover){.cmu-category-filter button:not(.on):hover{color:var(--text)}}
.cmu-category-filter button.on{color:#fff;border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}
.cmu-category-filter button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.cmu-preview{margin:0;color:var(--muted);font-size:11.5px;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmu-meta{display:flex;flex-wrap:wrap;gap:4px 9px;color:var(--faint);font-size:11px}
.cmu-order{color:var(--faint);font-size:11px}
.cmu-more{display:block;margin:12px auto}
/* 상태 딱지 줄 — 공지·뉴스·분류를 한 줄에 나란히. 각 딱지는 글자 폭만, 줄은 본문과 같은 여백. */
.cmu-bands{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 20px 0}
.cmu-notice-band{padding:5px 10px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--text);font-size:11px;font-weight:850;font-style:normal}
.cmu-news-band{padding:5px 10px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850;font-style:normal}
.cmu-category-band{padding:4px 9px;font-size:11px}
.cmu-post-time{display:flex;flex-wrap:wrap;gap:3px 12px;margin:10px 20px 0;color:var(--faint);font-size:11px;line-height:1.5}
.cmu-post-time span:last-child:not(:first-child){color:var(--muted)}
.cmu-doc{margin:10px 20px;color:var(--text);font-size:13.5px;line-height:1.75;word-break:keep-all}
.cmu-doc p{margin:0 0 10px}
.cmu-doc h4{margin:16px 0 8px;font-size:15.5px;letter-spacing:-.02em}
.cmu-doc.event-description{padding:16px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface);white-space:pre-wrap}.cmu-doc.event-description h4{margin:0 0 8px;color:var(--text);font-size:12px}.cmu-doc.event-description p{margin:0;color:var(--muted);line-height:1.75}

.cmu-event-detail{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:start;gap:14px;margin:16px 20px;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--text);text-align:left}
.cmu-event-detail.closed{border-color:var(--border);background:var(--surface2);color:var(--muted)}
.cmu-event-link{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px;padding-top:12px;border-top:1px solid var(--hairline);color:var(--text);font-size:11px;font-weight:750}.cmu-event-link svg{width:16px;height:16px;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2}
@media(max-width:359px){.cmu-row.event{gap:11px;padding:16px}.cmu-schedule-search{padding-left:16px;padding-right:16px}.cmu-schedule-search .cmu-sort{gap:5px}.cmu-schedule-search .cmu-search-options summary{max-width:calc(100% - 174px);white-space:normal}.cmu-event-detail{margin:14px 16px;padding:14px;gap:11px}}

.cmu-doc blockquote{margin:10px 0;padding:2px 0 2px 12px;border-left:2px solid var(--border);color:var(--muted)}
.cmu-doc blockquote p{margin:4px 0}
.cmu-doc ul{margin:8px 0 10px;padding-left:20px}
.cmu-doc li{margin:3px 0}
.cmu-doc a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.cmu-spoiler{position:relative;display:inline;padding:1px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface3);font:inherit;text-align:left}
.cmu-spoiler .sp-cover{color:var(--faint);font-size:.85em}
.cmu-spoiler .sp-body{display:none}
.cmu-spoiler.revealed{border-color:rgba(255,207,92,.4);background:color-mix(in srgb,var(--gold) 10%,var(--surface2))}
.cmu-spoiler.revealed .sp-cover{display:none}
.cmu-spoiler.revealed .sp-body{display:inline}
.cmu-vote-row{display:flex;align-items:center;gap:12px;margin:4px 20px 6px}
.cmu-vote{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted);font-size:12px;font-weight:800;transition:.16s}
.cmu-vote svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.9}
.cmu-vote.on{color:var(--p5);border-color:rgba(228,3,43,.4);background:rgba(228,3,43,.07)}
.cmu-vote.on svg{fill:var(--p5);stroke:var(--p5)}
.cmu-cnum{color:var(--faint);font-size:11.5px}
.cmu-cempty{margin:4px 20px 14px} /* 인라인 스타일 금지 — 데스크탑 공통 컬럼 규칙(.scroll>*)의 auto 여백을 이겨 정렬이 어긋난다 */
.cmu-comment{display:flex;gap:9px;margin:0 20px;padding:10px 0;border-top:1px solid var(--hairline)}
.cmu-comment .avatar{width:30px;height:30px;flex:0 0 auto}
.cmu-comment.deleted p{margin:0;color:var(--faint);font-size:11.5px;font-style:italic}
.cmu-c-body{flex:1;min-width:0}
.cmu-c-head{display:flex;align-items:baseline;gap:7px}
.cmu-c-head b{font-size:12px}
.cmu-c-head span{color:var(--faint);font-size:11px}
.cmu-c-body>p{margin:3px 0 4px;color:var(--text);font-size:12.5px;line-height:1.55;word-break:break-word}
.cmu-replyto{color:var(--text);font-style:normal;font-weight:850}
.cmu-c-actions{display:flex;gap:2px}
.cmu-c-actions button{min-height:32px;padding:0 8px;margin-left:-8px;color:var(--faint);font-size:11px;font-weight:750}
.cmu-c-actions button:hover{color:var(--text)}
/* U16-A: 답글 묶음 — 한 개의 세로 연결선만 */
.cmu-replies{margin:0 20px 0 44px;padding-left:10px;border-left:1px solid var(--border)}
.cmu-replies .cmu-comment{margin:0;border-top:0;padding:7px 0}
.cmu-replies .cmu-comment .avatar{width:24px;height:24px}
.cmu-compose{border-top:1px solid var(--border);background:var(--bg2);padding:8px 12px calc(8px + env(safe-area-inset-bottom))}
.cmu-replying{display:flex;align-items:center;justify-content:space-between;padding:2px 6px 7px;color:var(--muted);font-size:11px;font-weight:750}
.cmu-replying button{width:32px;height:32px;display:grid;place-items:center;color:var(--faint)}
.cmu-replying button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.cmu-compose-row{display:flex;gap:7px}
.cmu-compose-row .input{flex:1;min-width:0;height:42px}
.cmu-send{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}
.cmu-send svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
/* 커뮤니티 단일 서식 편집기 — 화면에는 Markdown 원문·별도 미리보기를 노출하지 않는다. */
.cmu-composer{padding:6px 18px 24px}
.cmu-title{width:100%;height:46px;margin-bottom:9px;font-size:15px;font-weight:800}
.cmu-notice-opt{display:flex;align-items:center;gap:7px;margin:0 2px 9px;color:var(--muted);font-size:12px;font-weight:750}
.cmu-notice-opt em{margin-left:5px;color:var(--faint);font-size:11px;font-weight:700;font-style:normal}
.cmu-toolbar{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:7px}
.cmu-toolbar button{min-width:40px;height:40px;padding:0 9px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;transition:color .14s,border-color .14s,scale .2s var(--ease-press)}
@media(hover:hover){.cmu-toolbar button:hover{border-color:var(--glass-line-hi)}}
.cmu-toolbar button:active{scale:.95}.cmu-toolbar button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.cmu-palette{display:flex;gap:6px;margin:0 0 8px}
.cmu-palette[hidden]{display:none}
.cmu-palette button{width:36px;height:36px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);font-size:13px;font-weight:850}
html[data-theme=light] .cmu-row.notice{background:var(--matte-tint)}

/* ---- D13 기록 공개 정책 · U14-B 잠금 홈 ---- */
.grp-policy-card{margin:10px 18px 4px;padding:15px 16px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}.sh-body>.grp-policy-card{margin:0 0 12px}
.grp-policy-card b{font-size:14px}
.grp-policy-card p{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.6;word-break:keep-all}
.grp-policy-fields{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.grp-policy-fields span{font-size:11px;line-height:1.5}
.grp-policy-fields .ok{color:var(--text)}
.grp-policy-fields .no{color:var(--faint)}
.grp-policy-actions{display:flex;gap:8px;margin-top:13px}
.grp-policy-actions .btn{flex:1;min-height:44px}
.grp-lockrow .avatar{color:var(--faint)}
@media(hover:hover){.grp-lockrow.grp-chatrow:hover{background:var(--surface)}} /* 안내 줄은 누르는 줄 묶음에 끼어도 눌림 표시 없음 */
.grp-member-main.tap{margin:-8px 0;padding:8px 0;border-radius:10px;cursor:pointer;transition:background .14s}
.grp-member-main.tap:hover{background:var(--surface)}
.grp-member-main.tap:active{background:var(--surface2)}
.grp-member-main.tap:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.grp-member-acts{display:flex;gap:6px;flex:0 0 auto}
.grp-evchat{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;border:1px solid var(--accentDim);border-radius:10px;background:color-mix(in srgb,var(--accent) 8%,var(--surface2));color:var(--accent);font-size:12px;font-weight:800}
.grp-evchat svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.9}
/* U08-B: 방 상단 다음 일정 한 줄 + D14 읽기 전용 바 + U07-B 타입 토큰 */
.s-nextline{display:flex;align-items:center;gap:8px;min-height:44px;margin:0 12px 4px;padding:0 12px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);text-align:left} /* 누르는 줄 — 유리 */
.s-nextline .nl-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:800}
.s-nextline time{color:var(--info);font-family:var(--fn);font-size:10.5px}
.s-nextline svg{width:14px;height:14px;fill:none;stroke:var(--faint);stroke-width:2}
.chat-readonly{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 16px calc(0px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:12px;font-weight:750}
.chat-readonly svg{width:15px;height:15px;fill:none;stroke:var(--faint);stroke-width:1.9}
.chattype{margin-right:5px;padding:1px 5px;border:0;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:850;font-style:normal;vertical-align:1px}
.chattype.arch{color:var(--faint);border-color:var(--border)}
/* U10-A 공유 시트 행 · U18 업로드 격자 · 이미지 버블 */
.sh-share-row{display:flex;align-items:center;gap:11px;width:100%;min-height:56px;padding:9px 2px;border-top:1px solid var(--hairline);text-align:left}
.sh-share-row:first-of-type{border-top:0}
.sh-share-row>i{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;border:1px solid var(--border);border-radius:11px;background:var(--tag-bg);font-style:normal}
.sh-share-row>i svg{width:17px;height:17px;fill:none;stroke:var(--text);stroke-width:1.9}
.sh-share-row>span:not(.chev){flex:1;min-width:0}
.sh-share-row b{font-size:13px}
.sh-share-row p{margin:2px 0 0;color:var(--faint);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-share-row .chev svg{width:15px;height:15px;fill:none;stroke:var(--faint);stroke-width:2}
.upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.up-tile{position:relative;aspect-ratio:1;border-radius:11px;background-color:var(--surface3);background-size:cover;background-position:center;overflow:hidden;cursor:default}
.up-tile .up-ord{position:absolute;left:6px;top:6px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:var(--p5);color:var(--paper);font-family:var(--fn);font-size:9px;font-weight:800;font-style:normal}
.up-tile .up-state{position:absolute;inset:auto 0 0 0;padding:4px 6px;background:rgba(5,6,8,.62);color:#dfe6ee;font-size:9.5px;text-align:center}
.up-tile.ready .up-state{display:none}
.up-tile.ready::after{content:"";position:absolute;right:6px;top:6px;width:9px;height:9px;border-radius:50%;background:var(--success)}
.up-tile.failed{cursor:pointer;outline:1.5px solid var(--danger);outline-offset:-1.5px}
.up-tile.failed .up-state{background:color-mix(in srgb,var(--danger) 65%,#000);color:#fff}
.imgbubble{max-width:250px;border-radius:12px;overflow:hidden;border:1px solid var(--hairline);background:var(--surface2)}
.imgbubble img{display:block;width:100%;height:auto;max-height:330px;object-fit:cover}
.imgbundle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;width:min(216px,64vw)}
.imgbundle.many{grid-template-columns:repeat(3,minmax(0,1fr));width:min(240px,72vw)}
.imgbundle .imgbubble{width:100%;max-width:none;aspect-ratio:1;border-radius:7px}
.imgbundle .imgbubble img{width:100%;height:100%;max-height:none;object-fit:cover}
.imgbundle .imgbubble .img-dl{width:36px;height:36px}
.imgbundle .imgbubble .img-dl svg{width:16px;height:16px}

/* 커뮤니티 이미지 첨부·갤러리 */
.cmu-attach-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.cmu-attach-thumb{position:relative;width:52px;height:52px;border-radius:10px;background-color:var(--surface3);background-size:cover;background-position:center;border:1px solid var(--hairline)}
.cmu-attach-thumb button{position:absolute;right:-6px;top:-6px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:var(--surface3);border:1px solid var(--border);color:var(--muted)}
.cmu-attach-thumb button svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:2.4}
.cmu-attach-row small{color:var(--faint);font-size:10.5px}
.cmu-gallery{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 20px 12px}
.cmu-gallery img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px;border:1px solid var(--hairline);display:block;background:var(--surface2)} /* 비율 고정 — 로딩 전에도 자리를 잡아 글이 밀리지 않는다 */

/* D07 초대 투표 카드 — 기준·마감·현재 표를 숨기지 않는다 */
.invite-vote-card{margin:6px 12px;padding:12px 13px;border:1px solid color-mix(in srgb,var(--gold) 40%,var(--border));border-left:3px solid var(--gold);border-radius:13px;background:color-mix(in srgb,var(--gold) 6%,var(--surface))}
.invite-vote-card .ivc-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.invite-vote-card .ivc-head b{font-size:13px}
.invite-vote-card time{color:var(--faint);font-family:var(--fn);font-size:10px}
.invite-vote-card p{margin:5px 0 9px;color:var(--muted);font-size:11.5px}

/* 접근성 — 보이는 포커스 (검토 P1) */
button:focus-visible,a:focus-visible,[tabindex]:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
[tabindex="-1"]:focus-visible,.sheet:focus-visible,.sheet:focus{outline:none} /* 열림 직후 초점 이동용 틀 — 윤곽을 그리면 시트·모달 전체에 선이 생긴다 */
.input:focus-visible,textarea.input:focus-visible,select.input:focus-visible{outline:none} /* 입력칸은 테두리가 초점을 표시 — 윤곽까지 그리면 두 겹 */
.searchbar input:focus-visible{outline:none} /* 검색창 자체가 포커스를 표시 — 안쪽 링까지 그리면 테두리가 두 겹 */
#app-main:focus{outline:none}
/* 이미지 라이트박스 */
.img-lightbox{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:rgba(3,4,6,.9);backdrop-filter:blur(4px);cursor:zoom-out}
.img-lightbox img{max-width:94vw;max-height:92vh;border-radius:10px}
.img-lightbox .ilb-close{position:absolute;right:16px;top:16px;width:40px;height:40px;display:grid;place-items:center;border-radius:10px;background:var(--surface2);border:1px solid var(--border);color:var(--text)}
.img-lightbox .ilb-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
/* 보관 대화 접기 */
.arch-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:0 18px;margin-top:8px;border-top:1px solid var(--hairline);color:var(--faint);font-size:12px;font-weight:750;text-align:left}
.arch-toggle svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.arch-toggle svg:last-child{margin-left:auto;transition:transform .16s}
.arch-toggle[aria-expanded=true] svg:last-child{transform:rotate(180deg)}
/* 모임 카드 — 자동 포스터 커버 */
.gcard.has-poster{flex-direction:row;gap:12px;align-items:stretch}
.gc-poster{flex:0 0 auto;width:56px;object-fit:cover;border-radius:10px;background:var(--surface3)}
.gc-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}

/* 커뮤니티 테마 태그 칩 */
.cmu-theme-tag-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px}
.cmu-theme-tag-row .tshare-search{flex:1 1 200px;min-width:200px} /* 칩이 늘면 검색칸은 다음 줄로 */
.cmu-theme-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 11px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px;font-weight:800}
.cmu-theme-chip svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.cmu-theme-chip>svg:first-child{color:var(--muted)}
.cmu-theme-chip button{display:grid;place-items:center;width:22px;height:22px;color:var(--muted)}
.cmu-theme-chip.linked{margin:0}
.cmu-theme-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 20px 0}
.cmu-theme-full{color:var(--faint);font-size:11px}
.cmu-meta-theme{color:var(--muted)}
/* 테마 이미지 넣기 시트 — 검색 결과 행(포스터 + 제목·매장) */
.cmu-ti-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.cmu-ti-list .hint{padding:14px 2px;text-align:center}
.cmu-ti-row{display:flex;align-items:center;gap:10px;width:100%;min-height:62px;padding:7px 10px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface2);text-align:left}
.cmu-ti-row:disabled{opacity:.5}
.cmu-ti-poster{display:block;flex:0 0 auto;width:38px;height:48px;border-radius:7px;background-color:var(--surface3);background-position:center;background-size:cover;overflow:hidden}
.cmu-ti-poster .ph{width:100%;height:100%;font-size:8px}
.cmu-ti-tx{display:flex;flex:1;min-width:0;flex-direction:column;gap:3px}
.cmu-ti-tx b,.cmu-ti-tx small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmu-ti-tx b{font-size:12.5px}
.cmu-ti-tx small{color:var(--faint);font-size:10.5px}
.cmu-ti-row>i{display:grid;place-items:center;flex:0 0 auto}
.cmu-ti-row>i svg{width:16px;height:16px;fill:none;stroke:var(--accent);stroke-width:2}
/* 기록 스냅샷 카드 — 메타 줄바꿈 허용(2줄 클램프) + 결과 칩. 복사는 카드 탭 → 상세 시트에서 */
.tc-meta.wrap{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35}
.tc-result{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800}
.tc-result.ok{color:var(--success)}
.tc-result.no{color:var(--danger)}
/* 상세 시트 평점 행 — 등급 글리프와 숫자 나란히 */
.evd-facts b.evd-rate{display:inline-flex;align-items:center;gap:4px;color:var(--gold);font-family:var(--fn)}
/* 채팅 기록 공유 픽커 — comp-theme-row 재사용 행의 우측 진입 표식 */
.comp-theme-row .rsh-go{display:grid;place-items:center;width:22px;height:22px;color:var(--faint)}
.comp-theme-row .rsh-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}

/* 미니 빈 상태 — 섹션 안 '없음' 안내는 중앙 정렬 박스로 (좌측 쏠림 방지) */
.mini-empty{margin:6px 18px;padding:20px 16px;border:1px solid var(--border);border-radius:16px;background:var(--matte);color:var(--faint);font-size:12px;text-align:center}
/* 공유 시트 행 — 설명 제거 후 수직 중앙 유지 */
.sh-share-row{min-height:52px}
.sh-share-row b{font-size:13.5px}

/* Phase 2 채팅 도구 — 답장 인용·멘션·핀·검색 */
.mquote{display:flex;flex-direction:column;gap:1px;width:100%;margin:0 0 6px;padding:6px 9px;border-left:2px solid color-mix(in srgb,currentColor 38%,transparent);border-radius:6px;background:color-mix(in srgb,currentColor 7%,transparent);text-align:left} /* 인용 — 말풍선 글자색을 따르는 중립 띠 */
.mquote b{font-size:11px;color:inherit}
.mquote span{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg.me .mquote{border-left-color:rgba(255,255,255,.6);background:rgba(255,255,255,.12)}
.msg.me .mquote b{color:rgba(255,255,255,.85)}
.msg.me .mquote span{color:rgba(255,255,255,.75)}
.mention{font-style:normal;font-weight:850;color:var(--text)}
.mention.me{padding:0 3px;border-radius:5px;background:var(--tag-bg);color:var(--text)}
.msg.me .mention{color:#fff;text-decoration:underline;text-underline-offset:2px}
.bubble.flash,.tcard.flash,.msg.flash .bubble,.msg.flash .tcard,.msg.flash .imgbubble,.chatsys.flash{outline:2px solid var(--focus);outline-offset:2px;transition:outline-color .3s}
.pinbar{display:flex;align-items:center;gap:8px;min-height:40px;margin:0 12px 4px;padding:0 12px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);box-shadow:var(--glass-hi);text-align:left}
.pinbar svg{width:14px;height:14px;flex:0 0 auto;fill:none;stroke:var(--muted);stroke-width:1.9}
.pinbar span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--muted)}
.pinbar b{flex:0 0 auto;color:var(--faint);font-family:var(--fn);font-size:10px}
.pin-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-top:1px solid var(--hairline)}
.pin-row:first-child{border-top:0}
.pin-jump{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left}
.pin-jump b{font-size:11px;color:var(--muted)}
.pin-jump span{font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mention-box{display:flex;flex-direction:column;border-top:1px solid var(--border);background:var(--surface);max-height:200px;overflow:auto}
.mention-box button{display:flex;align-items:center;gap:9px;min-height:44px;padding:0 14px;text-align:left}
.mention-box button:hover{background:var(--surface2)}
.mention-box button span{font-size:13px;font-weight:750}
.replybar span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 모임 일정 — 예약 가능 시간 추천 칩 */
.evt-slots{display:flex;flex-wrap:wrap;gap:6px}
.evt-slot{min-height:36px;padding:0 12px;border:1px solid var(--accentDim);border-radius:9px;background:color-mix(in srgb,var(--accent) 7%,var(--surface2));color:var(--accent);font-family:var(--fn);font-size:12px;font-weight:800}
.evt-slot.on{background:var(--accent);color:var(--bg)}
.evt-slot-none{color:var(--faint);font-size:11.5px;font-style:normal}

/* 공유 카드 상세 시트 — 일정·스냅샷 공용 */
.evd-kicker{margin-top:3px;color:var(--faint);font-size:11px;font-weight:750}
.event-detail-sheet{max-width:100%;overflow:hidden}.event-detail-sheet .sh-head>div{min-width:0}.event-detail-sheet .sh-head .ttl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-detail-sheet .sh-body{min-width:0;overflow-x:clip}.event-detail-sheet .sh-body>*{min-width:0;max-width:100%}
.evd-hero{display:grid;grid-template-columns:72px minmax(0,1fr);gap:13px;align-items:start;min-width:0}
.evd-hero .tc-poster{width:72px;height:96px;border-radius:11px}
.evd-calendar-mark{width:52px;height:52px;display:grid;place-items:center;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint);color:var(--info)}.evd-calendar-mark svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8}.evd-hero.multi{grid-template-columns:52px minmax(0,1fr)}
.evd-facts{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px;padding-top:2px}
.evd-facts>div{display:flex;flex-direction:column;gap:2px}
.evd-facts small{color:var(--faint);font-size:10.5px;font-weight:750}
.evd-facts b{min-width:0;font-size:13.5px;letter-spacing:-.01em;overflow-wrap:anywhere}
.evd-when{min-width:0}.evd-when>span{display:flex;min-width:0;flex-direction:column;gap:2px}.evd-when>span>small{color:var(--faint);font-size:11px;font-weight:800}.evd-when>span>b{line-height:1.35;word-break:keep-all}.evd-when>span>em{color:var(--info);font-family:var(--fn);font-size:10.5px;font-style:normal;font-weight:800}.evd-when.range{display:grid;grid-template-columns:minmax(0,1fr) 16px minmax(0,1fr);align-items:center;gap:5px}.evd-when.range>i{color:var(--faint);font-size:11px;font-style:normal;text-align:center}
.evd-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.evd-actions .btn{flex:1;min-height:44px}
.evd-actions .evd-saved{color:var(--success)}
.event-description{margin:12px 0 4px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--matte-tint)}.event-description>b{display:block;margin-bottom:5px;color:var(--muted);font-size:11px}.event-description>p{margin:0;color:var(--text);font-size:12.5px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.event-detail-sheet:not([data-event-status="open"]) .evd-calendar-mark{border-color:var(--border);background:var(--surface3);color:var(--faint)}.event-detail-sheet:not([data-event-status="open"]) .event-description>b{color:var(--muted)}
/* 모임 일정을 내 일정에 저장하기 전, 기존 일정 적용과 신규 생성을 그대로 보여 주는 확인창. */
.event-save-preview-sheet .sh-head{align-items:flex-start}.event-save-preview-sheet .sh-head .sub{margin-top:4px;color:var(--muted);font-size:10.5px;line-height:1.4}.event-save-preview-sheet .sh-body{padding-top:7px}.event-save-preview-list{display:grid;gap:8px;max-height:min(52vh,440px);overflow-y:auto}.event-save-preview-row{padding:11px 12px;border:1px solid var(--border);border-left:3px solid var(--gold);border-radius:11px;background:var(--surface2)}.event-save-preview-row.apply{border-left-color:var(--accent)}.event-save-preview-when{margin-bottom:8px;color:var(--muted);font-size:9.5px;font-weight:750}.event-save-preview-change{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);align-items:center;gap:6px}.event-save-preview-change>span,.event-save-preview-new{min-width:0;display:flex;flex-direction:column;gap:3px}.event-save-preview-change small,.event-save-preview-new small{color:var(--faint);font-size:8.5px}.event-save-preview-change b,.event-save-preview-new b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:11.5px}.event-save-preview-change>i{color:var(--accent);font-size:13px;font-style:normal;text-align:center}.event-save-preview-row>p{margin:7px 0 0;color:var(--muted);font-size:9.5px;line-height:1.4}.event-save-preview-note{margin:10px 1px 0;padding:9px 10px;border-radius:9px;background:color-mix(in srgb,var(--accent) 7%,var(--surface2));color:var(--muted);font-size:9.5px;line-height:1.45}.event-save-preview-sheet .confirm-actions{margin-top:13px}
.event-seat-section{align-items:baseline;margin-top:13px!important}.event-seat-section>span{color:var(--faint);font-size:11px}.event-seat-row{padding-left:2px!important;padding-right:2px!important}.resp-chip.reserved{color:var(--text);border:1px solid var(--border);background:var(--tag-bg)}.event-seat-manage svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
@media(max-width:399px){.event-detail-sheet .sh-head .ttl{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.evd-when.range{grid-template-columns:minmax(0,1fr);gap:4px}.evd-when.range>i{justify-self:start;margin-left:7px;transform:rotate(90deg)}.evd-hero{grid-template-columns:64px minmax(0,1fr);gap:11px}.evd-hero .tc-poster{width:64px;height:86px}.evd-hero.multi{grid-template-columns:44px minmax(0,1fr)}.evd-hero.multi .evd-calendar-mark{width:44px;height:44px}.evd-tlrow{grid-template-columns:42px max-content minmax(0,1fr) auto;gap:6px}.evd-tlrow i{padding-left:6px;padding-right:6px}.evd-tlrow .evd-duration{font-size:9px}}
@media(max-width:999px){.event-detail-sheet .evd-actions .btn{flex:1 1 calc(50% - 4px);min-width:0;height:auto;min-height:44px;padding:7px 8px;gap:5px;font-size:12px;line-height:1.25;white-space:normal;word-break:keep-all;overflow-wrap:normal;text-align:center}.event-detail-sheet .evd-actions .btn>span{min-width:0}.event-detail-sheet .evd-actions .btn>svg{width:15px;height:15px;flex:none}}
/* 모임 일정 테마 정보 — 달력 날짜 팝업처럼 일정 안의 테마를 순서대로 고른 뒤 상세로 이동 */
.event-theme-info-sheet{max-height:min(86vh,760px)}.event-theme-info-sheet .sh-head{align-items:flex-start}.event-theme-info-sheet .sh-head>div{display:flex;min-width:0;flex-direction:column;gap:2px}.event-theme-info-sheet .ttl .n{color:var(--accent);font-family:var(--fn)}
.event-theme-info-kicker{overflow:hidden;color:var(--muted);font-size:9.5px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.event-theme-info-list{display:grid;gap:9px}
.event-theme-info-card{display:grid;grid-template-columns:62px minmax(0,1fr) 22px;align-items:center;gap:11px;width:100%;min-height:100px;padding:9px;border:1px solid var(--border);border-radius:15px;background:var(--surface2);color:var(--text);text-align:left}
.event-theme-info-card:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.event-theme-info-poster{display:grid;width:62px;aspect-ratio:3/4;place-items:center;overflow:hidden;border:1px solid var(--hairline);border-radius:10px;background:var(--surface);background-position:center;background-size:cover}.event-theme-info-poster .ph{width:100%;height:100%}
.event-theme-info-copy{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:3px}.event-theme-info-copy>small{color:var(--accent);font-family:var(--fn);font-size:8.5px;font-weight:850}.event-theme-info-copy>b,.event-theme-info-copy>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-theme-info-copy>b{font-size:14px;letter-spacing:-.02em}.event-theme-info-copy>span{color:var(--muted);font-size:9.5px}
.event-theme-info-facts{display:flex!important;flex-wrap:wrap;gap:5px;margin-top:4px;overflow:visible!important;white-space:normal!important}.event-theme-info-facts i{padding:3px 6px;border-radius:6px;background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--muted);font-size:8.5px;font-style:normal;font-weight:750;white-space:nowrap}.event-theme-info-go{display:grid;place-items:center;color:var(--faint)}.event-theme-info-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
.event-theme-info-note{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:10px 11px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface2)}.event-theme-info-note span{color:var(--muted);font-size:9px;line-height:1.45}.event-theme-info-note button{flex:0 0 auto;color:var(--accent);font-size:9px;font-weight:850}
.chat-plan-detail-sheet .sh-body{display:grid;gap:14px}
.chat-plan-snapshot-head{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--matte-tint)}
.chat-plan-snapshot-head>span{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}.chat-plan-snapshot-head>span svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9}.chat-plan-snapshot-head>div{display:flex;flex-direction:column;gap:3px}.chat-plan-snapshot-head b{font-size:14px}.chat-plan-snapshot-head small{color:var(--muted);font-size:11px;font-weight:750}
.chat-plan-snapshot-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.chat-plan-snapshot-actions .btn{min-width:0;height:44px;padding:0 9px;font-size:11.5px}.chat-plan-snapshot-actions .btn svg{width:16px;height:16px;fill:none;stroke:currentColor}.chat-plan-snapshot-actions .btn:disabled{opacity:.48}
.chat-plan-snapshot-note{margin:0;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface2);color:var(--muted);font-size:11.5px;line-height:1.6;white-space:pre-wrap}.chat-plan-detail-sheet .plan-basic-days{gap:12px}.chat-plan-detail-sheet .plan-basic-day{box-shadow:none}.chat-plan-snapshot-legacy{padding:20px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface2);text-align:center}.chat-plan-snapshot-legacy b{font-size:13px}.chat-plan-snapshot-legacy p{margin:5px 0 0;color:var(--muted);font-size:11px}.chat-plan-snapshot-hint{margin:0!important}
html[data-theme=light] .chat-plan-detail-sheet .plan-basic-day{box-shadow:none}
.recsheet-group{margin-bottom:13px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.recsheet-group-head{display:flex;align-items:center;gap:9px}.recsheet-group-head>img,.recsheet-group-head>span{width:32px;height:32px;border-radius:10px;object-fit:cover;display:grid;place-items:center;background:var(--surface)}.recsheet-group-head>span svg{width:17px;height:17px}
.recsheet-group-head>div{min-width:0;display:grid;grid-template-columns:1fr auto;gap:1px 8px;flex:1}.recsheet-group-head small{grid-column:1/-1;color:var(--faint);font-size:11px;font-weight:700}.recsheet-group-head b{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recsheet-group-head em{color:var(--muted);font-size:9.5px;font-style:normal}
.recsheet-group-acts{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.recsheet-group-acts span{padding:3px 8px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700}
.recsheet-group-people{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}.recsheet-group-people small{color:var(--muted);font-size:11px;font-weight:700}.recsheet-group-people>div{display:flex}.recsheet-group-people .avatar{width:25px;height:25px;margin-left:-5px;border:2px solid var(--surface2);font-size:8px}.recsheet-group>p{margin:9px 0 0;color:var(--faint);font-size:9px;line-height:1.45}
#evdRsvp{margin-top:12px}

/* ===== 노브 슬라이더 세그먼트(.kseg) — 기록 3상(.tri) 문법의 소셜판 =====
   참여/찬성=틸 · 고민=골드 · 불참/반대=크림슨. 선택 전(unset)은 노브 숨김. */
.kseg{position:relative;display:flex;height:52px;padding:3px;border:1px solid var(--glass-line);border-radius:16px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.kseg .kknob{position:absolute;top:3px;bottom:3px;left:3px;width:calc((100% - 6px)/var(--kn,3));border-radius:13px;background:linear-gradient(180deg,color-mix(in srgb,#fff 11%,var(--surface3)),color-mix(in srgb,#fff 5%,var(--surface3)));border:0;transition:transform .3s var(--ease-out),background .24s,box-shadow .24s,opacity .18s;transform:translateX(calc(var(--ki,0)*100%))}
.kseg>button:active{transform:scale(.95)}
.kseg>button{transition:color .18s,transform .12s}
.kseg.unset .kknob{opacity:0}
.kseg>button{position:relative;z-index:1;flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:clamp(4px,1.5vw,6px);color:var(--faint);font-size:clamp(10.5px,3.21vw,12.5px);white-space:nowrap;font-weight:800;letter-spacing:-.01em;transition:color .18s}
.kseg>button svg{width:14px;height:14px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2.2}
.kseg>button.on{color:var(--paper)}
.kseg[data-sel=join] .kknob,.kseg[data-sel=yes] .kknob{background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,0) 55%),linear-gradient(180deg,color-mix(in srgb,var(--success) 90%,#fff),color-mix(in srgb,var(--success) 94%,#000));border:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 2px 6px -2px color-mix(in srgb,var(--success) 35%,transparent)}
.kseg[data-sel=maybe] .kknob{background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,0) 55%),linear-gradient(180deg,color-mix(in srgb,#C99A2E 90%,#fff),color-mix(in srgb,#C99A2E 94%,#000));border:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 2px 6px -2px color-mix(in srgb,#C99A2E 35%,transparent)}
.kseg[data-sel=no] .kknob{background:var(--lens);border:none;box-shadow:var(--lens-sh)}
html[data-theme=light] .kseg{background:#E7ECF2}
/* 응답 컬러 칩 — 명단·카운트 */
.resp-chip{flex:0 0 auto;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:850}
.resp-chip.join{color:var(--accent);border:1px solid var(--accentDim);background:color-mix(in srgb,var(--accent) 9%,transparent)}
.resp-chip.maybe{color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);background:color-mix(in srgb,var(--gold) 9%,transparent)}
.resp-chip.no{color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 40%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent)}
/* 모임 아이콘 */
.grp-icon{width:40px;height:40px;flex:0 0 auto;border-radius:12px;object-fit:cover;border:1px solid var(--hairline)}
.gc-poster.icon{height:56px;width:56px;border-radius:12px}

/* 낙관적 전송 — 서버 확정 전 임시 버블 */
.msg .bubble.pending{opacity:.62}

/* 작성 상단은 본문 스크롤의 형제가 되어 키보드·캐럿 자동 스크롤에도 화면에서 밀리지 않는다. */
.cmu-compose-chrome{position:relative;z-index:6;flex:0 0 auto;padding:6px 18px 7px;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--bg) 97%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.cmu-compose-chrome .cmu-title{margin-bottom:6px}
.cmu-category-select{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;margin-bottom:6px;color:var(--muted);font-size:11px;font-weight:800}.cmu-category-select select{height:40px;min-width:0;color:var(--text);background-color:var(--surface2)}
.cmu-format-dock{position:relative;z-index:1;margin:0;padding:0;background:transparent}
.cmu-toolbar{display:grid;grid-template-columns:repeat(5,minmax(44px,1fr));gap:6px;margin:0;padding:0;overflow:visible}
.cmu-toolbar.has-photo{grid-template-columns:repeat(6,minmax(44px,1fr))} /* 사진·테마 이미지 도구까지 11개 — 6+5 두 줄 */
.cmu-toolbar::-webkit-scrollbar{display:none}
.cmu-toolbar button{min-width:0;width:100%;height:44px;border-radius:999px;font-size:14px}
.cmu-toolbar button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.cmu-toolbar button[aria-pressed="true"],.cmu-toolbar button.on{border-color:transparent;background:var(--lens);color:#fff;box-shadow:var(--lens-sh)}
.cmu-toolbar button[data-md=color].mc-red{color:#ef5a60}.cmu-toolbar button[data-md=color].mc-amber{color:#e7a13d}.cmu-toolbar button[data-md=color].mc-green{color:#54b467}.cmu-toolbar button[data-md=color].mc-blue{color:#54a8e0}.cmu-toolbar button[data-md=color].mc-violet{color:#9d7fe0}.cmu-toolbar button[data-md=color].mc-pink{color:#e06aab}
html[data-theme=light] .cmu-toolbar button[data-md=color].mc-red{color:#c9343a}html[data-theme=light] .cmu-toolbar button[data-md=color].mc-amber{color:#a96a10}html[data-theme=light] .cmu-toolbar button[data-md=color].mc-green{color:#2c7d42}html[data-theme=light] .cmu-toolbar button[data-md=color].mc-blue{color:#20689d}html[data-theme=light] .cmu-toolbar button[data-md=color].mc-violet{color:#6a44b8}html[data-theme=light] .cmu-toolbar button[data-md=color].mc-pink{color:#b03578}
.cmu-toolbar .cmu-photo-tool{display:flex;align-items:center;justify-content:center;gap:5px;font-size:11px;font-weight:850} /* 사진·테마 이미지 — 다른 도구와 같은 유리 */
.cmu-size-glyph{display:inline-flex;align-items:flex-end;gap:2px;font-weight:900}.cmu-size-glyph small{font-family:var(--fn);font-size:11px;line-height:1;color:currentColor}
.cmu-palette{position:absolute;right:0;top:calc(100% + 6px);z-index:8;max-width:calc(100vw - 36px);padding:6px;margin:0;border:1px solid var(--border);border-radius:12px;background:var(--bg2);box-shadow:0 12px 30px rgba(0,0,0,.32);overflow-x:auto}
.cmu-palette button{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:2px}
.cmu-palette button[aria-pressed="true"],.cmu-palette button.on{border-color:var(--p5);box-shadow:inset 0 0 0 1px var(--p5)}
.cmu-size-palette button{width:38px}.cmu-size-palette small{align-self:flex-end;font-family:var(--fn);font-size:11px;color:var(--faint)}
.cmu-size-palette button.cmu-z1{font-size:11.1px}.cmu-size-palette button.cmu-z2{font-size:13.05px}.cmu-size-palette button.cmu-z3{font-size:15px}.cmu-size-palette button.cmu-z4{font-size:17.4px}.cmu-size-palette button.cmu-z5{font-size:20.4px}.cmu-size-palette button.cmu-z6{font-size:24.3px}
.cmu-z1{font-size:.74em}.cmu-z2{font-size:.87em}.cmu-z3{font-size:1em}.cmu-z4{font-size:1.16em}.cmu-z5{font-size:1.36em}.cmu-z6{font-size:1.62em}
.cmu-editor{position:relative;min-height:100%;padding:14px;border:1px solid var(--border);border-radius:12px;outline:none;background:var(--surface2);color:var(--text);caret-color:var(--text);font-size:15px;line-height:1.75;text-align:start;word-break:break-word;overflow-wrap:anywhere}
.cmu-editor:focus{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 9%,transparent)}
.cmu-editor.empty::before{content:attr(data-placeholder);position:absolute;left:14px;top:14px;color:var(--faint);pointer-events:none}
.cmu-editor.empty:focus::before{display:none}
.cmu-editor>[data-cmu-block]{min-height:1.75em;white-space:pre-wrap}
.cmu-editor>[data-cmu-block=h2]{margin:6px 0 4px;color:var(--text);font-size:18px;font-weight:900;line-height:1.5;letter-spacing:-.02em}
.cmu-editor>[data-cmu-block=quote]{margin:5px 0;padding:1px 0 1px 12px;border-left:2px solid var(--border);color:var(--muted)}
.cmu-editor>[data-cmu-block=list]{position:relative;padding-left:18px}
.cmu-editor>[data-cmu-block=list]::before{content:"•";position:absolute;left:3px;color:var(--p5);font-weight:900}
.cmu-editor strong{font-weight:900}.cmu-editor em{font-style:italic}
.cmu-editor .cmu-z1{font-size:11.1px}.cmu-editor .cmu-z2{font-size:13.05px}.cmu-editor .cmu-z3{font-size:15px}.cmu-editor .cmu-z4{font-size:17.4px}.cmu-editor .cmu-z5{font-size:20.4px}.cmu-editor .cmu-z6{font-size:24.3px}
.cmu-editor .cmu-color-default{color:var(--text)}.cmu-editor [data-cmu-spoiler="0"]{padding:0;background:none;text-decoration:none}
.cmu-editor [data-cmu-caret]{font-weight:normal;font-style:normal;font-size:15px;color:var(--text);text-decoration:none;background:var(--surface2)}
.cmu-editor [data-cmu-caret][data-cmu-b="1"]{font-weight:900}.cmu-editor [data-cmu-caret][data-cmu-i="1"]{font-style:italic}
.cmu-editor [data-cmu-caret][data-cmu-size="1"]{font-size:11.1px}.cmu-editor [data-cmu-caret][data-cmu-size="2"]{font-size:13.05px}.cmu-editor [data-cmu-caret][data-cmu-size="3"]{font-size:15px}.cmu-editor [data-cmu-caret][data-cmu-size="4"]{font-size:17.4px}.cmu-editor [data-cmu-caret][data-cmu-size="5"]{font-size:20.4px}.cmu-editor [data-cmu-caret][data-cmu-size="6"]{font-size:24.3px}
.cmu-editor [data-cmu-caret][data-cmu-color="red"]{color:#ef5a60}.cmu-editor [data-cmu-caret][data-cmu-color="amber"]{color:#e7a13d}.cmu-editor [data-cmu-caret][data-cmu-color="green"]{color:#54b467}.cmu-editor [data-cmu-caret][data-cmu-color="blue"]{color:#54a8e0}.cmu-editor [data-cmu-caret][data-cmu-color="violet"]{color:#9d7fe0}.cmu-editor [data-cmu-caret][data-cmu-color="pink"]{color:#e06aab}
html[data-theme=light] .cmu-editor [data-cmu-caret][data-cmu-color="red"]{color:#c9343a}html[data-theme=light] .cmu-editor [data-cmu-caret][data-cmu-color="amber"]{color:#a96a10}html[data-theme=light] .cmu-editor [data-cmu-caret][data-cmu-color="green"]{color:#2c7d42}html[data-theme=light] .cmu-editor [data-cmu-caret][data-cmu-color="blue"]{color:#20689d}html[data-theme=light] .cmu-editor [data-cmu-caret][data-cmu-color="violet"]{color:#6a44b8}html[data-theme=light] .cmu-editor [data-cmu-caret][data-cmu-color="pink"]{color:#b03578}
.cmu-editor [data-cmu-caret][data-cmu-s="1"]{padding:1px 4px;border-radius:4px;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--gold) 18%,transparent) 0 4px,color-mix(in srgb,var(--gold) 8%,transparent) 4px 8px);text-decoration:underline dotted color-mix(in srgb,var(--gold) 65%,transparent);text-underline-offset:3px}
.cmu-editor a[data-cmu-link]{color:var(--accent);text-decoration:underline;text-underline-offset:2px;pointer-events:none}
.cmu-editor [data-cmu-spoiler]{padding:1px 4px;border-radius:4px;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--gold) 18%,transparent) 0 4px,color-mix(in srgb,var(--gold) 8%,transparent) 4px 8px);text-decoration:underline dotted color-mix(in srgb,var(--gold) 65%,transparent);text-underline-offset:3px}
/* 편집면의 본문 사진 — 액자가 사진 크기를 따라간다. 전폭 cover 였을 땐 세로 포스터가 가로 띠로 잘려 보였다(데스크탑에서 특히). */
.cmu-editor>[data-cmu-block=image]{min-height:0;width:max-content;max-width:100%;margin:10px 0;padding:0;border:1px solid var(--hairline);border-radius:12px;overflow:hidden;background:var(--surface3);white-space:normal}
.cmu-editor>[data-cmu-block=image] img{display:block;width:auto;max-width:100%;height:auto;max-height:360px;object-fit:contain}.cmu-editor>[data-cmu-block=image] figcaption{padding:5px 9px;color:var(--faint);font-size:11px}
.cmu-doc-image{margin:12px 0}
/* 원본보다 키우지 않는다 — width:100% 면 세로 포스터가 좁은 폭에 맞춰 늘어나며 좌우 레터박스가 생겼다(데스크탑에서 특히). */
.cmu-doc-image img{display:block;width:auto;max-width:100%;height:auto;max-height:560px;object-fit:contain;border:1px solid var(--hairline);border-radius:12px;background:var(--surface2)}
.cmu-composer-appbar>div:nth-child(2){flex:1}.cmu-composer-appbar .appbar-actions{gap:6px}.cmu-composer-appbar .btn.sm{padding:0 11px;white-space:nowrap}
@media(max-width:359px){.cmu-composer-appbar{gap:8px;padding-left:12px;padding-right:12px}.cmu-composer-appbar .btn.sm{padding:0 9px;font-size:12px}}
.cmu-composer{padding:10px 18px 32px}
html[data-theme=light] .cmu-toolbar button[aria-pressed="true"],html[data-theme=light] .cmu-toolbar button.on{color:#fff;box-shadow:none}
.cmu-category-sheet .sh-head .sub{margin-top:3px;color:var(--muted);font-size:11px}.cmu-category-sheet .sh-body{display:flex;flex-direction:column;gap:10px}.cmu-category-edit{display:flex;flex-direction:column;gap:7px;padding:12px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface2)}.cmu-category-edit>div{display:flex;align-items:center;justify-content:space-between}.cmu-category-edit label{color:var(--muted);font-size:11px;font-weight:800}.cmu-category-edit label span{color:var(--faint);font-weight:650}.cmu-category-edit>div button{width:34px;height:34px;display:grid;place-items:center;color:var(--faint)}.cmu-category-edit>div button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.cmu-category-template-open{width:100%;min-height:48px;display:grid;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);text-align:left}.cmu-category-template-open>span{min-width:0;overflow:hidden;color:var(--muted);font-size:11px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.cmu-category-template-open>b{color:var(--accent);font-size:10px}.cmu-category-template-open>svg{width:15px;height:15px;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2}.cmu-category-add,.cmu-category-save{width:100%}.cmu-category-add svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.cmu-template-editor-view{display:flex;flex-direction:column;gap:10px}.cmu-template-editor-head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px}.cmu-template-editor-head>button{height:38px;display:flex;align-items:center;gap:5px;padding:0 9px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);color:var(--muted);font-size:10px;font-weight:800}.cmu-template-editor-head>button svg{width:15px;height:15px;fill:none;stroke:currentColor}.cmu-template-editor-head>div{min-width:0;display:flex;flex-direction:column;gap:2px}.cmu-template-editor-head b{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.cmu-template-editor-head span{color:var(--faint);font-size:9px}.cmu-template-editor-view .cmu-editor{min-height:220px}.cmu-template-done{width:100%}

/* 링크 — 채팅 버블·댓글 (내 버블은 크림슨 배경 → 흰 링크) */
.bubble a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;word-break:break-all}
.msg.me .bubble a{color:#fff;text-decoration-color:rgba(255,255,255,.7)}
.cmu-c-body a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;word-break:break-all}

/* 초대 코드 관리 */
.code-row{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 2px;border-top:1px solid var(--hairline)}
.code-row:first-child{border-top:0}
.code-hint{flex:0 0 auto;font-family:var(--fn);font-size:14px;letter-spacing:.14em;color:var(--accent)}
.code-meta{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--faint);font-size:11px}

/* READ — 더블체크 아이콘 (틸=연결, 슬랜트 HUD 문법. 구 텍스트 배지 스타일 대체) */
.readok{display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:0;background:none;color:var(--muted);transform:none;letter-spacing:0;filter:none}
.readok svg{width:17px;height:13px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
html[data-theme=light] .readok{filter:none}
/* 역할 아이콘 — 모임장=골드 왕관, 관리자=틸 방패 */
.role-ic{display:inline-grid;place-items:center;width:18px;height:18px;margin-left:3px;vertical-align:-3.5px;font-style:normal}
.role-ic svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.role-ic.owner{color:var(--text)}
.role-ic.admin{color:var(--muted)} /* 모임장 왕관·관리자 방패 — 모양으로 구분, 골드·청록은 평점·데이터 색에만 */
html[data-theme=light] .role-ic.owner{filter:none}

/* 리액트바 v2 — 기본은 [반응]+도구, 반응 탭 시 이모지 행 (모바일 폭 초과 방지) */
.reactbar .remoji svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9}
.reactbar{max-width:calc(100vw - 48px)}

/* 소셜 대개편 인트로 — 실제 UI 축소 목업으로 '보여주기' (설명 최소) */
.soc-intro-sheet{width:min(440px,100vw)}
.soc-mock{display:flex;flex-direction:column;gap:9px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--bg)}
.soc-mock-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:7px}
.soc-mock-quick span{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:10px 11px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface2)}
.soc-mock-quick svg{width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:1.9}
.soc-mock-quick b{font-size:11px}
.soc-mock-quick .unreadb{position:absolute;right:7px;top:7px;font-style:normal}
.soc-mock-quick em{position:absolute;right:7px;top:8px;padding:2px 5px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font:800 11px/1.2 var(--fb);font-style:normal}
.soc-mock-chat{display:flex;flex-direction:column;gap:5px}
.smc-bubble{max-width:75%;padding:7px 11px;border-radius:4px 11px 11px 11px;border:1px solid var(--hairline);background:var(--surface2);font-size:11.5px}
.smc-bubble.me{align-self:flex-end;border:0;border-radius:11px 4px 11px 11px;background:linear-gradient(150deg,#D90330,var(--p5deep));color:#fff}
.smc-read{display:inline-flex;margin-left:4px;vertical-align:-2px;font-style:normal}
.smc-read svg{width:13px;height:10px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.soc-mock-event{display:flex;align-items:center;gap:8px;padding:10px 11px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.soc-mock-event svg{width:15px;height:15px;flex:0 0 auto;fill:none;stroke:var(--info);stroke-width:1.9}
.soc-mock-event b{font-size:12px}
.soc-mock-event span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--faint);font-size:11px}
.soc-mock-event em{padding:4px 11px;border-radius:999px;background:var(--lens);box-shadow:var(--lens-sh);color:#fff;font-size:11px;font-weight:800;font-style:normal}
html[data-theme=light] .soc-mock-quick span,html[data-theme=light] .smc-bubble,html[data-theme=light] .soc-mock-event{background:#fff}
/* 뉴스 안내 목업 — 소식 한 줄(제목 + 태그·댓글 수) */
.news-mock{padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--bg)}
.news-mock-row{display:flex;flex-direction:column;gap:7px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.news-mock-row b{font-size:12.5px}
.news-mock-meta{display:flex;flex-wrap:wrap;gap:6px}
.news-mock-meta i{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:6px;background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700;font-style:normal}
.news-mock-meta svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2}
.news-intro-note{margin:12px 2px 0;color:var(--muted);font-size:12px;line-height:1.5}
html[data-theme=light] .news-mock-row{background:#fff}
.grp-evsaved{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--accent);font-size:10px;font-weight:850}.grp-evsaved svg{width:14px;height:14px}

/* 채팅 사진 카톡식 — 받기 전엔 흐린 썸네일 + 가운데 다운로드 버튼, 받으면 선명(탭=크게 보기) */
.imgbubble{position:relative}
.imgbubble:not(.undl) img[data-imgview]{cursor:zoom-in}
.imgbubble.undl img{filter:blur(18px) brightness(.88);transform:scale(1.12)}
.imgbubble .img-dl{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:rgba(10,12,18,.6);border:1px solid rgba(255,255,255,.32);color:#fff;backdrop-filter:blur(3px)}
.imgbubble .img-dl svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2}
.imgbubble .img-dl.busy svg{display:none}
.imgbubble .img-dl.busy::after{content:'';width:20px;height:20px;border-radius:50%;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;animation:imgdlspin .7s linear infinite}
@keyframes imgdlspin{to{transform:rotate(360deg)}}
.img-lightbox{touch-action:none;user-select:none;-webkit-user-select:none}
.img-lightbox img{will-change:transform;-webkit-user-drag:none}
.img-lightbox.zoomed{cursor:grab}
.img-lightbox .ilb-actions{position:absolute;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:8px;max-width:94vw;flex-wrap:wrap;justify-content:center}
.img-lightbox .ilb-dl{display:inline-flex;align-items:center;gap:7px;padding:11px 18px;border-radius:999px;background:var(--surface2);border:1px solid var(--border);color:var(--text);font-size:13px;font-weight:800;text-decoration:none;cursor:pointer;white-space:nowrap}
.img-lightbox .ilb-dl svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.img-lightbox .ilb-dl.danger{border-color:rgba(228,3,43,.55);color:var(--danger)}
.img-lightbox .ilb-dl.busy{opacity:.55;pointer-events:none}

/* ---------- 채팅 입력 중 표시 — 수신 메시지와 같은 말풍선 행(.typingmsg), 로고 펄스 로딩 ---------- */
.typingmsg .typing-bubble{display:inline-flex;align-items:center;min-height:20px}
.typing-logo{display:inline-flex;align-items:center;padding:1px 3px;animation:typing-pulse 1.4s ease-in-out infinite}
.typing-logo svg{display:block}
@keyframes typing-pulse{0%,100%{opacity:.35;transform:scale(.94)}50%{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion: reduce){.typing-logo{animation:none;opacity:.8}}

/* 파티 모임 — 같은 일정 DOM에서 응답 없는 한 열 배치 */
.grp-events-all .grp-event.party-event{grid-template-columns:minmax(0,1fr)}
.group-event-mode-options{border:0;padding:0;margin:0;display:grid;gap:10px;min-width:0}
.group-event-mode-options label{display:flex;align-items:flex-start;gap:12px;padding:16px;border:1px solid var(--glass-line);border-radius:16px;background:var(--glass-bg);box-shadow:var(--glass-hi);cursor:pointer;min-width:0;transition:background .18s var(--ease-out),border-color .18s}
.group-event-mode-options label:has(input:checked){border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh)}.group-event-mode-options label:has(input:checked) :is(b,small){color:#fff}.group-event-mode-options label:has(input:checked) small{opacity:.82}
.group-event-mode-options input{margin-top:3px;accent-color:#fff;flex:0 0 auto;width:18px;height:18px}
.group-event-mode-options span{display:grid;gap:6px;min-width:0}.group-event-mode-options b{font-size:14px;color:var(--text)}
.group-event-mode-options small,.group-event-mode-note{font-size:12px;line-height:1.65;color:var(--muted);overflow-wrap:anywhere}
.group-event-mode-note{margin:14px 0}.group-event-mode-options label:focus-within{outline:2px solid var(--focus);outline-offset:2px}
.group-event-sheet .grp-field[hidden]{display:none}

/* 관리자 이메일 로그인 — 모바일 기본, 같은 폼을 데스크탑에서도 사용 */
.admin-login-card .auth-flow-head p { overflow-wrap:anywhere; }
.admin-login-card .auth-flow-head strong { color:var(--text); font-weight:600; }
.admin-login-card #adminLoginResend { width:100%; margin-top:10px; }
.admin-login-card .field input { min-width:0; width:100%; }

/* 유용한 기능 · 고급 검색 */
.adv-reset{margin-left:auto}.adv-scroll{padding:12px 16px 32px}.adv-layout,.adv-builder,.adv-results{min-width:0}
.adv-intro{padding:4px 2px 16px}.adv-intro h2{font-size:20px;font-weight:800;letter-spacing:-.03em;margin:0}
.adv-intro p,.adv-note{font-size:12px;line-height:1.6;color:var(--muted);margin:0}.adv-note{margin:14px 2px}
.adv-presets{display:flex;flex-wrap:wrap;gap:6px}.adv-presets .pill{font-size:12px}
.adv-outer{display:grid;gap:8px;margin:18px 0 14px}.adv-outer>b{padding-left:2px;font-size:12.5px;font-weight:700;color:var(--muted)}
.adv-group{border:1px solid var(--border);border-radius:16px;padding:12px;background:var(--surface)}.adv-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.adv-group h3{font-size:14px;font-weight:800;margin:0 0 0 2px;display:flex;gap:6px;align-items:baseline}.adv-group h3 span{font-family:var(--fn);font-size:13px;color:var(--muted)}.adv-group .iconbtn{width:34px;height:34px;flex-shrink:0;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted)}
.adv-logic.segctl>button{min-height:42px}
.adv-rules{display:grid;gap:8px;margin-top:12px}.adv-rule{background:var(--matte-tint);border:1px solid var(--border);border-radius:12px;padding:8px}.adv-rule-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}.adv-rule-head select{flex:1}
.adv-builder .input{height:44px;min-width:0;padding:0 12px;font-size:14px}.adv-builder select.input{padding-right:34px;background-position:right 12px center}.adv-rule-head select.input{height:38px;border-color:transparent;background-color:transparent;padding-left:6px;font-weight:800}.adv-rule-head select.input:focus{border-color:var(--focus)}
.adv-rule-value{display:flex;align-items:center;gap:6px}.adv-rule-value.person{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.adv-rule-value:not(.person) input[type=number]{flex:1}.adv-rule-value:not(.person) input[type=number]~select{flex:1}.adv-unit{font-size:12px;color:var(--muted)}
.adv-add{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:44px;margin-top:10px;border:1px dashed var(--border);border-radius:12px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:700}.adv-add svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2}@media(hover:hover){.adv-add:hover{color:var(--text);border-color:var(--glass-line-hi)}}.adv-add:disabled{opacity:.45;cursor:default}.adv-add-group{margin-top:12px}
.adv-connector{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:11px;font-weight:700;padding:12px 0}.adv-connector::before,.adv-connector::after{content:'';height:1px;flex:1;background:var(--border)}
.adv-help{font-size:12px;line-height:1.7;color:var(--muted);margin:16px 2px}.adv-help summary{cursor:pointer;padding:8px 0;color:var(--text);font-weight:700}.adv-help p{margin:8px 0}
.adv-submit{padding:14px;border-radius:16px;background:var(--surface);border:1px solid var(--border)}.adv-submit>p{font-size:12px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere;margin:0 0 12px;max-height:100px;overflow:auto}.adv-submit>div{display:flex;gap:8px}.adv-submit select{flex:1}.adv-submit .btn{flex:1;white-space:nowrap;height:44px;gap:6px}.adv-submit .btn svg{width:16px;height:16px}
.adv-submit .adv-sort{flex:1.2;display:flex;align-items:center;justify-content:space-between;gap:6px;text-align:left}.adv-sort>span{min-width:0;line-height:1.25;word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}.adv-sort svg{flex-shrink:0;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;color:var(--muted)}
.adv-results{margin-top:24px;scroll-margin-top:16px}.adv-empty{display:flex;align-items:center;flex-direction:column;text-align:center;gap:8px;padding:30px 18px;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--muted)}.adv-empty>span{width:52px;height:52px;display:grid;place-items:center;margin-bottom:4px;border-radius:50%;background:var(--tag-bg);color:var(--muted)}.adv-empty>span svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2}.adv-empty b{font-size:14px;color:var(--text)}.adv-empty p{font-size:12px;line-height:1.6;margin:0;overflow-wrap:anywhere}
.adv-result-head{display:flex;align-items:center;justify-content:space-between;margin:0 2px 12px;gap:8px}.adv-result-head h2{font-size:16px;font-weight:800;margin:0}.adv-result-head h2 b{padding-left:6px;color:var(--text);font-family:var(--fn)}.adv-result-head>span{font-size:12px;color:var(--muted)}.adv-result-list{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--surface)}.adv-result-list .trow{width:100%}.adv-more{margin:16px auto;min-width:160px}
.adv-notice{font-size:12px;line-height:1.6;color:var(--text);padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--warning) 12%,transparent);margin:14px 0}.adv-notice button{background:transparent;color:var(--text);font-weight:800;border:0;text-decoration:underline;padding:6px}
.adv-submit{position:sticky;bottom:0;z-index:2;box-shadow:0 -10px 24px var(--bg)}
.adv-builder input,.adv-builder input.input{font-size:16px}
/* 고급 검색 · 계정별 조건 보관함 */
.adv-library{margin:0 0 16px}.adv-library>div{display:flex;gap:8px}.adv-library .btn{flex:1;height:42px;gap:6px}.adv-library svg{width:15px;height:15px}.adv-library p{margin:8px 2px 0;color:var(--muted);font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.adv-save-sheet .input{font-size:16px}.adv-save-summary{margin:0;padding:12px;border-radius:12px;background:var(--matte-tint);font-size:12px;line-height:1.7;overflow-wrap:anywhere;max-height:150px;overflow:auto}.adv-save-actions{display:flex;gap:8px;margin-top:14px}.adv-save-actions .btn{flex:1;min-height:46px}.adv-save-error{color:var(--danger);font-size:12px;line-height:1.6;overflow-wrap:anywhere}.adv-save-error:empty{display:none}
.adv-saved-list{display:grid;gap:10px}.adv-saved-row{display:flex;align-items:center;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:4px 8px 4px 4px}.adv-saved-pick{flex:1;min-width:0;background:none;color:var(--text);border:0;text-align:left;padding:12px;display:grid;gap:5px}.adv-saved-pick b{font-size:14px;overflow-wrap:anywhere}.adv-saved-pick span{font-size:12px;line-height:1.6;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.adv-saved-pick small{font-size:11px;color:var(--faint)}.adv-saved-row>.iconbtn{flex:none;width:38px;height:38px;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--muted)}
.adv-save-sheet .adv-note{word-break:keep-all}
/* 새 기능 안내 · 고급 검색 */
.asi-title>span svg{width:24px;height:24px;fill:none;stroke:currentColor}.asi-preview{margin-top:12px}.asi-group{padding:10px 12px}.asi-label{display:block;font-size:11.5px;font-weight:700;color:var(--muted);margin-bottom:7px}.asi-rule{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;margin:0}.asi-rule>b{font-size:12px}.asi-rule>span{font-size:11px;color:var(--muted)}.asi-preview .adv-connector{padding:9px 0}.asi-preview .adv-logic.segctl>button{min-height:34px;font-size:12px}.asi-friends{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:8px}.asi-friends .asi-rule{flex-wrap:wrap;gap:4px}.asi-library{margin:10px 0 0}.asi-library .btn{height:36px;font-size:12px}.asi-note{margin:10px 2px 0;font-size:12px;line-height:1.55;color:var(--muted);word-break:keep-all}.advanced-search-intro-sheet .feature-intro-actions{margin-top:14px}.asi-route.ti-route{border:1px solid var(--border);border-radius:12px;background:var(--matte-tint)}.asi-route.ti-route>b>svg{border:0;border-radius:50%;clip-path:none;background:var(--tag-bg);color:var(--text)}.asi-route.ti-route p{font-size:11.5px}

/* 관리자 검색은 긴 닉네임과 여러 동작도 모바일 폭 안에 배치한다. */
.admin-search-row{flex-wrap:wrap}
.admin-search-row .act{width:100%;justify-content:flex-end;flex-wrap:wrap}
.admin-chat-hint{padding:8px 18px;border-bottom:1px solid var(--hairline);margin:0}

/* 사전 공개 웹 방탈출 — 게임 자산은 입장한 뒤 보호 경로에서만 받는다. */
.escape-game-tool-card .tool-card-icon svg{width:24px;height:24px;stroke-width:1.6}

.escape-game-title{display:block;margin-top:2px;font-size:13px;font-weight:700;line-height:1.4;letter-spacing:-.02em;color:var(--muted)}

/* 기록·일정 연동 — 큰 선택 행과 고정 하단 액션을 쓰는 공용 시트 */
.sync-sheet .sh-head .ttl { font-size:18px; line-height:1.4; }
.sync-sheet .sh-head { gap:12px; }
.sync-sheet .sh-body { min-height:0; overflow-y:auto; overscroll-behavior:contain; }
.sync-sheet .btn { min-height:48px; font-size:14px; white-space:normal; line-height:1.4; }
.sync-sheet svg,.sync-record-status svg { width:22px; height:22px; flex-shrink:0; fill:none; stroke:currentColor; stroke-width:1.7; }
.sync-symbol { display:flex; align-items:center; justify-content:center; width:46px; height:46px; flex:0 0 46px; background:var(--surface3); color:var(--accent); border:1px solid var(--border); border-radius:12px; }
.sync-lead { display:flex; align-items:center; gap:12px; margin:10px 0 22px; }
.sync-lead>div { min-width:0; }
.sync-lead h2,.sync-empty h2 { font-size:21px; line-height:1.45; overflow-wrap:anywhere; margin:0; }
.sync-lead p,.sync-empty p { font-size:14px; line-height:1.6; margin:5px 0 0; color:var(--muted); }
.sync-tag { display:inline-flex; padding:5px 9px; color:var(--accent); border:1px solid var(--accent); font-size:12px; font-weight:800; line-height:1.2; margin-bottom:8px; }
.sync-note { color:var(--muted); font-size:14px; line-height:1.65; margin:14px 0; word-break:keep-all; overflow-wrap:anywhere; }
.sync-inbox-btn { gap:4px; }
.sync-inbox-count { min-width:16px; height:16px; padding:0 4px; border-radius:9px; background:var(--p5); color:var(--paper); font-size:9px; font-weight:800; line-height:16px; text-align:center; }
.sync-options { display:grid; gap:10px; }
.sync-option { display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:76px; padding:16px; background:var(--surface2); color:var(--text); border:1px solid var(--border); border-radius:10px; text-align:left; }
.sync-option.on { background:var(--surface3); border-color:var(--accent); }
.sync-option>span { min-width:0; flex:1; }
.sync-option b { display:block; font-size:15px; line-height:1.5; word-break:keep-all; }
.sync-option small { display:block; font-size:13px; color:var(--muted); margin-top:4px; line-height:1.55; word-break:keep-all; }
.sync-option>i { display:flex; width:22px; flex-shrink:0; color:var(--accent); }
.sync-option.danger>svg { color:var(--danger); }
.sync-footer { flex:0 0 auto; padding:14px 20px max(18px,env(safe-area-inset-bottom)); border-top:1px solid var(--border); background:var(--surface); }
.sync-footer>div:not(.sync-progress) { display:flex; gap:10px; }
.sync-footer .btn { flex:1; min-width:0; }
.sync-footer>p { margin:0 0 10px; color:var(--muted); font-size:14px; }
.sync-footer>.btn { width:100%; }
.sync-batch-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:15px 0; }
.sync-batch-head>b { font-size:15px; }
.sync-batch-head .btn { padding:8px 16px; }
.sync-request-list { display:grid; gap:12px; }
.sync-request { border:1px solid var(--border); border-radius:16px; background:var(--surface); overflow:hidden; }
.sync-request.on { border-color:color-mix(in srgb,var(--p5) 40%,var(--border)); }
.sync-select { display:flex; align-items:flex-start; gap:12px; width:100%; background:transparent; border:0; color:var(--text); text-align:left; padding:16px; }
.sync-select>span { display:flex; flex-direction:column; min-width:0; gap:5px; }
.sync-select b { font-size:17px; line-height:1.45; overflow-wrap:anywhere; }
.sync-select small,.sync-select span span,.sync-select em { font-size:13px; line-height:1.5; font-style:normal; color:var(--muted); }
.sync-select small { color:var(--muted); font-weight:700; }
.sync-checkbox { display:flex; align-items:center; justify-content:center; flex:0 0 24px; height:24px; border:1.5px solid var(--glass-line-hi); border-radius:6px; margin-top:4px; color:transparent; }
.sync-checkbox svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:3; }
.sync-request.on .sync-checkbox { border-color:transparent; background:var(--lens); color:#fff; }
.sync-candidate { display:block; padding:0 16px 16px; }
.sync-candidate>span { display:block; color:var(--muted); font-size:13px; line-height:1.5; margin-bottom:8px; }
.sync-candidate .input { width:100%; min-height:48px; font-size:14px; }
.sync-card-note { font-size:13px; line-height:1.5; padding:0 16px 14px 52px; margin:0; color:var(--muted); }
.sync-prompt { padding:18px; margin-bottom:20px; border:1px solid var(--border); border-radius:16px; background:var(--matte-tint); }
.sync-prompt h3 { font-size:19px; line-height:1.55; margin:8px 0; overflow-wrap:anywhere; }
.sync-prompt p { font-size:13px; line-height:1.6; margin:8px 0 16px; color:var(--muted); }
.sync-prompt-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.sync-prompt-actions .btn { padding:12px 8px; }
.sync-empty { display:flex; align-items:center; flex-direction:column; text-align:center; padding:34px 6px; gap:12px; }
.sync-settings-panel { padding:14px 18px 0; }
.sync-settings-panel .sync-setting { width:100%; text-align:left; background:transparent; color:var(--text); }
.sync-settings-panel .pcap+.sync-setting { border-top:none; padding-top:2px; }
.sync-setting>span:last-child { flex:1; min-width:0; }
.sync-setting .sw { flex-shrink:0; }
.sync-schedule-facts { display:flex; flex-direction:column; padding:18px; gap:8px; background:var(--surface2); border:1px solid var(--border); border-radius:10px; }
.sync-schedule-facts b { font-size:17px; }
.sync-schedule-facts span { color:var(--muted); font-size:14px; }
.sync-delete-summary { display:flex; align-items:center; gap:12px; }
.sync-delete-summary>div { min-width:0; }
.sync-delete-summary b { display:block; font-size:18px; line-height:1.5; overflow-wrap:anywhere; }
.sync-delete-summary span:not(.sync-symbol) { color:var(--muted); font-size:14px; }
.sync-record-status { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:14px; margin:14px 0; border:1px solid var(--border); border-radius:16px; background:var(--matte-tint); }
.sync-record-status>span { font-size:14px; font-weight:700; }
.sync-record-status>svg { color:var(--muted); }
.sync-record-status>small { flex-basis:100%; color:var(--muted); font-size:13px; line-height:1.6; }
.sync-intro-lead h2 { font-size:26px; font-weight:900; letter-spacing:-.8px; line-height:1.35; margin:8px 0 12px; word-break:keep-all; }
.sync-intro-lead p { color:var(--muted); font-size:15px; line-height:1.7; margin:0 0 22px; word-break:keep-all; }
.sync-intro-lead .sync-tag { margin:0; padding:2px 8px; color:var(--text); border:0; border-radius:6px; background:var(--tag-bg); font-size:11px; }
.sync-demo { background:var(--bg); border:1px solid var(--border); border-radius:16px; padding:16px; margin:12px 0 20px; }
.sync-demo-head { display:flex; align-items:center; gap:8px; padding:2px 0 15px; font-size:14px; }
.sync-demo-head>svg { color:var(--muted); width:20px; }
.sync-demo-head>span { margin-left:auto; color:var(--muted); font-size:13px; }
.sync-demo-record { display:flex; align-items:center; gap:12px; padding:14px 10px; border-top:1px solid var(--border); }
.sync-demo-record>svg { color:var(--success); width:20px; }
.sync-demo-record>div { display:flex; flex-direction:column; gap:5px; }
.sync-demo-record b { font-size:17px; }
.sync-demo-record small,.sync-demo-record span { font-size:12px; line-height:1.5; color:var(--muted); }
.sync-demo-actions { display:flex; gap:8px; margin-top:14px; }
.sync-demo-actions>* { flex:1; display:flex; align-items:center; justify-content:center; min-height:44px; border:1px solid var(--glass-line); border-radius:12px; background:var(--glass-bg); font-size:14px; }
.sync-demo-option { display:flex; align-items:center; gap:10px; padding:14px 12px; border:1px solid var(--border); border-radius:12px; margin-top:8px; background:var(--surface2); }
.sync-demo-option.on { border-color:color-mix(in srgb,var(--p5) 45%,var(--border)); }
.sync-demo-option>span { flex:1; min-width:0; }
.sync-demo-option b,.sync-demo-option small { display:block; font-size:14px; line-height:1.6; word-break:keep-all; }
.sync-demo-option small { color:var(--muted); font-size:12px; }
.sync-demo-option>svg { color:var(--muted); }
.sync-demo-switch { display:block; flex:0 0 34px; height:20px; border-radius:12px; background:var(--lens); position:relative; }
.sync-demo-switch:after { content:''; position:absolute; right:3px; top:3px; width:14px; height:14px; background:#fff; border-radius:100%; }
.sync-demo-calendar { display:flex; align-items:center; gap:16px; margin-top:20px; padding:16px 4px; border-top:1px solid var(--border); }
.sync-demo-calendar>span { display:flex; align-items:center; flex-direction:column; gap:3px; font-size:13px; color:var(--muted); }
.sync-demo-calendar>span>b { font-size:32px; color:var(--text); }
.sync-demo-calendar>div { display:flex; flex-direction:column; gap:7px; padding:12px; background:var(--surface2); border:1px solid var(--border); border-radius:12px; flex:1; }
.sync-demo-calendar small { color:var(--info); font-size:12px; }
.sync-demo-calendar b { font-size:16px; }
.sync-demo-calendar div>span,.sync-demo>p { color:var(--muted); font-size:13px; line-height:1.5; }
.sync-demo>p { text-align:center; margin:6px 0; }
.sync-progress { display:flex; align-items:center; gap:6px; margin:0 0 14px; }
.sync-progress i { width:8px; height:8px; border-radius:999px; background:var(--border); }
.sync-progress i.on { width:20px; background:var(--p5); }
.sync-progress span { margin-left:auto; color:var(--muted); font-size:13px; }
.sync-sheet button:focus-visible { outline:2px solid var(--focus); outline-offset:3px; }
.sync-sheet .iconbtn { width:44px; height:44px; min-width:44px; flex:0 0 44px; }

.sync-demo-actions>b { background:var(--lens); border-color:transparent; box-shadow:var(--lens-sh); color:#fff; }
.sync-intro-lead p { margin-bottom:16px; }
.sync-demo { padding:14px; margin-bottom:16px; }
.sync-demo-head { padding-bottom:10px; }
.sync-demo-record { padding-top:12px; padding-bottom:12px; }

/* 미연결 기록의 개인 포스터 — 공용 시트/데스크탑 모달 안에서 같은 배치 사용 */
.qa-poster{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.qa-poster img{width:64px;height:90px;object-fit:contain;border:1px solid var(--border);border-radius:6px;background:var(--surface)}
#qaPosterField[hidden],.qa-poster [hidden]{display:none!important}
.qa-poster-actions{display:flex;flex-wrap:wrap;gap:8px;min-width:0}

/* 친구 탐색 — 기존 시트·리뷰 카드·공개 설정 컴포넌트를 공유한다. */
.review-author-avatar,.review-author-name{border:0;background:none;color:inherit;padding:0;cursor:pointer;text-align:left;font:inherit}
.review-author-avatar{display:flex;flex-shrink:0;border-radius:9px;line-height:inherit}
.review-author-name{font-weight:inherit;line-height:inherit;overflow-wrap:anywhere}
.review-author-name:hover{text-decoration:underline;text-underline-offset:3px}
.friend-profile-sheet .sh-head .ttl,.user-friends-sheet .sh-head .ttl{min-width:0;overflow-wrap:anywhere}
.friend-list-share{margin-top:16px}.friend-list-share .hint,.record-audience .hint{margin:8px 0 0;line-height:1.65}
.friend-list-global{width:100%;text-align:left;background:transparent;color:var(--text);font:inherit}
.friend-list-global .lbl,.friend-list-global .sub{display:block}
.record-audience{margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}
.record-audience .segctl>button{flex:1 1 auto}
.user-friend-row{display:flex;align-items:center;gap:10px;width:100%;padding:14px 0;border:0;border-bottom:1px solid var(--border);background:none;color:var(--text);text-align:left;cursor:pointer;font:inherit}
.user-friend-row>span:not(.avatar){flex:1;min-width:0}.user-friend-row b,.user-friend-row small{display:block;overflow-wrap:anywhere}
.user-friend-row b{font-size:15px}.user-friend-row small{font-size:12px;color:var(--muted);margin-top:3px}.user-friend-row em{font-size:11px;white-space:nowrap;font-style:normal;color:var(--muted)}
.user-friend-row>svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:currentColor;color:var(--faint)}
.view-userreviews .appbar>div{min-width:0}.view-userreviews .appbar .title{font-size:17px;overflow-wrap:anywhere}
.user-reviews-list{padding:14px 16px 28px;display:grid;gap:20px}
.user-review-entry{min-width:0;border:1px solid var(--border);border-radius:14px;background:var(--surface);overflow:hidden}
.user-review-theme{display:flex;gap:12px;align-items:center;width:100%;padding:14px;border:0;border-bottom:1px solid var(--border);color:var(--text);background:transparent;text-align:left;font:inherit;cursor:pointer}
.user-review-theme img,.user-review-cover{width:46px;height:62px;border-radius:5px;object-fit:cover;flex-shrink:0;background:var(--surface)}
.user-review-cover{display:grid;place-items:center;color:var(--muted)}.user-review-cover svg{width:22px;height:22px;fill:none;stroke:currentColor}
.user-review-theme>span:not(.user-review-cover){flex:1;min-width:0}.user-review-theme b,.user-review-theme small{display:block;overflow-wrap:anywhere}
.user-review-theme b{font-size:17px;line-height:1.4;margin-top:4px}.user-review-theme small{font-size:12px;color:var(--muted)}
.user-review-theme>svg{width:18px;height:18px;flex-shrink:0;color:var(--faint);fill:none;stroke:currentColor}
.user-review-entry .revcard{margin:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.view-userreviews .revcard::before,.view-userreviews .revcard::after{display:none}
.user-review-entry .revexport{display:none}
.user-reviews-more{width:100%;min-height:46px}
.friend-discovery-intro .feature-intro-preview{margin:16px 0;padding:0}
.friend-discovery-intro .discovery-screen{display:block;width:100%;height:auto;border-radius:12px}
.friend-discovery-intro figcaption{margin-top:6px;text-align:right;font-size:11px;color:var(--faint)}
.friend-discovery-intro .intro-page-actions{display:flex;gap:8px;margin-top:16px}.friend-discovery-intro .intro-page-actions .btn{flex:1}
.friend-discovery-intro h2{font-size:21px;margin:0 0 8px}.friend-discovery-intro p{font-size:13px;color:var(--muted);line-height:1.65}.friend-discovery-intro .intro-step{font-size:12px;color:var(--faint);margin-bottom:10px}

/* 기록 번호 — 공용 토글과 같은 모바일·설정·데스크탑 모달 레이아웃 */
.record-number-settings { padding:14px 18px 0; }
.record-number-toggle { width:100%; text-align:left; background:transparent; color:var(--text); }
.record-number-settings .pcap+.record-number-toggle { border-top:none; padding-top:2px; }
.record-number-toggle>span:last-child { flex:1; min-width:0; }
/* 기존 기록에 모두 적용 — 설정과 다른 기록이 있을 때만 금색 틴트 줄 + 알약 버튼, 같으면 옅은 확인 줄 */
.rn-sync{display:flex;align-items:center;gap:10px;margin-top:8px;padding:10px 10px 10px 12px;border-radius:var(--r-field);background:color-mix(in srgb,var(--gold) 7%,var(--surface2));border:1px solid color-mix(in srgb,var(--gold) 24%,var(--hairline))}
.rn-sync>svg{width:18px;height:18px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;color:var(--gold)}
.rn-sync-txt{flex:1;min-width:0;word-break:keep-all}
.rn-sync-txt b{display:block;font-size:12.5px;font-weight:600;line-height:1.4;color:var(--text);overflow-wrap:anywhere}
.rn-sync-txt small{display:block;margin-top:1px;font-size:11px;line-height:1.4;color:var(--faint)}
.rn-sync-btn{flex:0 0 auto;min-height:34px;padding:0 14px;border-radius:var(--r-pill);border:1px solid color-mix(in srgb,var(--gold) 55%,transparent);background:color-mix(in srgb,var(--gold) 15%,transparent);color:var(--gold);font:inherit;font-size:12.5px;font-weight:700;white-space:nowrap;cursor:pointer;transition:background .16s,transform .12s var(--ease-press)}
.rn-sync-btn:hover{background:color-mix(in srgb,var(--gold) 24%,transparent)}
.rn-sync-btn:active{transform:scale(.96)}
.rn-sync-btn:disabled{opacity:.5;cursor:default;transform:none}
.rn-sync.done{background:transparent;border-color:var(--hairline);padding-block:8px}
.rn-sync.done>svg{color:var(--success)}
.rn-sync.done .rn-sync-txt b{font-weight:500;color:var(--muted)}

/* 기록 번호 안내 — 예시는 조작되지 않고 현재 화면 모드의 공용 토글을 따른다. */
.record-number-intro-sheet h2{margin:0 0 8px;font-size:21px}
.record-number-intro-sheet .rni-lead{margin:0;color:var(--muted);font-size:13px;line-height:1.65}
.rni-example{margin:18px 0 0}.rni-example figcaption{margin-bottom:8px;font-size:12px;color:var(--muted)}
.rni-form{padding:4px 16px;background:var(--bg2);border:1px solid var(--border);border-radius:16px}
.rni-example .record-number-settings{padding:0}.rni-example .panel{margin-top:0}
/* 기록 탭 보기 변경 안내 — 실제 탭·도구 줄·설정 칩 클래스를 그대로 쓴 예시 */
.rec-view-intro-sheet h2{margin:0 0 8px;font-size:21px}
.rvi-lead{margin:0;color:var(--muted);font-size:13px;line-height:1.65}
.rvi-example{margin:18px 0 0}.rvi-example figcaption{margin-bottom:8px;font-size:12px;color:var(--muted)}
.rvi-shot{padding:12px;background:var(--bg);border:1px solid var(--border);border-radius:16px}
.rvi-shot .rectabs{margin:0}.rvi-shot .calctrls{margin-top:10px}
.rvi-setting{padding:0;border:0;background:none}.rvi-setting .panel{margin:0}
.rvi-notes{margin:12px 0 0;padding-left:18px;font-size:12.5px;line-height:1.6}.rvi-notes li+li{margin-top:4px}
.rvi-note{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.55}
/* 무채색 완화 — 의미색 라이트 짝(흰 배경 대비) */
html[data-theme=light] .section .h .n,html[data-theme=light] .votebar:not(.closed) .vb-cta:not(.p){color:#0B7F75}html[data-theme=light] .view-friends .urow .act .pill.accept{color:#12703F}html[data-theme=light] .fmemo-card .wc-lbl{color:var(--p5)}html[data-theme=light] .admin-comment-copy b{color:#8A6100}html[data-theme=light] .stat-colors .statcard.st-rating{--sc:#B8488A}html[data-theme=light] .stat-colors .statcard.st-life{--sc:#8A6100}html[data-theme=light] .series-journey .series-step-no,html[data-theme=light] .series-count{color:#8A6100}
/* ===== 누락 팝업 리디자인 (2026-09-29) — 연도·월 선택, 리뷰 정렬, 리뷰 PNG 내보내기, 내 일행, 이 매장의 테마, 채팅 기록 공유.
   유리 = 누르는 칸, 무광 = 읽는 칸, 붉은 렌즈 = 지금 고른 것. 청록 틀·좌측 색띠·9px 모노 라벨을 걷고 의미 있는 색만 남긴다 ===== */
/* 연도와 월 선택 — 월 칸은 유리 타일, 보고 있는 달만 렌즈. 이번 달 표식은 날짜 기준점이라 파랑 */
.cal-year-row .calchev{border-radius:50%;border-color:var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-hi)}
.cal-year-row .calchev:not(:disabled):hover{border-color:var(--glass-line-hi)}
.cal-year-select select:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.cal-month-grid{gap:8px}
.cal-month-option{min-height:64px;border-color:var(--glass-line);border-radius:var(--r-field);background:var(--glass-bg);box-shadow:var(--glass-hi);transition:scale .12s var(--ease-press),border-color .14s}
.cal-month-option b{font-family:var(--fb);font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.cal-month-option b span{margin-left:2px;color:var(--muted);font-size:12px;font-weight:700}
.cal-month-option small{font-size:11px;font-weight:700}
.cal-month-option.today small{color:var(--info)}
.cal-month-option:not(:disabled):hover{border-color:var(--glass-line-hi);background:var(--glass-bg)}
.cal-month-option:not(:disabled):active{scale:.97}
.cal-month-option.on,.cal-month-option.on:not(:disabled):hover{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}
.cal-month-option.on b span,.cal-month-option.on small{color:rgba(255,255,255,.86)}
.cal-month-option:disabled{border-color:var(--hairline);background:transparent;box-shadow:none}
.cal-month-option:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.cal-month-shortcuts button{border-color:var(--glass-line);border-radius:var(--r-field);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:13px;font-weight:800}
.cal-month-shortcuts button:not(:disabled):hover{border-color:var(--glass-line-hi);color:var(--text)}
.cal-month-shortcuts button[aria-pressed=true]{border-color:transparent;background:var(--lens);box-shadow:var(--lens-sh);color:#fff}
/* 리뷰 정렬 — 무광 묶음 목록(52px 행), 고른 기준만 렌즈 체크. 나머지 행은 빈 고리로 고를 수 있음을 보인다.
   새 클래스 없이 기존 .rsort-opt 로만 묶는다(첫·끝 행 곡률) — 이전 디자인 역패치가 그대로 되돌리도록 */
.rsort-opt{min-height:52px;padding:0 14px;border:1px solid var(--border);border-width:0 1px;background:var(--matte);font-weight:700;transition:background .14s}
.rsort-opt:first-child{border-top-width:1px;border-radius:var(--r-card) var(--r-card) 0 0}
.rsort-opt:last-child{border-bottom:1px solid var(--border);border-radius:0 0 var(--r-card) var(--r-card)}
.rsort-opt:first-child:last-child{border-radius:var(--r-card)}
.rsort-opt+.rsort-opt{border-top:1px solid var(--hairline)}
.rsort-opt:active{background:var(--matte-tint)}
@media(hover:hover){.rsort-opt:hover{background:var(--matte-tint)}}
.rsort-opt:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.rsort-opt.on{color:var(--text);font-weight:800}
.rsort-opt.on svg{width:22px;height:22px;padding:4px;border-radius:50%;background:var(--lens);box-shadow:var(--lens-sh);stroke:#fff;stroke-width:2.6}
.rsort-opt:not(.on)::after{content:"";flex:none;width:20px;height:20px;margin-right:1px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--glass-line-hi)}
/* 리뷰 PNG 내보내기 — 카드 스타일은 공용 세그먼트와 같은 유리 트랙 + 렌즈(계획·아카이브 내보내기와 같은 모양), 리뷰 번호는 무광 칸 + 입력칸.
   금색 # 은 기록 번호 표식이라 유지. .segctl 클래스를 붙이면 이전 디자인의 세그먼트 초기화가 옛 상자 글씨를 키우므로 기존 클래스로만 그린다 */
.rxe-style-picks{display:flex;gap:2px;padding:4px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.rxe-style-picks>button{flex:1 1 0;align-items:center;gap:5px;min-height:58px;padding:6px 8px;border:0;border-radius:999px;background:transparent;box-shadow:none;text-align:center;color:var(--muted);transition:scale .12s var(--ease-press)}
.rxe-style-picks>button b{color:var(--text);font-size:13px;font-weight:800}
.rxe-style-picks>button small{font-size:11px;font-weight:600;opacity:.8}
.rxe-style-picks>button>i{width:34px;height:14px;flex:none;border-radius:4px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--text) 14%,transparent)}
.rxe-style-picks>button:active{scale:.97}
.rxe-style-picks>button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.rxe-style-picks>button.on{background:var(--lens);box-shadow:var(--lens-sh);color:#fff}
.rxe-style-picks>button.on b{color:#fff}.rxe-style-picks>button.on small{color:rgba(255,255,255,.84);opacity:1}
.segctl.plan-export-style-picks>button.on small{color:rgba(255,255,255,.84)}
.review-export-order{padding:12px 14px;border-radius:var(--r-card);background:var(--matte-tint)}
.review-export-order small{font-size:12px}
.review-export-order-field{height:44px;border-radius:var(--r-field);background:var(--surface2);transition:border-color .16s}
.review-export-order-field:focus-within{border-color:var(--focus)}
.review-export-order-field i{font-family:var(--fb);font-size:14px}
.review-export-order-field input{font-family:var(--fb);font-size:16px;font-variant-numeric:tabular-nums}
/* 내 일행 — 9.5px 모노 조작 칩을 12px 유리 버튼으로. 기록 추가는 중립, 친구로 연결은 수락 초록(글자·아이콘·옅은 테두리), 함께 간 테마 수는 묶음 개수와 같은 청록 */
.mp-name i{padding:2px 6px;border:0;border-radius:var(--r-tag);background:var(--tag-bg);color:var(--muted);font-size:11px;font-weight:700}
.mp-copy p{font-size:12px}
.mp-records{height:28px;gap:4px;color:var(--muted);font:700 12px var(--fb)}
.mp-records:hover{background:var(--tag-bg);color:var(--text)}
.mp-link,.mp-theme{height:32px;padding:0 11px;gap:5px;border:1px solid var(--glass-line);border-radius:var(--r-field);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font:800 12px var(--fb)}
.mp-link:hover,.mp-theme:hover{border-color:var(--glass-line-hi);background:var(--glass-bg)}
.mp-link svg,.mp-theme svg{width:14px;height:14px}
.mp-link svg{color:var(--success)}
.mp-link{color:var(--success);border-color:color-mix(in srgb,var(--success) 34%,var(--glass-line));background:linear-gradient(0deg,color-mix(in srgb,var(--success) 10%,transparent),color-mix(in srgb,var(--success) 10%,transparent)),var(--glass-bg)}
.mp-link:hover{border-color:color-mix(in srgb,var(--success) 48%,var(--glass-line));background:linear-gradient(0deg,color-mix(in srgb,var(--success) 14%,transparent),color-mix(in srgb,var(--success) 14%,transparent)),var(--glass-bg)}
.mp-records{color:var(--accent)}.mp-records:hover{color:var(--accent)}
html[data-theme=light] .mp-link,html[data-theme=light] .mp-link svg{color:#12703F}html[data-theme=light] .mp-records{color:#0B7F75}
.mp-edit,.mp-delete{width:32px;height:32px;border-color:var(--glass-line);border-radius:50%;background:var(--glass-bg);box-shadow:var(--glass-hi)}
.mp-edit svg,.mp-delete svg{width:14px;height:14px}
/* 버튼이 커진 만큼 조작 줄을 이름·메모 아래로 내려 메모가 잘리지 않게 한다(아바타 폭만큼 들여 글줄에 맞춤) */
.manual-person{flex-wrap:wrap;row-gap:10px;padding:14px 4px}
.mp-side{flex:1 0 100%;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;row-gap:6px;padding-left:53px}
.mp-copy p{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
@media(max-width:359px){.mp-link,.mp-theme{height:30px;padding:0 9px}.mp-side{padding-left:0}.mp-primary-actions{flex-direction:row;align-items:center}}
/* 이 매장의 테마 — 매장 머리는 좌측 청록 띠 대신 무광 칸, 9px 설명·빈 상태 글씨를 12px 로. 테마 칸(유리)은 그대로 */
.store-theme-lead{gap:3px;margin-bottom:12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--matte-tint)}
.store-theme-lead b{font-size:14px;font-weight:800}
.store-theme-lead span{font-size:12px;line-height:1.45}
.store-theme-state{border:1px solid var(--border);border-radius:var(--r-card);background:var(--matte-tint)}
.store-theme-state b{font-size:13px}.store-theme-state span{font-size:12px}
.store-theme-list .series-theme-copy b{font-size:13.5px;font-weight:800}
.store-theme-state button{height:36px;padding:0 14px;border:1px solid var(--glass-line);border-radius:var(--r-field);background:var(--glass-bg);box-shadow:var(--glass-hi);color:var(--text);font-size:12px}
/* 채팅 기록 공유·함께한 기록 추가 — 예정 기록 행은 청록 좌측 띠 대신 일정 파랑 옅은 바탕 */
.comp-theme-list .recrow.planrow{background:color-mix(in srgb,var(--info) 8%,transparent);box-shadow:none;border-radius:var(--r-sm)}
.comp-theme-note{color:var(--muted);font-size:12px}.comp-theme-empty b{font-size:13px}.comp-theme-empty span{font-size:12px}
