/* ============================================================
   DOUBLEY — 3차 디자인
   AlphaSights 의 에디토리얼 골격에 double_y 원래 팔레트를 씁니다.

   팔레트 (기존 double_y 그대로)
     딥블랙 #0b0d10 · 라임 #b7ff5a · 민트 #77e6c6

   구성 원칙
     1. 머리띠는 사진 위에서 투명합니다. 사진과 구분선 없이 이어집니다.
        히어로를 지나 스크롤하면 그때 딥블랙 배경이 깔립니다.
     2. 내비게이션(링크·펼침 메뉴·머리 버튼)은 기존 double_y 의
        둥근 모양을 그대로 씁니다. 본문 쪽은 각을 세운 채 둡니다.
     3. 카드를 없앴습니다. 구획은 1px 선과 여백으로 나눕니다.
     4. 섹션 번호를 왼쪽 여백에 큰 숫자로 세웁니다.
     5. 목록은 상자가 아니라 가로로 긴 줄로 놓습니다.
   ============================================================ */

/* ---------- 웹폰트 ----------
   방문자 PC 에 폰트가 없어도 같은 화면이 보이도록 사이트에 직접 올려 씁니다.
   글자 종류에 따라 두 폰트가 나눠 맡습니다.
     영문 · 숫자 · 문장부호 : Inter       (가변폰트 하나로 100~900 굵기, 48KB)
     한글                   : Pretendard  (실제로 쓰는 400/700 굵기만, 각 205KB)
   둘 다 SIL Open Font License 1.1 이고 원문은 fonts/ 폴더에 있습니다.

   한 가족(font-family) 안에 굵기 범위를 가진 가변 face 와 낱개 굵기 face 를
   섞으면 Chrome 이 가변 face 를 먼저 붙잡고 unicode-range 가 다른 face 로
   넘어가지 않습니다. 그래서 가족을 Inter(영문) / Pretendard(한글) 로
   완전히 갈라 두었습니다. 화살표 같은 기호는 폰트 대신 SVG 로 그립니다.

   경로가 ../fonts/ 인 이유: 이 파일이 assets/css/ 안에 있고
   폰트는 assets/fonts/ 에 있어 한 단계 올라가야 합니다.
   unicode-range 를 지정했으므로 브라우저는 그 글자가 실제로 쓰인 경우에만 내려받고,
   font-display:swap 은 폰트가 늦게 와도 글자를 먼저 보여주라는 뜻입니다(빈 화면 방지).
------------------------------------------------------------------- */
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url('../fonts/inter-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Pretendard';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('../fonts/pretendard-kr-400.woff2') format('woff2');
  unicode-range:U+1100-11FF,U+3000-303F,U+3130-318F,U+A960-A97F,
                U+AC00-D7A3,U+D7B0-D7FF,U+FF01-FF60;
}
@font-face{
  font-family:'Pretendard';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('../fonts/pretendard-kr-700.woff2') format('woff2');
  unicode-range:U+1100-11FF,U+3000-303F,U+3130-318F,U+A960-A97F,
                U+AC00-D7A3,U+D7B0-D7FF,U+FF01-FF60;
}

/* ============================================================
   토큰
   밝은 구역과 어두운 구역이 번갈아 나오므로, 글자색·선색처럼
   부품이 여러 면에서 같은 코드로 동작하도록 값을 변수로 둡니다.
   덕분에 버튼·칩·줄 같은 부품을 양쪽에서 그대로 씁니다.
   ============================================================ */
:root{
  --ink:#0b0d10;          /* 기본 배경 */
  --ink-rgb:11,13,16;     /* 위 색을 반투명하게 쓸 때 */
  --panel:#12161b;        /* 한 단계 떠 있는 면 (WHOWISE 구역) */
  --panel-2:#171d24;      /* 펼침 메뉴 등 */
  --ink-deep:#070908;     /* 꼬리 */

  --text:#f5f7fa;
  --muted:#aeb8c4;        /* 본문 보조 텍스트 */
  --faint:#7d8894;        /* 가장 약한 보조 텍스트 */
  --line:#26303a;         /* 기존 double_y 의 선 색 */
  --rule:rgba(255,255,255,.09);
  --rule-2:rgba(255,255,255,.2);

  --accent:#b7ff5a;       /* 라임 */
  --accent-soft:#c9ff7e;  /* hover 등 한 단계 밝게 */
  --accent-dim:rgba(183,255,90,.12);
  --accent-2:#77e6c6;     /* 민트 — 아주 드물게 */

  /* 부품이 밝은 면·어두운 면에서 같은 코드로 동작하도록 남겨 둔 별칭입니다.
     지금은 전체가 어두운 한 톤이라 값이 하나뿐입니다. */
  --bg:var(--ink);
  --fg:var(--text);
  --accent-text:var(--accent);
  --btn-fg:var(--text);

  --max:1300px;
  --gut:clamp(20px,4.6vw,60px);
  --sec:clamp(74px,8.6vw,146px);
  --hdr:74px;             /* 머리띠 높이 — 히어로 여백 계산에 씁니다 */
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--ink);
  color:var(--text);
  font-family:Inter,Pretendard,"Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  font-feature-settings:"calt" 0;
  font-size:16px;
  line-height:1.62;
  /* 한글은 단어 중간에서 줄이 끊기지 않게 하고,
     긴 영문 주소는 넘치지 않도록 break-word 를 함께 둡니다. */
  word-break:keep-all;
  overflow-wrap:break-word;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
img,svg{max-width:100%}
h1,h2,h3,h4{margin:0;font-weight:800;letter-spacing:-.03em;line-height:1.1}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--gut)}
.skip{
  position:absolute;left:-9999px;top:0;z-index:200;
  padding:12px 18px;background:var(--accent);color:var(--ink);font-weight:700
}
.skip:focus{left:12px;top:12px}

/* 영문 전용 큰 글자는 더 조여야 제 모양이 납니다.
   한글에 같은 값을 주면 글자가 붙어 보여 분리해 두었습니다. */
.en{letter-spacing:-.05em}

/* ---------- 공통 타이포 ---------- */
.h-xl{font-size:clamp(38px,5.8vw,86px);line-height:1.02;letter-spacing:-.04em}
.h-lg{font-size:clamp(28px,3.6vw,54px);line-height:1.08}
.h-md{font-size:clamp(20px,2vw,28px);line-height:1.24}
.micro{
  margin:0;font-size:11px;font-weight:700;line-height:1.5;
  letter-spacing:.2em;text-transform:uppercase;color:var(--faint)
}
.lead{
  margin-top:clamp(18px,2vw,26px);
  font-size:clamp(16px,1.1vw,19px);color:var(--muted);max-width:58ch
}
.lead strong{color:var(--fg);font-weight:700}

/* 화살표가 붙은 텍스트 링크 */
.arrow{
  display:inline-flex;align-items:center;gap:11px;
  margin-top:clamp(22px,2.6vw,32px);
  padding-bottom:3px;
  font-weight:700;font-size:15px;color:var(--fg);
  border-bottom:1px solid var(--rule-2);
  transition:border-color .2s ease,color .2s ease
}
.arrow .ico{
  width:16px;height:12px;flex:none;color:var(--accent-text);
  transition:transform .25s cubic-bezier(.2,.7,.3,1)
}
.arrow:hover{color:var(--accent-text);border-color:var(--accent-text)}
.arrow:hover .ico{transform:translateX(6px)}

/* ---------- 버튼 — 모서리는 각지게 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:15px 26px;border-radius:0;border:1px solid var(--rule-2);
  font-weight:700;font-size:14.5px;letter-spacing:-.01em;
  background:transparent;color:var(--fg);cursor:pointer;
  transition:background .2s ease,color .2s ease,border-color .2s ease
}
.btn:hover{border-color:var(--fg)}
.btn.sm{padding:11px 17px;font-size:13.5px}
/* 주 버튼 — 어느 바탕에서도 흰 글자가 4.6:1 로 읽힙니다 */
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.btn.primary:hover{background:var(--accent-soft);border-color:var(--accent-soft)}
.btn.solid{background:var(--text);border-color:var(--text);color:var(--ink)}
.btn.solid:hover{opacity:.86}
/* 사진 위에 놓이는 버튼. 뒤를 살짝 눌러 테두리와 글자가 묻히지 않게 합니다. */
.btn.glass{
  background:rgba(var(--ink-rgb),.42);color:#fff;
  border-color:rgba(255,255,255,.42);backdrop-filter:blur(6px)
}
.btn.glass:hover{background:rgba(var(--ink-rgb),.66);border-color:#fff}

/* ============================================================
   머리띠
   사진 위에서는 배경도 구분선도 없습니다. 사진이 그대로 이어집니다.
   히어로를 다 지나 스크롤하면 site.js 가 .scrolled 를 붙여
   그때 딥블랙 배경과 아래 선이 나타납니다.
   position:fixed 로 흐름에서 빼내야 사진이 머리띠 뒤까지 올라옵니다.
   (sticky 로 두면 머리띠가 자리를 차지해 사진 위에 띠가 남습니다.)
   ============================================================ */
header{
  position:fixed;top:0;left:0;right:0;z-index:60;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease
}
header.scrolled{
  background:rgba(var(--ink-rgb),.84);
  backdrop-filter:blur(16px);
  border-bottom-color:rgba(255,255,255,.06)
}
header.menu-open{background:var(--ink);backdrop-filter:none}

/* 브랜드는 왼쪽, 메뉴는 화면 정중앙, 로그인 영역은 오른쪽.
   양쪽 1fr 트랙을 같은 폭으로 잡아야 가운데 메뉴가 브랜드나
   로그인 영역의 글자 길이에 밀리지 않고 정중앙에 섭니다.
   minmax(0,1fr) 은 트랙이 내용 때문에 부풀어 오르는 것을 막습니다. */
nav{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;
  gap:clamp(12px,2vw,32px);
  height:var(--hdr)
}
.brand{justify-self:start}
.brand{font-weight:800;font-size:20px;letter-spacing:.08em;white-space:nowrap}
/* 머리띠의 이름만 표식을 앞에 달고 있어 가로줄로 세웁니다.
   꼬리말의 .brand 는 표식이 없으므로 그대로 블록으로 둡니다. */
/* 머리띠의 이름은 본문 글씨보다 한 단계 큽니다. 로고 표식은 그보다 작게 두어
   글씨가 주인공이 되게 합니다(표식이 크면 이름이 딸려 보입니다). */
header .brand{display:inline-flex;align-items:center;font-size:23px}
/* 이름 왼쪽의 로고 표식. 높이는 글씨에 맞추고 너비는 비율대로 따라갑니다.
   사이 간격은 gap 이 아니라 여백으로 줍니다. gap 을 쓰면 DOUBLE 과
   <span>Y</span> 도 각각 flex 항목이라 그 사이까지 벌어집니다. */
.brand-mark{flex:none;display:block;height:1.65em;width:auto;margin-right:10px}
.brand span{color:var(--accent)}
/* 이름과 그 아래 EXPERT NETWORK 를 로고처럼 두 줄로 쌓습니다.
   .brand span 이 Y 를 라임색으로 만드는 규칙이라, 그 규칙보다 구체적인
   선택자로 감싸개와 아랫줄의 색을 각각 되돌립니다. */
.brand .brand-words{display:flex;flex-direction:column;color:var(--text)}
.brand .brand-name{color:var(--text);line-height:1}
.brand .brand-tag{
  margin-top:1px;
  font-size:.43em;font-weight:700;letter-spacing:.235em;
  line-height:1;color:var(--muted)
}

/* 내비게이션은 기존 double_y 의 둥근 모양을 그대로 씁니다 */
.navlinks{display:flex;align-items:center;justify-self:center;gap:8px;font-size:15px}
.navlinks>li{position:relative}
.navlinks>li>a{
  display:flex;align-items:center;gap:7px;
  padding:10px 16px;border-radius:999px;
  color:var(--muted);font-weight:600;transition:.18s ease
}
.navlinks>li>a:hover,
.navlinks>li.active>a{color:#fff;background:rgba(255,255,255,.08)}
.navlinks>li.has-sub>a::after{
  content:"";width:5px;height:5px;flex:none;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:translateY(-2px) rotate(45deg);opacity:.7
}

/* 내려오는 메뉴 — 기존 double_y 그대로.
   둥근 모서리 16px, 짙은 면, 아래로 깔리는 그림자,
   항목은 10px 라운드에 라임빛 hover 입니다.
   .navlinks 안쪽으로 범위를 좁혔습니다. 전역 .sub 로 두면
   로그인·회원가입 화면의 <p class="sub"> 설명 문구가
   position:absolute 와 visibility:hidden 을 물려받아 사라집니다. */
.navlinks .sub{
  position:absolute;top:calc(100% + 8px);left:0;min-width:230px;
  /* 가운데 정렬된 메뉴에서는 마지막 항목의 펼침 메뉴가 오른쪽으로
     넘칠 수 있어, 아래의 :last-child 규칙으로 방향을 뒤집습니다. */
  padding:8px;list-style:none;margin:0;
  background:var(--panel-2);
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:0 22px 50px rgba(0,0,0,.5);
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .18s ease,transform .18s ease,visibility .18s
}
.navlinks>li:hover .sub,
.navlinks>li:focus-within .sub{opacity:1;visibility:visible;transform:translateY(0)}
.navlinks>li:nth-last-child(-n+2) .sub{left:auto;right:0}
.navlinks .sub a{
  display:block;padding:11px 14px;border-radius:10px;
  font-size:14px;color:#cfd8e2;transition:.16s ease
}
.navlinks .sub a:hover{background:var(--accent-dim);color:#fff}
.navlinks .sub li.active>a{color:var(--accent)}

.navauth{display:flex;align-items:center;justify-self:end;gap:14px;white-space:nowrap}
.navauth .txt{font-size:14px;font-weight:600;color:var(--muted)}
.navauth .txt:hover{color:#fff}
.navauth .sep{width:1px;height:18px;background:rgba(255,255,255,.18)}
/* 머리 안의 작은 버튼도 둥글게 — 내비게이션과 한 가족으로 둡니다 */
header .btn{border-radius:999px}
/* 로그인 상태에 따라 드러나는 요소 — 기본은 숨김이고,
   site.js(비로그인) 또는 auth.js(로그인 후)가 .show 를 붙입니다. */
[data-auth]{display:none}
[data-auth].show{display:inline-flex}
.whoami[data-auth].show{display:inline-block}
.whoami{font-size:13.5px;color:var(--muted)}
.whoami b{color:var(--text)}
.whoami .role{margin-left:6px;color:var(--accent);font-size:12px}

.navtoggle{
  display:none;margin-left:auto;width:44px;height:44px;
  border:1px solid var(--line);border-radius:12px;
  background:transparent;color:var(--text);cursor:pointer
}
/* 가운데 막대 하나에 ::before/::after 를 얹어 세 줄을 만들고,
   메뉴가 열리면(aria-expanded) 그대로 X 로 접힙니다. */
.navtoggle .bars{position:relative;display:block;margin:0 auto}
.navtoggle .bars,
.navtoggle .bars::before,
.navtoggle .bars::after{
  width:18px;height:1.5px;background:currentColor;border-radius:2px;
  transition:transform .22s ease,background-color .12s ease
}
.navtoggle .bars::before,
.navtoggle .bars::after{content:"";position:absolute;left:0}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{transform:translateY(6px) rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{transform:translateY(-6px) rotate(-45deg)}
@media (prefers-reduced-motion:reduce){
  .navtoggle .bars,.navtoggle .bars::before,.navtoggle .bars::after{transition:none}
}

/* 좁은 화면의 메뉴는 오른쪽에서 밀려 나오는 서랍입니다.
   머리띠(z-index 60) 위에 덮이도록 더 높은 층에 둡니다.
   닫혀 있을 때는 visibility:hidden 이라 탭 키로도 들어가지 않습니다. */
.mobilemenu{
  position:fixed;top:0;right:0;z-index:80;
  width:min(84vw,340px);height:100vh;height:100dvh;
  display:flex;flex-direction:column;gap:2px;
  padding:18px 22px 28px;
  overflow-y:auto;overscroll-behavior:contain;
  background:var(--ink);border-left:1px solid var(--line);
  box-shadow:-20px 0 50px rgba(0,0,0,.45);
  visibility:hidden;transform:translateX(100%);
  transition:transform .28s ease,visibility .28s ease
}
.mobilemenu.open{visibility:visible;transform:translateX(0)}

/* 서랍 뒤를 덮는 가림막. 여기를 눌러도 닫힙니다. */
.mm-scrim{
  position:fixed;inset:0;z-index:70;
  background:rgba(0,0,0,.55);backdrop-filter:blur(2px);
  opacity:0;transition:opacity .28s ease
}
.mm-scrim.show{opacity:1}
body.menu-lock{overflow:hidden}

/* 서랍이 머리띠의 메뉴 버튼을 덮으므로, 닫기 버튼을 서랍 안에 둡니다. */
.mm-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}
.mm-title{
  margin:0;font-size:11px;font-weight:800;letter-spacing:.3em;
  color:var(--muted)
}
.mm-close{
  position:relative;flex:none;width:40px;height:40px;margin-right:-8px;
  background:none;border:0;color:var(--text);cursor:pointer;border-radius:10px
}
.mm-close:hover{background:rgba(255,255,255,.06)}
/* 가운데 막대 하나를 ×자로 겹쳐 그립니다 */
.mm-close span,
.mm-close span::before{
  position:absolute;top:50%;left:50%;width:17px;height:1.6px;
  background:currentColor;border-radius:2px;content:""
}
.mm-close span{transform:translate(-50%,-50%) rotate(45deg)}
.mm-close span::before{top:0;left:0;transform:translate(0,0) rotate(-90deg)}
.mobilemenu>ul>li{border-bottom:1px solid rgba(255,255,255,.06)}
.mobilemenu>ul>li>a,
.mobilemenu .mm-top{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  width:100%;padding:14px 2px;
  background:none;border:0;color:var(--text);text-align:left;
  font:inherit;font-weight:700;font-size:16px;cursor:pointer
}

/* 펼침 표시는 ∨ 모양 화살표. 열리면 위로 뒤집힙니다. */
.mm-arrow{
  flex:none;width:9px;height:9px;margin-right:4px;
  border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);
  transform:rotate(45deg) translate(-2px,-2px);
  transition:transform .2s ease
}
.mm-top[aria-expanded="true"] .mm-arrow{
  transform:rotate(-135deg) translate(-2px,-2px);
  border-color:var(--accent)
}

/* 하위 메뉴는 버튼을 눌러야 열립니다. 높이는 site.js 가 실제 내용 높이를
   재서 픽셀로 지정합니다. grid 의 0fr ↔ 1fr 로 여닫으면 남는 공간 계산 탓에
   제목 줄 높이까지 같이 들썩여서(측정값 47px → 78px) 이 방법을 씁니다. */
.mobilemenu .sub-m{overflow:hidden;height:0;transition:height .24s ease}
/* 하위 항목은 상자 없이 글자만 둡니다. 제목보다 한 칸 들여쓰고
   색을 흐리게 해서 위아래 관계가 드러나게 합니다. */
.mobilemenu .sub-m a{
  display:block;padding:11px 0 11px 14px;
  font-size:15px;font-weight:500;color:var(--muted)
}
.mobilemenu .sub-m a:hover,
.mobilemenu .sub-m a:focus-visible{color:var(--text)}
.mobilemenu .sub-m a:last-child{padding-bottom:16px}
.mobilemenu .mm-cta{display:flex;flex-direction:column;gap:10px;padding-top:20px}
.mobilemenu .mm-cta .btn{justify-content:center}

@media (prefers-reduced-motion:reduce){
  .mobilemenu,.mm-scrim,.mobilemenu .sub-m,.mm-arrow{transition:none}
}

/* ============================================================
   히어로 — 사진이 첫 화면을 채우고 그 위에 글이 얹힙니다
   ============================================================ */
.hero{
  position:relative;isolation:isolate;overflow:hidden;
  display:flex;align-items:center;
  /* 머리띠가 position:fixed 라 흐름에서 빠졌으므로 화면 한 판을 그대로 씁니다.
     svh 는 휴대폰에서 주소창이 접혔다 펴져도 높이가 널뛰지 않게 해 주는
     단위이고, 못 읽는 브라우저는 위의 vh 를 씁니다.
     화면이 아주 낮을 때 글이 눌리지 않도록 600px 바닥을 둡니다.
     위 여백에 머리띠 높이를 더해, 가운데 정렬된 글이 머리띠와 겹치지 않게 합니다. */
  min-height:max(600px, 100vh);
  min-height:max(600px, 100svh);
  padding-top:calc(var(--hdr) + clamp(40px,5vw,86px));
  padding-bottom:clamp(56px,8vw,110px)
}
.hero-bg{position:absolute;inset:0;z-index:-2;display:block}
.hero-bg img{
  width:100%;height:100%;
  object-fit:cover;object-position:50% 45%;
  /* 이 사진은 왼쪽이 어둡고 오른쪽이 밝습니다(평균 밝기 0.057 대 0.620).
     글이 왼쪽에 놓이므로 사진 자체의 명암이 이미 대비를 만들어 줍니다.
     그래서 왼쪽을 세게 덧칠하지 않습니다. */
  /* 밝기는 세 단계를 비교해 .7 로 정했습니다.
     .78 은 사진이 슬로건과 시선을 다투고, .6 은 물음표와 분야 표시
     (현미경·책·그래프)가 묻힙니다. 흐림(blur)을 걸면 시선은 더
     모이지만 그 표시들이 사라져 이 그림을 쓰는 이유가 없어집니다. */
  filter:saturate(1) brightness(.7) contrast(1.03)
}
/* 두 겹의 그라데이션.
   가로 방향은 글이 놓이는 왼쪽을 살짝 눌러 주고, 오른쪽 위는 내비게이션
   글자가 읽히도록 조금 더 눌러 둡니다. 사진 자체가 왼쪽이 어두우므로
   예전만큼 세게 깔지 않습니다.
   세로 방향은 아래쪽을 먹색까지 떨어뜨려 다음 구역과 이어 붙입니다. */
.hero-scrim{
  position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    linear-gradient(to right,
      rgba(var(--ink-rgb),.6) 0%, rgba(var(--ink-rgb),.34) 34%,
      rgba(var(--ink-rgb),.2) 62%, rgba(var(--ink-rgb),.46) 100%),
    linear-gradient(to bottom,
      rgba(var(--ink-rgb),.66) 0%, rgba(var(--ink-rgb),.1) 26%,
      rgba(var(--ink-rgb),.2) 62%, var(--ink) 100%)
}
.hero-inner{position:relative;width:100%}

.hero-lock{
  display:inline-flex;align-items:center;gap:12px;
  font-size:12px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;
  color:rgba(255,255,255,.78)
}
.hero-lock .x{color:var(--accent);letter-spacing:0}
.hero h1{margin-top:clamp(22px,2.6vw,34px);max-width:19ch;color:#fff}
.hero h1 em{font-style:normal;color:var(--accent)}
/* 회사 이름을 히어로에서 가장 크게 세웁니다.
   여기가 첫 화면의 주인이고, 슬로건은 아래에서 이를 받칩니다. */
.hero h1.hero-brand{
  /* 줄바꿈을 막았으므로 가장 좁은 화면에서도 들어가는 크기가 바닥이어야 합니다.
     "DOUBLEY" 는 글자폭 합이 약 4.9em 이라 320px 화면에서 44px 까지 들어가고,
     그 위로는 10vw 로 커져 1200px 단에서 120px 에 멈춥니다. */
  font-size:clamp(40px,10vw,120px);line-height:.92;
  /* 머리띠·꼬리말의 이름은 자간을 벌려 로고처럼 씁니다(.brand 는 .08em).
     이 크기에서 그만큼 벌리면 너무 흩어지므로 흔적만 남깁니다.
     .en 의 -.05em 을 덮어써야 하므로 여기서 다시 지정합니다. */
  letter-spacing:.015em;
  max-width:none;white-space:nowrap
}
/* 이름의 Y 만 라임색입니다. 머리띠와 꼬리말의 .brand span 과 같은 규칙이라
   세 곳에서 같은 모양으로 읽힙니다. */
.hero h1.hero-brand span{color:var(--accent)}

/* 슬로건은 이름 바로 아래에서 이름을 설명하는 자리입니다.
   이름보다 확실히 작아야 위계가 뒤집히지 않으므로 1/4 쯤으로 둡니다. */
.hero-slogan{
  margin-top:clamp(10px,1.1vw,16px);
  font-size:clamp(19px,2.6vw,34px);font-weight:800;line-height:1;
  letter-spacing:-.03em;color:rgba(255,255,255,.92);white-space:nowrap
}
.hero-slogan em{font-style:normal;color:var(--accent)}
.hero-sub{
  margin-top:clamp(22px,2.4vw,32px);
  font-size:clamp(16px,1.2vw,19.5px);color:#dbe3ea;max-width:44ch
}
.hero-sub strong{color:#fff;font-weight:700}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(26px,3vw,38px)}

/* ============================================================
   히어로 아래 한 줄 선언
   ============================================================ */
.statement{padding-block:clamp(56px,7vw,108px)}
.say{
  font-size:clamp(21px,2.5vw,38px);font-weight:800;line-height:1.32;
  letter-spacing:-.035em;
  /* 줄바꿈은 HTML 의 <br> 로 지정했습니다. 한글은 ch 단위가 실제 글자 폭과
     맞지 않아 폭으로 줄을 맞추면 끊기는 자리가 어색해집니다. */
  max-width:56ch
}
.say em{font-style:normal;color:var(--accent-text)}
.tags{
  display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:clamp(28px,3.4vw,44px);
  padding-top:22px;border-top:1px solid var(--rule)
}
.tags span{font-size:13px;color:var(--faint)}
.tags span+span::before{content:"\00b7";margin-right:10px;color:var(--rule-2)}

/* ============================================================
   최근 공지 — 한 건당 한 줄
   왼쪽 라벨 / 오른쪽 목록은 아래 섹션들과 같은 짜임(.split)을 씁니다.
   날짜는 작게 두고 제목이 앞에 서게 했습니다. 날짜를 크게 두면
   제목보다 먼저 읽혀서 정작 중요한 내용이 뒤로 밀립니다.
   목록은 assets/page-home.js 가 채웁니다.
   ============================================================ */
.newsband{
  background:var(--panel);border-block:1px solid var(--line);
  padding-block:clamp(30px,3.4vw,46px)
}
.newsband .split{gap:clamp(20px,3vw,60px)}
.newsband .side{position:static}
.newsband .side .note{margin-top:8px;font-size:15px;color:var(--text);font-weight:700}
.arrow.sm{
  margin-top:14px;font-size:13.5px;padding-bottom:2px;
  border-bottom-color:var(--rule)
}
.arrow.sm .ico{width:14px;height:11px}

.news{border-top:1px solid var(--rule-2)}
.news li{border-bottom:1px solid var(--rule)}
.news a{
  display:grid;align-items:center;
  grid-template-columns:minmax(0,104px) minmax(0,1fr) 20px;
  gap:clamp(12px,2vw,26px);
  padding:clamp(13px,1.5vw,17px) clamp(10px,1.2vw,14px);
  margin-inline:calc(-1 * clamp(10px,1.2vw,14px));
  transition:background .2s ease
}
.news a:hover{background:var(--panel-2)}
.news-date{
  font-size:12.5px;font-weight:700;letter-spacing:.04em;
  color:var(--faint);white-space:nowrap
}
.news-title{
  font-size:15.5px;font-weight:600;line-height:1.5;
  letter-spacing:-.015em;color:var(--text)
}
.news .ico{width:16px;height:12px;color:var(--accent);opacity:0;transition:opacity .2s ease,transform .25s cubic-bezier(.2,.7,.3,1)}
.news a:hover .ico{opacity:1;transform:translateX(4px)}
.news a:hover .news-title{color:var(--accent)}
.news a:hover .news-date{color:var(--muted)}

/* 공지가 없거나 못 불러왔을 때 */
.news-note{padding:clamp(18px,2vw,26px) 0;font-size:14.5px;color:var(--muted)}
.news-note a{color:var(--accent)}

/* ============================================================
   섹션 공통 — 왼쪽에 큰 번호, 오른쪽에 본문
   ============================================================ */
section{position:relative}
/* sticky 머리 높이만큼 미리 띄워 앵커 이동 시 제목이 가려지지 않게 합니다 */
section[id],main[id]{scroll-margin-top:92px}
.sec{padding-block:var(--sec)}
.sec+.sec{border-top:1px solid var(--rule)}
/* WHOWISE 구역만 한 단계 떠 있는 면으로 두어 지면에서 구분됩니다 */
.sec.raise{background:var(--panel)}
.sec.raise+.sec,.sec+.sec.raise{border-top:0}

.split{
  display:grid;grid-template-columns:minmax(0,270px) minmax(0,1fr);
  gap:clamp(24px,4vw,90px)
}
.split>.side{position:sticky;top:110px;align-self:start}

/* 섹션 번호 — 이 디자인의 표지판입니다 */
.sec-no{
  display:block;font-size:clamp(52px,6vw,92px);font-weight:800;
  line-height:.9;letter-spacing:-.06em;color:var(--accent-text)
}
.side .micro{margin-top:16px}
.side .note{margin-top:12px;font-size:14px;color:var(--muted);max-width:28ch}

/* 번호가 붙은 큰 행 (WHY / WHO) */
.bigrow{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);
  gap:clamp(16px,3vw,48px);padding-block:clamp(32px,3.8vw,54px);
  border-top:1px solid var(--rule);align-items:start
}
/* 낱말은 절대 줄바꿈하지 않습니다. WHY·WHO 처럼 짧은 낱말은 크게 두고,
   MISSION·VISION 처럼 긴 낱말에는 .sm 을 붙여 칸에 들어가는 크기로 줄입니다. */
.bigrow .word{
  font-size:clamp(44px,6vw,88px);font-weight:800;line-height:.95;
  letter-spacing:-.055em;white-space:nowrap
}
.bigrow .word.sm{font-size:clamp(30px,4vw,58px)}
.bigrow .word span{color:var(--accent-text)}
.bigrow p{color:var(--muted);font-size:clamp(15.5px,1.05vw,18px)}
.bigrow p strong{color:var(--fg);font-weight:700}

/* ============================================================
   WHOWISE — 지면 가운데에 먹색 구역을 한 판 깔았습니다
   ============================================================ */
.plogo{font-size:clamp(34px,4.6vw,72px);font-weight:800;letter-spacing:-.05em;line-height:1}
.plogo span{color:var(--accent)}
.ptag{margin-top:14px;font-size:14px;font-weight:700;letter-spacing:.06em;color:var(--muted)}

/* 열 수는 --cols 로 바꿉니다. 예) style="--cols:3" */
.cells{
  display:grid;grid-template-columns:repeat(var(--cols,4),1fr);
  margin-top:clamp(38px,4.6vw,68px);border-top:1px solid var(--rule-2)
}
.cell{padding:clamp(24px,2.6vw,38px) clamp(14px,1.6vw,26px);border-left:1px solid var(--rule)}
.cell:first-child{border-left:0;padding-left:0}
.cell .no{font-size:12px;font-weight:800;letter-spacing:.16em;color:var(--accent-text)}
.cell h3{margin-top:18px;font-size:clamp(17px,1.35vw,21px)}
.cell p{margin-top:11px;font-size:14.5px;color:var(--muted)}

/* 세 갈래를 상자가 아니라 가로로 긴 줄로 놓습니다.
   줄에 마우스를 올리면 왼쪽에서 테라코타 띠가 자라납니다. */
.rows{margin-top:clamp(34px,4vw,58px);border-top:1px solid var(--rule-2)}
.rows li{border-bottom:1px solid var(--rule)}
.rows a{
  position:relative;display:grid;align-items:center;
  grid-template-columns:minmax(0,116px) minmax(0,1fr) minmax(0,1.15fr) 24px;
  gap:clamp(14px,2.4vw,36px);
  padding:clamp(22px,2.6vw,34px) clamp(14px,1.6vw,20px);
  margin-inline:calc(-1 * clamp(14px,1.6vw,20px))
}
.rows a{transition:background .22s ease}
/* 링크가 아닌 줄 — 눌러도 갈 곳이 없으므로 hover 반응을 주지 않습니다 */
.rows .rowbox{
  display:grid;align-items:center;
  grid-template-columns:minmax(0,116px) minmax(0,1fr) minmax(0,1.15fr) 24px;
  gap:clamp(14px,2.4vw,36px);
  padding:clamp(22px,2.6vw,34px) clamp(14px,1.6vw,20px);
  margin-inline:calc(-1 * clamp(14px,1.6vw,20px))
}
/* 이 줄들은 이미 회색 면(--panel) 위에 있으므로
   마우스를 올리면 한 단계 더 밝은 면(--panel-2)으로 올립니다. */
.rows a:hover{background:var(--panel-2)}
.rows a::before{
  content:"";position:absolute;left:0;bottom:-1px;height:2px;width:0;
  background:var(--accent);transition:width .35s cubic-bezier(.2,.7,.3,1)
}
.rows a:hover::before{width:100%}
/* 줄마다 라벨 길이가 달라도 모두 한 줄에 들어가게 둡니다.
   한글은 자간을 넓히면 금방 칸을 넘으므로 영문보다 좁게 줍니다. */
.rows .tag{
  font-size:11.5px;font-weight:800;letter-spacing:.14em;
  color:var(--accent-text);white-space:nowrap;align-self:center
}
.rows h3{font-size:clamp(19px,1.7vw,26px)}
.rows p{font-size:14.5px;color:var(--muted)}
.rows .ico{width:16px;height:12px;color:var(--accent-text);transition:transform .25s cubic-bezier(.2,.7,.3,1)}
.rows a:hover .ico{transform:translateX(6px)}

/* ============================================================
   연결 구조 — 상자를 없애고 세로 선 하나로 나눕니다
   ============================================================ */
.bridge{
  display:grid;grid-template-columns:1fr 1fr;
  margin-top:clamp(34px,4vw,58px);border-top:1px solid var(--rule-2)
}
.bridge-col{padding:clamp(26px,3vw,42px) clamp(20px,2.6vw,44px) 0 0}
.bridge-col+.bridge-col{border-left:1px solid var(--rule);padding-left:clamp(20px,2.6vw,44px)}
.bridge-col h3{margin-top:10px;font-size:clamp(19px,1.7vw,26px)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px;align-items:center}
.chip{
  padding:8px 14px;border:1px solid var(--line);
  background:var(--panel);font-size:13px;color:var(--muted);
  /* 알약 안의 글자가 두 줄로 꺾이거나, 옆 알약 높이에 맞춰 늘어나지 않게 */
  display:inline-flex;align-items:center;white-space:nowrap;line-height:1.4
}
/* '.field' 는 입력칸 묶음의 이름이기도 해서 아래 여백이 붙습니다.
   분야 알약(.chip.field)에는 그 여백이 붙지 않게 합니다. */
.chip.field{margin:0}

.values{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--rule-2);margin-top:clamp(38px,4.4vw,64px)}
.value{padding:clamp(26px,3vw,42px) clamp(14px,2vw,32px);border-left:1px solid var(--rule)}
.value:first-child{border-left:0;padding-left:0}
.value h3{font-size:clamp(17px,1.35vw,21px)}
.value h3 em{font-style:normal;color:var(--accent-text)}
.value p{margin-top:12px;font-size:14.5px;color:var(--muted)}

/* ============================================================
   문의 — 테라코타 면 한 판으로 브랜드 색을 강하게 씁니다
   면 위 글자는 불투명도가 곧 대비입니다. 작은 라벨 4.5:1,
   테두리 3:1 을 넘기도록 값을 잡아 두었습니다.
   ============================================================ */
.cta{background:var(--accent);color:var(--ink);padding-block:clamp(64px,7.6vw,116px)}
/* 라임은 아주 밝아서 반투명 딥블랙 글자는 대비가 넉넉합니다.
   다만 보조 버튼 테두리는 옅으면 경계가 사라지므로(기준 3:1)
   불투명도를 .5 까지 올려 3.1:1 을 맞췄습니다. */
.cta .micro{color:rgba(var(--ink-rgb),.62)}
.cta h2{margin-top:20px;font-size:clamp(30px,4.2vw,62px);line-height:1.04;letter-spacing:-.04em;max-width:22ch}
.cta p{margin-top:22px;font-size:clamp(16px,1.1vw,18.5px);color:rgba(var(--ink-rgb),.74);max-width:52ch}
.cta-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,3vw,40px)}
.cta .btn.solid{background:var(--ink);border-color:var(--ink);color:var(--text)}
.cta .btn.solid:hover{background:var(--ink-deep);border-color:var(--ink-deep);opacity:1}
.cta .btn.line{border-color:rgba(var(--ink-rgb),.5);color:var(--ink)}
.cta .btn.line:hover{background:rgba(var(--ink-rgb),.09);border-color:var(--ink)}

/* ============================================================
   꼬리
   ============================================================ */
footer{background:var(--ink-deep);padding-block:clamp(54px,6vw,88px) 0}
.foot-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.1fr);gap:clamp(30px,4vw,70px)}
footer .brand{font-size:21px;color:var(--text)}
footer .brand span{color:var(--accent)}
.foot-about{margin-top:16px;max-width:30ch;font-size:14px;color:var(--muted)}
.foot-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.4vw,34px)}
.foot-nav h4{font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.foot-nav ul{margin-top:16px;display:grid;gap:11px}
.foot-nav a{font-size:14px;color:var(--muted)}
.foot-nav a:hover{color:var(--text)}
.foot-nav a.em{color:#cfd8e2;font-weight:600}

.foot-biz{
  display:flex;flex-wrap:wrap;gap:8px 22px;
  margin-top:clamp(40px,4.6vw,66px);padding-top:26px;border-top:1px solid var(--rule);
  font-size:13px;color:var(--muted)
}
/* 항목 이름(대표 · 주소 등)은 값과 구분되게 진하고 밝게 둡니다 */
.foot-biz b{font-weight:700;color:#d4dce4}

/* 사업자 등록 후 채울 자리 — 비어 있는 동안 눈에 띄게 표시합니다 */
.todo{color:var(--accent);border-bottom:1px dashed rgba(183,255,90,.5)}

.foot-row{
  display:flex;flex-wrap:wrap;gap:12px 26px;align-items:center;
  margin-top:24px;padding-block:22px 26px;border-top:1px solid var(--rule);
  font-size:13px;color:var(--faint)
}
.foot-row .legal{display:flex;gap:18px}
.foot-row .legal a:hover{color:var(--text)}
.foot-row .push{margin-left:auto}

/* ============================================================
   스크롤 등장 효과 — 클래스는 site.js 가 붙입니다.
   자바스크립트가 막힌 환경에서도 내용이 숨겨진 채 남지 않도록
   기본 상태를 "보임"으로 두었습니다.
   ============================================================ */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.3,1)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* ============================================================
   반응형
   ============================================================ */
@media (max-width:1080px){
  /* 공지 띠의 왼쪽 라벨이 위로 쌓이면 자리를 많이 먹습니다.
     좁은 화면에서는 라벨과 전체 보기를 한 줄로 눕힙니다. */
  .newsband .side{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
  .newsband .side .micro{width:100%}
  .newsband .side .note{margin-top:0}
  .newsband .arrow.sm{margin-top:0;margin-left:auto}

  /* 메뉴와 로그인 영역이 숨으므로 3단 그리드를 풀고
     브랜드와 메뉴 버튼만 양끝에 놓습니다. */
  nav{display:flex;gap:16px}
  .navlinks,.navauth{display:none}
  .navtoggle{display:block}
  .split{grid-template-columns:1fr;gap:clamp(26px,4vw,40px)}
  .split>.side{position:static}
  .side .note{max-width:46ch}
  .bigrow{grid-template-columns:1fr;gap:12px}
  .rows a,.rows .rowbox{grid-template-columns:minmax(0,110px) minmax(0,1fr) 24px}
  .rows p{grid-column:2 / -1;margin-top:8px}
  .foot-top{grid-template-columns:1fr}
}
@media (max-width:860px){
  .cells,.values{grid-template-columns:repeat(2,1fr)}
  .news a{grid-template-columns:minmax(0,92px) minmax(0,1fr) 20px}
  .cell:nth-child(odd),.value:nth-child(odd){border-left:0;padding-left:0}
  .value:nth-child(n+3),.cell:nth-child(n+3){border-top:1px solid var(--rule)}
  .bridge{grid-template-columns:1fr}
  .bridge-col{padding-right:0}
  .bridge-col+.bridge-col{border-left:0;border-top:1px solid var(--rule);padding-left:0}
  .foot-nav{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:700px){
  .notice-list li{grid-template-columns:1fr;gap:10px}
  .notice-list .date{text-align:left}
  .deflist li{grid-template-columns:1fr;gap:6px}
}
@media (max-width:560px){
  .cells,.values{grid-template-columns:1fr}
  .cell,.value{border-left:0;padding-left:0}
  .cell+.cell,.value+.value{border-top:1px solid var(--rule)}
  .rows a,.rows .rowbox{grid-template-columns:minmax(0,1fr) 24px;gap:10px}
  .rows .tag{grid-column:1 / -1}
  .rows p{grid-column:1 / -1}
}

/* ============================================================
   하위 페이지 머리 — 사진 없이 제목만 놓는 구역
   머리띠가 position:fixed 라 위 여백에 머리 높이를 더해 둡니다.
   ============================================================ */
.page-hero{
  padding-top:calc(var(--hdr) + clamp(44px,5.4vw,92px));
  padding-bottom:clamp(52px,6vw,96px);
  border-bottom:1px solid var(--rule)
}
.crumb{font-size:13px;color:var(--faint)}
.crumb a{color:var(--muted)}
.crumb a:hover{color:var(--text)}
.crumb span{margin:0 8px;opacity:.5}
/* 상위 항목의 색은 링크든 일반 글자든 같아야 합니다.
   자기 페이지를 가리키던 링크를 일반 글자로 바꾼 페이지에서
   이 클래스를 붙여 링크와 같은 색으로 맞춥니다.
   위의 .crumb span 은 구분 기호(/)용이라 여백과 투명도를 되돌립니다. */
.crumb .root{margin:0;opacity:1;color:var(--muted)}
.page-hero .micro{margin-top:clamp(22px,2.6vw,32px)}
.page-hero h1{margin-top:14px;max-width:22ch}
/* 작은 라벨 없이 빵부스러기 바로 아래 제목이 오는 페이지에서는
   라벨이 차지하던 만큼 위 여백을 대신 줍니다. */
.page-hero .crumb + h1{margin-top:clamp(26px,3vw,40px)}
.page-hero h1 em{font-style:normal;color:var(--accent)}
.page-hero .lead{max-width:56ch}
.page-hero .hero-actions{margin-top:clamp(26px,3vw,36px)}

/* ---------- 항목 정의 목록 (회사명 / 슬로건 / ...) ---------- */
.deflist{margin-top:clamp(38px,4.4vw,64px);border-top:1px solid var(--rule-2)}
.deflist li{
  display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);
  gap:clamp(12px,2.4vw,40px);
  padding:clamp(18px,2vw,26px) 0;border-bottom:1px solid var(--rule)
}
.deflist b{
  font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--faint);padding-top:.28em
}
.deflist span{font-size:15.5px;color:var(--muted)}
.deflist a{color:var(--accent)}

/* ---------- 인용 한 줄 ---------- */
.quote{
  margin-top:clamp(38px,4.4vw,64px);
  /* 좌우 여백이 0 이면 글자가 테두리에 붙습니다. 위아래와 함께 줍니다. */
  padding:clamp(24px,2.8vw,38px) clamp(22px,2.6vw,34px);
  border:1px solid var(--line);background:var(--panel);
  font-size:clamp(17px,1.8vw,25px);font-weight:700;line-height:1.5;
  letter-spacing:-.025em;max-width:56ch
}
.quote em{font-style:normal;color:var(--accent)}

/* ============================================================
   공지사항
   목록은 page-notice.js 가 그립니다. 그쪽이 붙이는 클래스
   (.badge .date .nbody .pager .pg-gap .empty-row)와
   눌러서 펼치는 .open 상태를 여기서 꾸밉니다.
   ============================================================ */
.notice-list{border-top:1px solid var(--rule-2)}
/* 설명 문단 바로 아래에 목록이 오면 윗선이 글에 붙어 답답합니다.
   Academy 자료실처럼 문단 다음에 놓일 때만 여백을 둡니다. */
.lead + .notice-list{margin-top:clamp(30px,3.4vw,50px)}
.notice-list li{
  display:grid;grid-template-columns:96px minmax(0,1fr) 120px;
  gap:clamp(12px,2vw,22px);align-items:center;
  padding:clamp(20px,2.2vw,28px) clamp(12px,1.4vw,18px);
  margin-inline:calc(-1 * clamp(12px,1.4vw,18px));
  border-bottom:1px solid var(--rule);
  cursor:pointer;transition:background .2s ease
}
.notice-list li:hover{background:var(--panel)}
.badge{
  display:inline-block;padding:6px 12px;border-radius:999px;
  font-size:12px;font-weight:800;
  /* 짧은 상태 말이라 좁은 칸에서도 꺾이지 않게 한 줄로 둡니다 ('대화 중' 이 두 줄로 갈라지던 문제) */
  white-space:nowrap;line-height:1.2;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(183,255,90,.3)
}
.badge.gray{background:var(--panel-2);color:var(--muted);border-color:var(--line)}
/* 회원의 답을 기다리는 상태. 라임(완료)도 회색(대기)도 아닌
   '무언가 할 일이 있다' 는 뜻이라 색을 따로 씁니다. */
.badge.warn{background:rgba(255,183,77,.14);color:#ffc266;border-color:rgba(255,183,77,.34)}
.notice-list h3{font-size:clamp(16px,1.35vw,19px);font-weight:700;letter-spacing:-.02em}
.notice-list .date{font-size:13.5px;color:var(--faint);text-align:right}
/* 본문은 접혀 있고, 줄을 누르면 .open 이 붙어 펼쳐집니다 */
.notice-list .nbody{
  grid-column:1 / -1;display:none;margin-top:16px;
  padding:clamp(18px,2vw,24px);
  background:var(--panel);border:1px solid var(--line);
  color:#cfd8e2;font-size:15px;line-height:1.8;white-space:pre-wrap
}
.notice-list li.open .nbody{display:block}
.notice-list li.open h3{color:var(--accent)}
.notice-list .empty-row{padding:clamp(34px,4.4vw,60px) 0;color:var(--faint);font-size:15px}

/* ============================================================
   첨부파일 목록 — Academy 자료실
   관리자 화면(.filelist)과 공개 화면(.attach)이 같은 모양을 씁니다.
   종류 · 이름 · 크기 세 칸이고, 좁은 화면에서는 이름이 줄바꿈됩니다.
   ============================================================ */
.filelist,.attach{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.attach{margin-top:18px}
.filelist li,.attach li{
  display:flex;align-items:center;flex-wrap:wrap;gap:10px;
  padding:11px 14px;border:1px solid var(--line);border-radius:10px;
  background:var(--panel-2);font-size:14px
}
.filelist li.none{
  justify-content:center;color:var(--faint);border-style:dashed;background:transparent
}
/* 종류 표시(PDF · 이미지 · 한글 …). 길이가 제각각이라 폭을 고정해
   이름이 같은 자리에서 시작하게 합니다. */
.filelist .ft,.attach .ft{
  flex:none;min-width:48px;text-align:center;
  padding:3px 8px;border-radius:6px;
  background:var(--accent-dim);color:var(--accent);
  font-size:11px;font-weight:800;letter-spacing:.04em
}
.filelist li>a,.attach li>a{
  flex:1 1 auto;min-width:0;color:var(--text);font-weight:600;
  overflow-wrap:anywhere;text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:rgba(255,255,255,.25)
}
.filelist li>a:hover,.attach li>a:hover{color:var(--accent);text-decoration-color:var(--accent)}
.filelist .fs,.attach .fs{flex:none;color:var(--faint);font-size:12.5px}

/* 목록에서 첨부가 있다는 표시 */
.notice-list .clip{
  display:inline-block;margin-left:6px;padding:3px 8px;border-radius:999px;
  background:var(--panel-2);border:1px solid var(--line);
  color:var(--muted);font-size:11.5px;font-weight:700;vertical-align:middle
}
.notice-list .nbody .txt{white-space:pre-wrap}

/* ---------- 교육 신청 ---------- */
/* 펼친 글 안의 신청 버튼 줄 */
.apply-row{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px;
  margin-top:20px;padding-top:18px;border-top:1px solid var(--line)
}
.apply-note{font-size:13px;color:var(--faint)}
/* 마감된 과정의 버튼. 누를 수 없다는 것이 보이게 눌린 느낌을 뺍니다. */
.btn.is-off{
  opacity:.5;cursor:default;pointer-events:none;
  border-color:var(--line);color:var(--muted)
}
/* 목록 제목 옆의 '신청 접수 중' 표시 */
.notice-list .clip.open{
  background:var(--accent-dim);border-color:rgba(183,255,90,.3);color:var(--accent)
}
/* 신청 화면 맨 위에 어떤 과정인지 보여 주는 칸 */
.apply-course{
  padding:clamp(18px,2vw,24px);margin-bottom:clamp(22px,2.4vw,30px);
  background:var(--panel);border:1px solid var(--line);border-radius:14px
}
.apply-course h2{margin-top:10px;font-size:clamp(18px,1.6vw,22px);letter-spacing:-.02em}
.apply-course .d{margin-top:8px;font-size:13.5px;color:var(--muted)}
/* 정원이 찼을 때 신청 화면 위에 띄우는 안내 */
/* 토스 결제위젯이 그려지는 자리. 위젯이 자체 배경(흰색)을 쓰므로
   둥근 모서리로 잘라 어두운 화면 위에서도 튀지 않게 합니다. */
.pay-widget{margin-top:18px;border-radius:12px;overflow:hidden}
.pay-widget:empty{margin-top:0}

/* ============================================================
   파일 선택 칸
   브라우저 기본 모양은 밝은 회색이라 어두운 화면에서 혼자 튑니다.
   테두리를 점선으로 두어 "여기에 올린다" 는 느낌을 줍니다.
   ============================================================ */
input[type=file]{
  display:block;width:100%;padding:12px 14px;
  background:var(--panel);border:1px dashed var(--line);border-radius:12px;
  color:var(--muted);font-family:inherit;font-size:13.5px;
  cursor:pointer;transition:border-color .18s ease,background .18s ease
}
input[type=file]:hover{border-color:#3a4653;background:var(--panel-2)}
input[type=file]:focus-visible{outline:none;border-color:var(--accent)}
/* 안쪽의 '파일 선택' 버튼도 사이트 버튼과 같은 모양으로 맞춥니다 */
input[type=file]::file-selector-button{
  margin-right:14px;padding:9px 16px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:8px;
  color:var(--text);font-family:inherit;font-weight:700;font-size:13px;
  cursor:pointer;transition:.18s ease
}
input[type=file]::file-selector-button:hover{border-color:var(--accent);color:var(--accent)}

/* ============================================================
   도구 줄의 선택 상자 (관리자 표 위 등)
   .field 안의 것과 같은 모양이되, 줄에 얹히도록 조금 작게 둡니다.
   화살표는 기본 모양을 지우고 직접 그립니다(기본은 밝은 색이라 눈에 띕니다).
   ============================================================ */
.admin-bar select{
  appearance:none;-webkit-appearance:none;
  padding:11px 40px 11px 14px;
  background-color:var(--panel-2);
  /* 기본 화살표는 밝은 색이라 어두운 칸에서 튑니다. 직접 그린 꺾쇠로 바꿉니다. */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23aeb8c4' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 15px center;
  background-size:11px 7px;
  border:1px solid var(--line);border-radius:10px;
  color:var(--text);font-family:inherit;font-size:14px;font-weight:600;
  cursor:pointer;transition:border-color .18s ease
}
.admin-bar select:hover{border-color:#3a4653}
.admin-bar select:focus{outline:none;border-color:var(--accent)}

/* ============================================================
   신청 현황의 결제 칸
   배지 · 금액은 윗줄, 환불 · 영수증 버튼은 아랫줄로 나눠
   줄 높이가 들쭉날쭉해지지 않게 합니다.
   ============================================================ */
/* ============================================================
   잠긴 칸 — 소속 인증 전의 전문가 프로필
   칸을 감추지 않고 흐리게 둡니다. 무엇을 적게 되는지 미리 보이고,
   인증만 마치면 바로 쓸 수 있다는 것이 드러납니다.
   ============================================================ */
.lock-note{
  margin-top:22px;padding:clamp(16px,1.8vw,20px);
  background:rgba(255,183,77,.10);border:1px solid rgba(255,183,77,.28);
  border-radius:12px;color:#ffc266;font-size:14px;line-height:1.75
}
.lock-note b{color:#ffd08a}
.lock-note a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.panel.locked .field,
.panel.locked .editor,
.panel.locked .actions{opacity:.55}
.panel.locked .lock-note{opacity:1}
.panel.locked input:disabled,
.panel.locked textarea:disabled,
.panel.locked select:disabled{cursor:not-allowed}

.paycell{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.paycell .btn.mini{min-width:62px;justify-content:center}
/* 환불은 되돌릴 수 없는 일이라 빨간색을 쓰되, 옆의 영수증 버튼과 같은
   테두리 형태로 맞춥니다. 채운 빨강은 표 안에서 혼자 튑니다.
   누르기 직전(hover)에는 채워서 경고를 분명히 합니다. */
.paycell .btn.danger.mini{
  background:transparent;border:1px solid rgba(255,107,107,.45);color:#ff8f8f
}
.paycell .btn.danger.mini:hover{background:#e5484d;border-color:#e5484d;color:#fff}

/* 결제 금액 안내 */
.apply-pay{
  margin-top:12px;font-size:14.5px;font-weight:700;color:var(--accent)
}
.apply-warn{
  margin-top:14px;padding:12px 14px;border-radius:10px;
  background:rgba(255,183,77,.12);border:1px solid rgba(255,183,77,.3);
  color:#ffc266;font-size:13.5px;line-height:1.7
}
/* 숫자 칸은 넓을 필요가 없습니다. display:block 이 없으면 줄 안에 남아
   라벨과 같은 줄에 붙어 버립니다. */
.field input[type=number]{display:block;max-width:160px}
/* 신청 현황의 상태 칸 — 표시와 버튼이 한 줄에 놓이게 합니다 */
/* 표 칸 안에서 표시와 버튼이 한 줄에 나란히 서게 합니다.
   표는 칸 너비를 내용에 맞춰 다시 계산하므로, 묶어 두지 않으면
   글자가 길어질 때(되돌리기) 버튼이 아래로 떨어집니다. */
.dy td .cellrow{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
/* 표 안에서 상태를 바꾸는 작은 선택 상자 */
.dy .mini-sel,.mem-tools .mini-sel{
  appearance:none;-webkit-appearance:none;
  padding:6px 26px 6px 10px;border:1px solid var(--line);border-radius:8px;
  background-color:var(--panel-2);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23aeb8c4' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center;background-size:9px 6px;
  color:var(--text);font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer
}
.dy .mini-sel:focus,.mem-tools .mini-sel:focus{outline:none;border-color:var(--accent)}
/* 취소된 신청은 흐리게 둡니다 */
.dy tr.off td{opacity:.45}
.dy tr.off .mini-sel{opacity:1}
/* 표 위 도구 줄에 들어가는 작은 체크칸 */
.checkline.mini{font-size:13px;color:var(--muted);gap:8px}
.checkline.mini input{width:15px;height:15px}

/* ============================================================
   소속 인증 심사 (관리자)
   한 신청서를 카드 한 장으로 봅니다. 표로 만들면 증빙 링크와
   메모가 칸에 눌려 읽기 어렵습니다.
   ============================================================ */
.adm-list.wide li.vcard{
  display:block;padding:clamp(18px,2vw,24px);
  border:1px solid var(--line);border-radius:14px;background:var(--panel);
  margin-bottom:14px
}
.vhead{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px}
.vhead b{font-size:16px}
.vhead .micro{color:var(--faint)}
.deflist.tight{margin-top:0;border-top:0}
.deflist.tight li{
  grid-template-columns:minmax(0,150px) minmax(0,1fr);
  padding:9px 0;border-bottom:1px solid var(--rule);font-size:14px
}
.deflist.tight li:last-child{border-bottom:0}
.deflist.tight .none{color:var(--faint)}
.vact{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.vact .vnote{
  flex:1 1 320px;min-width:0;padding:11px 14px;
  background:var(--panel-2);border:1px solid var(--line);
  color:var(--text);font-family:inherit;font-size:14px
}
.vact .vnote:focus{outline:none;border-color:var(--accent)}
/* 인증 상태 안내 문구의 성공 · 실패 색 */
.hint.ok{color:var(--accent)}
.hint.err{color:#ff8f8f}

.pager{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:clamp(26px,3vw,40px)}
.pager button{
  min-width:40px;height:40px;padding:0 12px;
  border:1px solid var(--line);border-radius:999px;background:transparent;
  color:var(--muted);font-family:inherit;font-weight:700;font-size:14px;
  cursor:pointer;transition:.18s ease
}
.pager button:hover:not(:disabled){color:var(--text);background:var(--panel);border-color:#3a4653}
.pager button[aria-current="page"]{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.pager button:disabled{opacity:.35;cursor:default}
.pager .pg-gap{color:var(--faint);padding:0 2px}
.empty-note{margin-top:clamp(26px,3vw,40px);font-size:14.5px;color:var(--muted)}
.empty-note a{color:var(--accent)}

/* ============================================================
   약관 · 개인정보 처리방침 등 긴 문서
   본문은 원본 double_y 에서 그대로 옮겨왔고 스타일만 새로 씁니다.
   둥근 모서리를 없애고 구획은 선으로만 나눕니다.
   ============================================================ */
.legal{max-width:880px}
.legal .updated{
  display:flex;gap:10px;flex-wrap:wrap;align-items:center;
  padding:16px 18px;background:var(--panel);border:1px solid var(--line);
  font-size:13.5px;color:var(--muted);margin-bottom:clamp(30px,3.4vw,44px)
}
.legal .updated b{color:var(--text)}

.legal .toc{
  margin:0 0 clamp(38px,4.4vw,60px);padding:clamp(22px,2.4vw,30px);
  background:var(--panel);border:1px solid var(--line)
}
.legal .toc h2{
  font-size:12px;margin:0 0 16px;padding-top:0;border-top:none;
  letter-spacing:.18em;text-transform:uppercase;color:var(--faint);font-weight:800
}
.legal .toc ol{margin:0;padding-left:20px;display:grid;gap:9px;font-size:14.5px;list-style:decimal}
.legal .toc a{color:#cfd8e2}
.legal .toc a:hover{color:var(--accent)}
.legal .toc li::marker{color:var(--faint)}

.legal h2{
  font-size:clamp(19px,1.7vw,24px);line-height:1.38;letter-spacing:-.02em;
  margin:clamp(44px,5vw,64px) 0 16px;padding-top:26px;
  border-top:1px solid var(--rule);
  /* 머리띠가 고정되어 있으므로 앵커로 뛰어도 제목이 가려지지 않게 띄웁니다 */
  scroll-margin-top:100px
}
.legal > h2:first-of-type{border-top:none;padding-top:0;margin-top:0}
.legal h3{font-size:16px;margin:26px 0 10px;color:var(--text)}
.legal p{color:var(--muted);font-size:15.5px;line-height:1.85;margin:0 0 14px}
.legal strong{color:var(--text);font-weight:700}
.legal ul,.legal ol.num{
  margin:0 0 16px;padding-left:20px;color:var(--muted);
  font-size:15.5px;line-height:1.85;list-style:disc
}
.legal ol.num{list-style:decimal}
.legal li{margin-bottom:7px}
.legal li::marker{color:var(--faint)}
.legal a{color:var(--accent)}

/* 표 — 좁은 화면에서는 이 상자만 가로로 밀어서 봅니다 */
.legal .tbl{overflow-x:auto;border:1px solid var(--line);background:var(--panel);margin:0 0 20px}
.legal table{width:100%;border-collapse:collapse;min-width:560px;font-size:14px}
.legal th,.legal td{padding:14px 16px;text-align:left;vertical-align:top;line-height:1.7}
.legal th{
  background:var(--ink-deep);color:var(--muted);font-size:12px;font-weight:800;
  letter-spacing:.06em;border-bottom:1px solid var(--line);white-space:nowrap
}
.legal td{border-bottom:1px solid rgba(255,255,255,.05);color:var(--muted)}
.legal tr:last-child td{border-bottom:none}
.legal td b{color:var(--text);font-weight:700}

.legal .callout{
  padding:18px 20px;margin:0 0 22px;
  background:var(--accent-dim);border:1px solid rgba(183,255,90,.28);
  color:#d7e6c2;font-size:14.5px;line-height:1.8
}
.legal .callout b{color:var(--accent)}

/* 사업자 등록 후 채울 자리 — 본문 안에서도 눈에 띄게 표시합니다 */
.legal .todo{
  background:rgba(183,255,90,.1);border:1px dashed rgba(183,255,90,.45);
  color:var(--accent);padding:1px 7px;font-size:.92em;font-weight:700
}

/* ============================================================
   폼 부품 (로그인 · 회원가입 · 마이페이지 · 관리자)
   클래스 이름과 id 는 원본 double_y 의 스크립트가 그대로 찾으므로
   바꾸지 않았습니다. 모양만 새 디자인에 맞춰 각을 세웠습니다.
   ============================================================ */
.auth-wrap{
  display:flex;justify-content:center;
  /* 좌우 여백은 다른 페이지의 .wrap 과 같은 값을 씁니다.
     이게 없으면 좁은 화면에서 카드가 화면 끝에 붙습니다. */
  padding-inline:var(--gut);
  padding-top:calc(var(--hdr) + clamp(40px,5vw,80px));
  padding-bottom:clamp(60px,7vw,110px)
}
.auth-card{width:100%;max-width:460px}
.auth-card.wide{max-width:600px}
.auth-card h1{margin-top:14px;font-size:clamp(30px,3.4vw,44px);letter-spacing:-.035em}
.auth-card .sub{margin-top:16px;font-size:15px;color:var(--muted)}
.auth-card form{margin-top:clamp(28px,3.2vw,40px)}
.auth-foot{
  margin-top:26px;padding-top:22px;border-top:1px solid var(--rule);
  font-size:14.5px;color:var(--muted)
}
.auth-foot a{color:var(--accent);font-weight:700}
.demo-hint{
  margin-top:22px;padding:16px 18px;
  background:var(--panel);border:1px solid var(--line);
  font-size:13px;line-height:1.75;color:var(--muted)
}
.demo-hint b{color:var(--accent)}

/* ---------- 입력 한 칸 ---------- */
.field{margin-bottom:20px}
.field>label{
  display:block;margin-bottom:9px;
  font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint)
}
.field input[type=text],
.field input[type=email],
.field input[type=password],
.field input[type=date],
/* 전화번호 · 검색처럼 다른 종류도 같은 모양이어야 합니다.
   종류를 하나씩 적다 보면 이렇게 빠지는 칸이 생겨서, 아래 한 줄로
   '종류를 적지 않은 칸' 까지 한꺼번에 묶어 둡니다. */
.field input[type=tel],
.field input[type=url],
.field input[type=search],
.field input:not([type]),
/* 신청 인원처럼 숫자만 받는 칸도 같은 모양으로 둡니다 */
.field input[type=number],
.field select,
.field textarea{
  width:100%;padding:14px 16px;
  background:var(--panel);border:1px solid var(--line);border-radius:0;
  color:var(--text);font-family:inherit;font-size:15px;
  transition:border-color .18s ease,background .18s ease
}
.field textarea{min-height:150px;resize:vertical;line-height:1.7}
.field input::placeholder,.field textarea::placeholder{color:#5d6874}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--accent);background:var(--panel-2)
}
.field .hint{margin-top:9px;font-size:12.5px;color:var(--faint);line-height:1.7}
.field .hint b{color:var(--text)}

/* 안내·오류 메시지 — 스크립트가 .ok / .err 를 붙입니다 */
/* 안내·오류 메시지
   숨어 있을 때는 display:none 이라 여백도 함께 사라집니다.
   그래서 위 여백을 줘도 메시지가 없을 때 화면이 벌어지지 않습니다. */
.formmsg{
  display:none;margin:20px 0;padding:14px 16px;
  border:1px solid var(--line);background:var(--panel);
  font-size:14px;line-height:1.7
}
.formmsg.show{display:block}
.formmsg.ok{border-color:rgba(183,255,90,.35);background:var(--accent-dim);color:#d7e6c2}
/* 실패 안내는 놓치면 안 되므로 테두리 · 바탕 · 글자를 모두 또렷하게 하고,
   왼쪽에 굵은 띠와 ! 표를 붙입니다. 나타날 때 한 번 흔들어 눈이 가게 합니다. */
.formmsg.err{
  position:relative;padding-left:48px;
  border:1px solid rgba(255,92,92,.55);border-left:4px solid #ff5c5c;
  background:rgba(255,92,92,.14);color:#ffd2d2;font-weight:700;
  animation:formmsg-pop .32s ease
}
.formmsg.err::before{
  content:"!";position:absolute;left:16px;top:14px;
  width:20px;height:20px;border-radius:50%;
  background:#ff5c5c;color:#1a0b0b;
  font-size:13px;font-weight:800;line-height:20px;text-align:center
}
@keyframes formmsg-pop{
  0%{transform:translateX(0)}
  25%{transform:translateX(-5px)}
  55%{transform:translateX(4px)}
  100%{transform:translateX(0)}
}
@media (prefers-reduced-motion:reduce){
  .formmsg.err{animation:none}
}
/* 잘못 입력한 칸도 함께 빨갛게 표시합니다 */
.field input.bad,.mv-row input.bad{border-color:#ff5c5c}
/* 동의 칸이 문제일 때는 그 줄 전체를 짚어 줍니다 */
.checkline input.bad{outline:2px solid #ff5c5c;outline-offset:3px}

/* ---------- 체크박스 한 줄 ---------- */
.checkline{
  display:flex;align-items:flex-start;gap:11px;
  font-size:14px;line-height:1.7;color:var(--muted);cursor:pointer;
  text-transform:none;letter-spacing:normal;font-weight:400
}
.checkline input[type=checkbox]{
  flex:none;width:18px;height:18px;margin-top:2px;
  accent-color:var(--accent);cursor:pointer
}
.checkline a{color:var(--accent)}

/* ---------- 회원 유형 고르기 ---------- */
.roles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.role-opt{
  display:block;padding:18px;cursor:pointer;
  background:var(--panel);border:1px solid var(--line);
  text-transform:none;letter-spacing:normal;
  transition:border-color .18s ease,background .18s ease
}
.role-opt input{position:absolute;opacity:0;pointer-events:none}
.role-opt b{display:block;font-size:15.5px;color:var(--text)}
.role-opt span{display:block;margin-top:7px;font-size:13px;color:var(--muted)}
.role-opt:hover{border-color:var(--rule-2)}
.role-opt.on{border-color:var(--accent);background:var(--accent-dim)}
.role-opt.on b{color:var(--accent)}

/* ---------- 비밀번호 조건 실시간 표시 ----------
   입력 전에는 회색(중립), 입력이 시작되면 충족은 라임 · 미충족은 빨강.
   처음부터 전부 빨갛게 두면 아무것도 안 했는데 혼난 느낌을 줍니다.
   색만으로 구분하지 않도록 앞의 기호(✓ ✕)도 함께 바뀝니다.
   색각 이상이 있는 분에게는 기호가 유일한 단서가 됩니다. */
.pwcheck{display:flex;flex-wrap:wrap;gap:7px 14px;margin:10px 0 0;font-size:12.5px}
.pwcheck li{display:flex;align-items:center;gap:5px;color:var(--muted);transition:color .15s ease}
.pwcheck .mark{
  display:inline-flex;align-items:center;justify-content:center;
  width:14px;height:14px;font-size:11px;font-weight:800;line-height:1;
  border-radius:50%;flex:none;background:rgba(255,255,255,.07);color:var(--faint);
  transition:background .15s ease,color .15s ease
}
.pwcheck li.ok{color:var(--accent)}
.pwcheck li.ok .mark{background:rgba(183,255,90,.16);color:var(--accent)}
.pwcheck li.bad{color:#ff9d9d}
.pwcheck li.bad .mark{background:rgba(255,92,92,.14);color:#ff9d9d}

/* ---------- 버튼 변형 ---------- */
.btn.block{width:100%}
.btn.mini{padding:8px 13px;font-size:12.5px}
.btn.danger{background:#e2483f;border-color:#e2483f;color:#fff}
.btn.danger:hover{background:#c93a32;border-color:#c93a32}

/* ---------- 편집 상자 · 경고 상자 ---------- */
.editor{
  margin-top:20px;padding:clamp(20px,2.4vw,28px);
  background:var(--panel);border:1px solid var(--line)
}
.editor .field:last-of-type{margin-bottom:0}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.warnbox{
  padding:18px 20px;margin-bottom:20px;
  background:var(--panel);border:1px solid var(--line);
  font-size:14px;line-height:1.8;color:var(--muted)
}
.warnbox b{color:var(--text)}
.muted-note{margin-top:20px;font-size:14px;color:var(--muted)}
.muted-note a{color:var(--accent)}

/* ============================================================
   탭 — 관리자 페이지와 마이페이지가 함께 씁니다
   표와 목록은 assets/page-admin.js 가 그립니다. 그쪽이 붙이는
   클래스(.tag .badge .t .d .em .btns .empty-row)를 여기서 꾸밉니다.
   ============================================================ */
/* 숨긴 요소는 확실히 숨깁니다. 브라우저 기본 규칙만 믿으면 나중에
   display 를 지정하는 규칙이 붙는 순간 다시 보이게 됩니다. */
[hidden]{display:none!important}

/* 비밀번호 재설정 화면에서는 로그인 상태 표시를 감춥니다.
   재설정 링크가 만든 임시 세션 때문에 로그인한 것처럼 보이는데,
   지금 할 일은 비밀번호를 정하는 것 하나뿐입니다. */
body.pw-reset [data-auth]{display:none!important}
.tabs{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--rule);padding-bottom:0}
.tab{
  padding:13px 20px;border:0;border-bottom:2px solid transparent;
  background:transparent;color:var(--muted);
  font-family:inherit;font-weight:700;font-size:14.5px;cursor:pointer;
  transition:color .18s ease,border-color .18s ease
}
.tab:hover{color:var(--text)}
.tab.on{color:var(--accent);border-bottom-color:var(--accent)}

/* 탭 내용 — .on 이 붙은 것만 보입니다 */
.panel{display:none;padding-top:clamp(32px,3.6vw,52px)}
.panel.on{display:block}

.admin-bar{
  display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;justify-content:space-between;
  padding-bottom:clamp(22px,2.4vw,32px);border-bottom:1px solid var(--rule)
}
.admin-bar h2,.admin-bar h3{letter-spacing:-.025em}
.admin-bar input[type=text],.board-tools input[type=text],.xp-filter-head input[type=text]{
  width:100%;padding:12px 14px;background:var(--panel);
  border:1px solid var(--line);color:var(--text);font-family:inherit;font-size:14px
}
.admin-bar input[type=text]:focus,.board-tools input[type=text]:focus,.xp-filter-head input[type=text]:focus{outline:none;border-color:var(--accent)}

/* 회원 검색칸: 돋보기 + 지우기 버튼 */
.search-box{position:relative;width:min(320px,100%)}
.search-box svg{
  position:absolute;left:14px;top:50%;width:16px;height:16px;transform:translateY(-50%);
  fill:none;stroke:var(--faint);stroke-width:2;stroke-linecap:round;pointer-events:none
}
.admin-bar .search-box input[type=text],.board-tools .search-box input[type=text]{padding-left:40px;padding-right:38px}
.search-box:focus-within svg{stroke:var(--accent)}
.search-box button{
  all:unset;position:absolute;right:8px;top:50%;transform:translateY(-50%);
  width:26px;height:26px;display:grid;place-items:center;cursor:pointer;
  color:var(--muted);font-size:18px;line-height:1;border-radius:50%
}
.search-box button:hover{color:var(--text);background:var(--panel-2)}
.search-box button:focus-visible{outline:2px solid var(--accent)}
.search-note{margin:0 0 12px;color:var(--muted);font-size:13px}
/* Academy 목록 위 도구 줄 (검색 · 모집 중만 보기) */
.board-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin:26px 0 16px}
.board-tools .checkline.mini{white-space:nowrap}
.board-tools .checkline.mini b{color:var(--accent);font-weight:700}
.board-tools+.search-note{margin-top:-4px}
.mem-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:0 0 12px}
.mem-tools .search-note{margin:0}
.mem-actions{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px 16px}
.mem-tools .per-page{
  display:inline-flex;align-items:center;gap:8px;
  color:var(--muted);font-size:13px;white-space:nowrap
}
.mem-tools .per-page .mini-sel{padding:8px 28px 8px 12px;font-size:13px}
.mem-tools .btn:disabled{opacity:.4;cursor:not-allowed}
/* 잠긴 버튼은 잠긴 티가 나야 합니다. 눌러도 아무 일이 없으면 고장으로 보입니다. */
.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed}
/* 지금은 보낼 수 없다는 이유를 적는 줄 */
.hint.warn{color:#ffc266}

/* 회원 표: 줄을 누르면 상세 창이 열립니다 */
#rows tr[data-id]{cursor:pointer}
/* 최근 로그인: 반년 넘게 안 들어왔거나 기록이 없으면 흐리게 */
#rows .login-at{white-space:nowrap}
#rows .login-at.stale{color:var(--faint)}
#rows .md-open{all:unset;cursor:pointer;font-weight:700;color:var(--text)}
#rows .md-open:hover{color:var(--accent)}
#rows .md-open:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}

/* 회원 상세 창 — 머리띠(60)와 모바일 메뉴(80)보다 위에 둡니다 */
.md-scrim{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.55);opacity:0;transition:opacity .22s}
.mdrawer{
  position:fixed;top:0;right:0;bottom:0;z-index:91;width:min(520px,100%);
  display:flex;flex-direction:column;background:var(--ink);border-left:1px solid var(--line);
  transform:translateX(100%);transition:transform .22s ease;
  padding-top:env(safe-area-inset-top,0px)
}
.md-scrim.in{opacity:1}
.mdrawer.in{transform:none}
.md-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  padding:26px 24px 20px;border-bottom:1px solid var(--rule)
}
.md-head h2{margin-top:10px;font-size:22px;font-weight:800;letter-spacing:-.02em;word-break:break-all}
.md-sub{margin-top:6px;color:var(--muted);font-size:13.5px;word-break:break-all}
.md-close{
  all:unset;flex:none;width:38px;height:38px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);border-radius:50%;color:var(--muted);font-size:22px;line-height:1
}
.md-close:hover{color:var(--text);border-color:#3a4653}
.md-close:focus-visible{outline:2px solid var(--accent)}
.md-body{flex:1;overflow-y:auto;padding:8px 24px calc(32px + env(safe-area-inset-bottom,0px))}
.md-sec{padding:22px 0;border-bottom:1px solid var(--rule)}
.md-sec:last-child{border-bottom:0}
.md-sec h3{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;letter-spacing:-.01em}
.md-sec h3 .n{color:var(--accent)}
.md-sec .md-go{
  all:unset;margin-left:auto;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--muted)
}
.md-sec .md-go:hover{color:var(--accent)}
.md-sec .md-go:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.md-dl{display:grid;grid-template-columns:96px 1fr;gap:10px 14px;margin-top:14px;font-size:14px}
.md-dl dt{color:var(--faint)}
.md-dl dd{margin:0;color:var(--text);word-break:break-all}
.md-empty{margin-top:12px;color:var(--faint);font-size:13.5px}
.md-err{margin-top:12px;color:#ff8a80;font-size:13.5px}
.md-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.md-list li{padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.md-list .t{font-size:14px;font-weight:700;color:var(--text);line-height:1.5}
.md-list .m{margin-top:4px;font-size:12.5px;color:var(--faint)}
.md-list .d{margin-top:8px;font-size:13px;color:var(--muted);line-height:1.6;word-break:break-all}
.md-list .b{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
.md-list .badge{padding:4px 10px;font-size:11.5px}
.md-note{margin-top:10px;font-size:12.5px;color:var(--faint)}
.search-note b{color:var(--accent);font-weight:700}

/* 요약 숫자 — 첫 화면의 지표 띠와 구분되도록 따로 잡습니다 */
.stat-grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  margin:clamp(24px,2.8vw,36px) 0;border-top:1px solid var(--rule-2)
}
.stat-grid .stat{
  padding:clamp(20px,2.2vw,28px) clamp(14px,1.6vw,24px);
  border-left:1px solid var(--rule);background:var(--panel)
}
.stat-grid .stat:first-child{border-left:0}
/* 눌러서 걸러 보는 숫자 카드 (회원관리) */
.stat-grid .stat.pick{
  all:unset;box-sizing:border-box;display:block;cursor:pointer;position:relative;
  padding:clamp(20px,2.2vw,28px) clamp(14px,1.6vw,24px);
  border-left:1px solid var(--rule);background:var(--panel);color:var(--text);
  transition:background .15s
}
.stat-grid .stat.pick:first-child{border-left:0}
.stat-grid .stat.pick:hover{background:var(--panel-2)}
.stat-grid .stat.pick:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.stat-grid .stat.pick[aria-pressed="true"]{background:var(--panel-2)}
.stat-grid .stat.pick[aria-pressed="true"]::before{
  content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--accent)
}
.stat-grid .stat.pick[aria-pressed="true"] .k{color:var(--accent)}
.stat-grid .k{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.stat-grid .v{margin-top:12px;font-size:clamp(26px,2.8vw,38px);font-weight:800;letter-spacing:-.04em;line-height:1}
.stat-grid .v span{display:inline;margin:0 0 0 3px;font-size:.42em;color:var(--accent);vertical-align:.3em}

/* 표 — 좁은 화면에서는 이 상자만 가로로 밀어서 봅니다 */
.table-wrap{overflow-x:auto;border:1px solid var(--line);background:var(--panel)}
table.dy{width:100%;border-collapse:collapse;min-width:820px;font-size:14px}
table.dy th,table.dy td{padding:14px 16px;text-align:left;vertical-align:middle;line-height:1.6}
table.dy th{
  background:var(--ink-deep);color:var(--muted);font-size:12px;font-weight:800;
  letter-spacing:.06em;border-bottom:1px solid var(--line);white-space:nowrap
}
/* 눌러서 정렬하는 제목 칸 (회원관리) */
table.dy .th-sort{
  all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  font:inherit;letter-spacing:inherit;color:inherit;border-radius:4px
}
table.dy .th-sort::after{content:"↕";font-size:11px;opacity:.35}
table.dy .th-sort:hover{color:var(--text)}
table.dy .th-sort:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
table.dy th[aria-sort="ascending"] .th-sort,
table.dy th[aria-sort="descending"] .th-sort{color:var(--accent)}
table.dy th[aria-sort="ascending"] .th-sort::after{content:"▲";opacity:1;font-size:9px}
table.dy th[aria-sort="descending"] .th-sort::after{content:"▼";opacity:1;font-size:9px}
table.dy td{border-bottom:1px solid rgba(255,255,255,.05);color:var(--muted)}
table.dy tr:last-child td{border-bottom:none}
table.dy tbody tr:hover{background:var(--panel-2)}
table.dy .em{color:var(--text);font-weight:600}
table.dy .empty-row,.empty-row{text-align:center;color:var(--faint);padding:44px 20px}

/* 회원 유형 표시 — 관리자 표 안에서만 씁니다.
   범위를 좁히지 않으면 목록 줄(.rows .tag)의 라벨까지 알약 모양이 되어
   글자가 칸을 넘고 두 줄로 밀립니다. page-admin.js 는 이 클래스를
   표의 <td> 와 회원 상세 창(.mdrawer) 안에서만 만들어 냅니다. */
table.dy .tag,.mdrawer .tag{
  display:inline-block;padding:5px 11px;border-radius:999px;
  font-size:11.5px;font-weight:800;letter-spacing:.04em;
  background:var(--panel-2);border:1px solid var(--line);color:var(--muted)
}
table.dy .tag.expert,.mdrawer .tag.expert{background:var(--accent-dim);border-color:rgba(183,255,90,.3);color:var(--accent)}
table.dy .tag.admin,.mdrawer .tag.admin{background:rgba(119,230,198,.14);border-color:rgba(119,230,198,.3);color:var(--accent-2)}
table.dy .tag.org,.mdrawer .tag.org{background:rgba(120,170,255,.14);border-color:rgba(120,170,255,.32);color:#9ec3ff}
/* 일반 회원 아래에 무엇으로 신청했는지 작게 붙입니다 */
table.dy .tag-note,.mdrawer .tag-note{display:block;margin-top:6px;font-size:11.5px;color:var(--faint)}
/* 회원 관리의 통계는 카드가 다섯 장입니다 */
.stat-grid.five{grid-template-columns:repeat(5,1fr)}

/* 공지·메일 관리 목록 */
.adm-list{border-top:1px solid var(--rule-2)}
.adm-list li{
  display:grid;grid-template-columns:88px minmax(0,1fr) auto;
  gap:clamp(12px,2vw,20px);align-items:center;
  padding:clamp(16px,1.8vw,22px) 0;border-bottom:1px solid var(--rule)
}
.adm-list .t{font-size:15.5px;font-weight:700;color:var(--text)}
.adm-list .d{margin-top:6px;font-size:12.5px;color:var(--faint)}
.adm-list .btns{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.adm-list .empty-row{grid-column:1 / -1}

/* 공지 작성 폼의 3단 배치 */
.row3{display:grid;grid-template-columns:130px minmax(0,1fr) 150px;gap:14px}
.row3 label{
  display:block;margin-bottom:9px;
  font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)
}
.editor h3{font-size:17px;margin-bottom:20px;letter-spacing:-.02em}

/* 메일 받는 사람 고르기 */
.scopes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.scope-opt{
  display:block;padding:15px;cursor:pointer;text-align:center;
  background:var(--ink);border:1px solid var(--line);transition:.18s ease
}
.scope-opt input{position:absolute;opacity:0;pointer-events:none}
.scope-opt b{display:block;font-size:14px;color:var(--text)}
.scope-opt span{display:block;margin-top:6px;font-size:12.5px;color:var(--muted)}
.scope-opt:hover{border-color:var(--rule-2)}
.scope-opt.on{border-color:var(--accent);background:var(--accent-dim)}
.scope-opt.on b{color:var(--accent)}

.picker{
  max-height:280px;overflow-y:auto;
  border:1px solid var(--line);background:var(--ink);padding:6px
}
.picker label{
  display:flex;align-items:center;gap:10px;padding:9px 11px;
  font-size:14px;color:var(--muted);cursor:pointer
}
.picker label:hover{background:var(--panel-2)}
.picker input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);flex:none}

.recipient-bar{
  display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;
  padding:12px 14px;margin-bottom:20px;
  background:var(--ink);border:1px solid var(--line);
  font-size:13.5px;color:var(--muted)
}
.recipient-bar b{color:var(--accent);font-size:15px}

@media (max-width:860px){
  .stat-grid,.stat-grid.five,.scopes{grid-template-columns:repeat(2,1fr)}
  .stat-grid .stat:nth-child(odd){border-left:0}
  .stat-grid .stat:nth-child(n+3){border-top:1px solid var(--rule)}
  .row3{grid-template-columns:1fr}
  .roles{grid-template-columns:1fr}
  .adm-list li{grid-template-columns:1fr;gap:10px}
  .adm-list .btns{justify-content:flex-start}
}

/* ============================================================
   전문가 프로필 입력 (마이페이지)
   ============================================================ */
/* 필수 표시 */
.req{
  margin-left:7px;padding:2px 7px;border-radius:999px;
  font-size:10.5px;font-weight:800;letter-spacing:.06em;
  background:var(--accent-dim);color:var(--accent);
  border:1px solid rgba(183,255,90,.3);vertical-align:1px
}

/* 여러 개를 고르는 칸 — 한 줄에 몇 개가 들어갈지는 폭이 정합니다 */
.checkgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:8px}
.checkgrid label{
  display:flex;align-items:center;gap:9px;
  padding:11px 13px;cursor:pointer;
  background:var(--panel);border:1px solid var(--line);
  font-size:14px;color:var(--muted);
  text-transform:none;letter-spacing:normal;font-weight:400;
  transition:border-color .16s ease,background .16s ease,color .16s ease
}
.checkgrid label:hover{border-color:var(--rule-2)}
.checkgrid input[type=checkbox]{
  flex:none;width:16px;height:16px;accent-color:var(--accent);cursor:pointer
}
/* 고른 항목은 라임으로 표시합니다. 체크 표시만으로는 한눈에 안 들어옵니다. */
.checkgrid label.on{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}

/* 작성 완료도 */
.meter-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:14px}
.meter-label{font-size:14px;color:var(--muted)}
.meter-label b{color:var(--accent);font-size:17px;margin-left:4px}
.meter{height:6px;background:var(--ink);border:1px solid var(--line);overflow:hidden}
.meter span{
  display:block;height:100%;background:var(--accent);
  transition:width .5s cubic-bezier(.2,.7,.3,1)
}

/* ============================================================
   관리자 — 전문가 프로필 목록
   ============================================================ */
/* 탭에 붙는 검토 대기 건수. 0 건이면 site.js 가 비워 두어 사라집니다. */
.tab-count{
  display:inline-block;margin-left:7px;padding:1px 7px;border-radius:999px;
  font-size:11px;font-weight:800;
  background:var(--accent);color:var(--ink);vertical-align:1px
}
.tab-count:empty{display:none}

/* 관리자 목록 줄 — 이름·소속 / 항목별 값 / 버튼
   전문가 프로필(.xp-list)과 문의(.inq-list)가 같은 배치를 씁니다. */
.xp-list li,.inq-list li{
  display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr) auto;
  gap:clamp(14px,2vw,24px);align-items:start;
  padding:clamp(18px,2vw,26px) 0;border-bottom:1px solid var(--rule)
}
.xp-list .who .t,.inq-list .who .t{font-size:15.5px;font-weight:700;color:var(--text)}
.xp-list .who .d,.inq-list .who .d{margin-top:6px;font-size:12.5px;color:var(--faint)}
.xp-list .who .badge,.inq-list .who .badge{margin-top:10px}
/* 항목 이름과 값을 좌우로 나란히 둡니다. 위아래로 쌓으면 한 건이
   너무 길어져서 여러 건을 훑기 어렵습니다. */
.xp-list .meta,.inq-list .meta{
  display:grid;grid-template-columns:118px minmax(0,1fr);
  gap:9px 16px;align-items:baseline;
  font-size:14px;color:var(--muted);line-height:1.6;margin:0
}
.xp-list .meta dt,.inq-list .meta dt{
  font-size:11px;font-weight:800;letter-spacing:.1em;
  color:var(--faint);padding-top:2px
}
.xp-list .meta dd,.inq-list .meta dd{margin:0}
.xp-list .meta .none,.inq-list .meta .none{color:var(--faint)}
/* 분야 표시 — 마이페이지의 고른 항목과 같은 라임 계열로 맞춥니다 */
.xp-list .chip.field,.inq-list .chip.field{
  padding:5px 11px;font-size:12px;border-radius:999px;
  background:var(--accent-dim);border-color:rgba(183,255,90,.3);color:var(--accent)
}
.xp-list .btns,.inq-list .btns{flex-direction:column;align-items:stretch;min-width:104px}
.xp-list .empty-row,.inq-list .empty-row{grid-column:1 / -1}

@media (max-width:860px){
  .xp-list li,.inq-list li{grid-template-columns:1fr;gap:14px}
  .xp-list .btns,.inq-list .btns{flex-direction:row;min-width:0}
  .xp-list .meta,.inq-list .meta{grid-template-columns:100px minmax(0,1fr);gap:8px 12px}
}

/* ============================================================
   전문가 매칭 목록
   왼쪽에 순위, 가운데에 왜 맞는지, 오른쪽에 점수를 둡니다.
   점수만 큰 글씨로 두면 근거가 묻히므로, 맞은 조건을 라임 알약으로
   먼저 읽히게 하고 점수는 그 옆에서 거드는 정도로 둡니다.
   ============================================================ */
.mt-list li{grid-template-columns:52px minmax(0,1fr) 128px;align-items:start}
.mt-list .empty-row{grid-column:1 / -1}
.mt-rank{
  font-size:22px;font-weight:800;color:var(--accent);
  letter-spacing:-.03em;padding-top:2px;text-align:center
}
.mt-who .t{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.mt-title{font-size:13px;font-weight:600;color:var(--muted)}
.mt-why{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;align-items:center}
.mt-why .chip{
  padding:5px 11px;font-size:12px;border-radius:999px;
  background:var(--accent-dim);border-color:rgba(183,255,90,.3);color:var(--accent)
}
/* 반만 맞은 조건(온라인만 가능 등)은 라임으로 칠하지 않습니다 */
.mt-why .chip.weak{
  background:var(--panel);border-color:var(--rule-2);color:var(--muted)
}
.mt-detail{
  margin-top:10px;font-size:13px;color:var(--muted);line-height:1.7;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden
}
.mt-gap{margin-top:8px;font-size:12px;color:var(--faint)}
.mt-score{text-align:right}
.mt-score .n{font-size:26px;font-weight:800;color:var(--text);letter-spacing:-.03em}
.mt-score .n span{font-size:12px;font-weight:600;color:var(--faint);margin-left:3px}
.mt-bar{height:5px;margin-top:8px;background:var(--ink);border:1px solid var(--line);overflow:hidden}
.mt-bar i{
  display:block;height:100%;background:var(--accent);
  transition:width .45s cubic-bezier(.2,.7,.3,1)
}
.mt-sub{margin-top:7px;font-size:11px;letter-spacing:.08em;color:var(--faint)}
/* 찾아볼 낱말 줄 — 알약이 줄 높이에 눌려 겹치지 않도록 여백을 둡니다 */
#mtWords,#mxWords{display:flex;flex-wrap:wrap;gap:6px;align-items:center;line-height:1.6}
#mtWords:empty,#mxWords:empty{display:none}
#mtWords .chip,#mxWords .chip{padding:4px 10px;font-size:12px;border-radius:999px;line-height:1.4}

@media (max-width:860px){
  .mt-list li{grid-template-columns:40px minmax(0,1fr);gap:10px 14px}
  .mt-score{grid-column:2;text-align:left}
  .mt-score .n{font-size:20px}
}

/* ============================================================
   전문가 찾기 (회원용)
   위에 조건, 아래에 전문가를 둡니다. 조건 칸은 가로로 넓게 펼쳐
   한눈에 고를 수 있게 하고, 고치면 바로 아래 목록이 바뀝니다.
   ============================================================ */
.mx-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(28px,3.2vw,44px)}
.mx-cond-grid{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:0 clamp(20px,2.6vw,36px);align-items:start}
.mx-cond-grid .mx-f-fields{grid-column:1/-1;margin-bottom:24px}
.mx-cond-grid .field:not(.mx-f-fields){margin-bottom:0}
.mx-tools{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:flex-end;margin-top:16px}
.mx-switch{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);cursor:pointer}
.mx-switch input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}

/* 로그인하지 않은 분께 보이는 안내 */
.gate-box{
  max-width:620px;padding:clamp(28px,3.4vw,44px);
  border:1px solid var(--line);background:var(--panel)
}
.gate-box p{margin-top:14px;font-size:14.5px;color:var(--muted);line-height:1.85}
.gate-box .hero-actions{margin-top:26px}

/* 담은 전문가 — 화면 아래에 붙여 둡니다.
   담아 놓고 어디로 가야 하는지 찾게 두면 안 됩니다. */
.mx-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:80;
  background:var(--ink);border-top:1px solid var(--line);
  padding:14px 0 calc(14px + env(safe-area-inset-bottom,0px))
}
.mx-bar .wrap{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center}
.mx-bar-t{font-size:13.5px;color:var(--muted);flex:none}
.mx-bar-t b{color:var(--accent);font-size:16px;margin:0 2px}
.mx-bar-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1;min-width:0}
.mx-bar-chips .chip{
  padding:5px 11px;font-size:12px;border-radius:999px;
  background:var(--accent-dim);border-color:rgba(183,255,90,.3);color:var(--accent)
}
.mx-bar .btn{flex:none}

/* 연결 요청 창 */
.mx-ask-head h2{margin:0;font-size:20px;font-weight:800;letter-spacing:-.02em}
.mx-ask-note{
  margin:18px 0 4px;padding:14px 16px;font-size:13px;line-height:1.8;
  color:var(--muted);background:var(--panel);border:1px solid var(--line)
}
.mx-ask-body .field{margin-top:22px}
.mx-ask-list{display:grid;gap:8px}
.mx-ask-one{
  padding:11px 13px;font-size:13.5px;color:var(--text);
  background:var(--panel);border:1px solid var(--line)
}
.mx-ask-one .yrs{font-size:12px;color:var(--muted);margin-left:6px}
.mx-ask-body .consent{margin-top:24px}

@media (max-width:980px){
  .mx-cond-grid{grid-template-columns:1fr}
  .mx-cond-grid .field:not(.mx-f-fields){margin-bottom:22px}
  .mx-cond-grid .field:last-child{margin-bottom:0}
}

/* ============================================================
   전문가 프로필 — 공개 카드 동의
   무엇이 공개되고 무엇이 공개되지 않는지를 글로만 적어 두면 읽지
   않습니다. 목록으로 나누고, 바로 아래에 실제 카드를 그려 둡니다.
   ============================================================ */
.pub-card{
  margin-top:clamp(26px,3vw,38px);padding:clamp(18px,2.2vw,26px);
  border:1px solid var(--line);background:var(--panel)
}
/* .field label 이 display:block 으로 더 센 선택자라, 가로 배치를
   여기서 다시 세워 줍니다. 안 그러면 체크 칸이 글 위로 올라갑니다. */
.field .checkline.pub-agree{display:flex;align-items:flex-start;gap:11px;
  font-size:14px;line-height:1.7;letter-spacing:normal;text-transform:none;font-weight:400}
.pub-agree b{display:block;color:var(--text);font-size:14.5px;margin-bottom:4px}
.pub-what{margin-top:16px;display:grid;gap:8px}
.pub-what p{font-size:13px;color:var(--muted);line-height:1.8}
.pub-what b{color:var(--text)}
.pub-what i{font-style:normal;color:var(--accent)}
.pub-note{padding-top:10px;border-top:1px solid var(--rule);color:var(--faint)}
.pub-fields[hidden]{display:none}
.pub-fields{margin-top:20px;padding-top:20px;border-top:1px solid var(--rule)}
.pub-row{grid-template-columns:minmax(0,180px) minmax(0,1fr) minmax(0,120px)}
.pub-prev{margin-top:20px}
.mt-card-prev{
  margin-top:10px;padding:16px 18px;
  border:1px dashed var(--rule-2);background:var(--ink)
}
.mt-card-prev .t{font-size:15px;font-weight:700;color:var(--text)}
.mt-card-prev .yrs{font-size:12.5px;font-weight:500;color:var(--muted);margin-left:6px}
.mt-card-prev .mt-why{margin-top:10px}
.mt-card-prev .mt-why .chip{
  padding:5px 11px;font-size:12px;border-radius:999px;
  background:var(--accent-dim);border-color:rgba(183,255,90,.3);color:var(--accent)
}

@media (max-width:780px){
  .pub-row{grid-template-columns:1fr}
}

.iq-picked{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.iq-picked li{
  padding:9px 12px;font-size:13px;color:var(--text);
  background:var(--panel);border:1px solid var(--line)
}
.iq-picked li.none{color:var(--faint)}
.iq-picked .d{font-size:12px;color:var(--faint)}

/* ============================================================
   비밀번호 보기 버튼
   겉을 감싸는 요소와 버튼은 site.js 가 만들어 붙입니다.
   ============================================================ */
.pwwrap{position:relative;display:block}
/* 버튼이 앉을 자리를 오른쪽에 비워 둡니다 */
.pwwrap input{padding-right:52px}

.pwtoggle{
  position:absolute;top:1px;right:1px;bottom:1px;width:48px;
  display:flex;align-items:center;justify-content:center;
  border:0;background:transparent;color:var(--faint);cursor:pointer;
  transition:color .16s ease
}
.pwtoggle:hover{color:var(--text)}
.pwtoggle svg{width:18px;height:18px}
/* 가려진 상태에서는 뜬 눈, 보이는 상태에서는 그어진 눈을 보여 줍니다.
   눌린 상태를 색으로만 알리지 않도록 모양도 함께 바꿉니다. */
.pwtoggle .ico-eye-off{display:none}
.pwtoggle[aria-pressed="true"]{color:var(--accent)}
.pwtoggle[aria-pressed="true"] .ico-eye{display:none}
.pwtoggle[aria-pressed="true"] .ico-eye-off{display:block}

/* ============================================================
   문의하기 (contact.html)
   ============================================================ */
/* 폼과 안내를 좌우로 둡니다. 안내를 폼 아래에 쌓으면 아무도 읽지
   않고, 폼 위에 두면 정작 폼이 화면 밖으로 밀립니다. */
.contact-grid{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,318px);
  gap:clamp(30px,4vw,62px);align-items:start
}

/* 문의 유형은 6개라 2단으로는 세로로 너무 길어집니다 */
.roles.types{grid-template-columns:repeat(3,1fr)}

/* 짧은 칸 두 개를 한 줄에 둡니다 */
.row2{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}

/* 자동 프로그램 걸러내기용 칸.
   display:none 으로 감추면 일부 프로그램이 숨은 칸임을 알아채므로
   화면 밖으로 밀어 두기만 합니다. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* 개인정보 동의 — 무엇을 왜 얼마나 보관하는지 먼저 보이고 나서
   체크박스가 나와야 합니다. 순서가 바뀌면 동의의 의미가 없습니다. */
.consent{
  margin:clamp(26px,3vw,36px) 0 clamp(26px,3vw,34px);
  padding:clamp(20px,2.4vw,28px);
  background:var(--panel);border:1px solid var(--line);border-radius:18px
}
.consent h3{font-size:15px;letter-spacing:-.01em}
.consent dl{
  display:grid;grid-template-columns:82px minmax(0,1fr);
  gap:9px 16px;margin:18px 0 20px;font-size:13.5px;line-height:1.7
}
.consent dt{font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--faint);padding-top:3px}
.consent dd{margin:0;color:var(--muted)}
.consent .note{margin-top:14px;font-size:12.5px;color:var(--faint);line-height:1.75}
.consent .note a{color:var(--accent)}

/* 옆 안내 상자 */
.inq-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:calc(var(--hdr) + 24px)}
.inq-side .box{
  padding:clamp(20px,2.2vw,26px);
  background:var(--panel);border:1px solid var(--line);border-radius:18px
}
.inq-side h3{margin-top:12px;font-size:17px;letter-spacing:-.02em}
.inq-side .d{margin-top:14px;font-size:13.5px;color:var(--muted);line-height:1.75}
.inq-side .btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
/* 번호는 아래 ::before 로 그립니다. 목록 기본 번호를 끄지 않으면
   "1. ①" 처럼 두 번 매겨집니다. */
.inq-side .steps{list-style:none;padding-left:0;margin-top:18px;counter-reset:step}
.inq-side .steps li{
  position:relative;padding-left:34px;padding-bottom:16px;counter-increment:step
}
.inq-side .steps li:last-child{padding-bottom:0}
.inq-side .steps li::before{
  content:counter(step);position:absolute;left:0;top:0;
  width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;
  background:var(--accent-dim);border:1px solid rgba(183,255,90,.3);color:var(--accent)
}
/* 단계 사이를 잇는 선. 마지막 단계에는 그리지 않습니다. */
.inq-side .steps li:not(:last-child)::after{
  content:'';position:absolute;left:11px;top:26px;bottom:4px;width:1px;background:var(--line)
}
.inq-side .steps b{display:block;font-size:14px;color:var(--text)}
.inq-side .steps span{display:block;margin-top:5px;font-size:12.5px;color:var(--muted);line-height:1.7}
.inq-side .lines{margin-top:16px}
.inq-side .lines li{
  display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;
  align-items:baseline;padding:9px 0;border-bottom:1px solid var(--rule);font-size:13.5px
}
.inq-side .lines li:last-child{border-bottom:0;padding-bottom:0}
.inq-side .lines b{font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--faint)}
.inq-side .lines span{color:var(--muted);word-break:break-all}
.inq-side .lines a{color:var(--accent)}

/* 접수 완료 화면 */
.inq-done{
  padding:clamp(28px,3.4vw,44px);
  background:var(--panel);border:1px solid rgba(183,255,90,.28);border-radius:20px
}
.inq-done h2{margin-top:14px;font-size:clamp(24px,2.8vw,34px);letter-spacing:-.03em}
.inq-done .ref{
  margin-top:20px;padding:14px 18px;border-radius:12px;
  background:var(--accent-dim);border:1px solid rgba(183,255,90,.3);
  font-size:14px;color:var(--muted)
}
.inq-done .ref b{
  margin-left:8px;font-size:17px;font-weight:800;letter-spacing:.04em;color:var(--accent)
}
.inq-done .d{margin-top:18px;font-size:14.5px;color:var(--muted);line-height:1.8}
.inq-done .d b{color:var(--text)}
.inq-done .btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}

@media (max-width:980px){
  .contact-grid{grid-template-columns:1fr}
  .inq-side{position:static}
}
@media (max-width:700px){
  .roles.types{grid-template-columns:1fr 1fr}
  .row2{grid-template-columns:1fr;gap:0}
}
@media (max-width:430px){
  .roles.types{grid-template-columns:1fr}
}

/* 문의 처리 메모 — 관리자 목록 안에 들어가는 작은 입력칸.
   .field 안이 아니라서 폼 입력칸 규칙이 닿지 않아 따로 적습니다. */
.inq-list textarea.inq-note{
  width:100%;padding:9px 11px;border-radius:10px;
  background:var(--ink);border:1px solid var(--line);color:var(--text);
  font:inherit;font-size:13px;line-height:1.6;resize:vertical
}
.inq-list textarea.inq-note::placeholder{color:#5d6874}
.inq-list textarea.inq-note:focus{outline:0;border-color:var(--accent)}
.inq-list .meta dd>.btn{margin-top:8px}

/* 관리자 목록 안의 버튼 여러 개 */
.inq-list .meta dd>.btn+.btn{margin-left:8px}
.inq-list .askedat{margin-left:10px;font-size:12px;color:var(--faint)}

/* ============================================================
   마이페이지 — 내 문의
   목록 배치는 관리자 목록(.inq-list)을 그대로 씁니다.
   ============================================================ */
/* 항목 이름 없이 값만 넣는 칸. 덧붙이는 상자가 여기 들어갑니다. */
.mi-list .meta dd.wide{grid-column:1 / -1;margin-top:4px}

/* 추가 정보를 요청받은 문의에만 열리는 상자.
   목록에서 눈에 먼저 들어와야 하므로 색을 씁니다. */
.mi-ask{
  padding:clamp(16px,1.8vw,20px);border-radius:14px;
  background:rgba(255,183,77,.07);border:1px solid rgba(255,183,77,.28)
}
.mi-ask .t{font-size:12px;font-weight:800;letter-spacing:.1em;color:#ffc266}
.mi-ask .d{margin-top:10px;font-size:14px;color:var(--text);line-height:1.75}
.mi-ask textarea{
  width:100%;margin-top:14px;padding:11px 13px;border-radius:10px;
  background:var(--ink);border:1px solid var(--line);color:var(--text);
  font:inherit;font-size:14px;line-height:1.7;resize:vertical
}
.mi-ask textarea::placeholder{color:#5d6874}
.mi-ask textarea:focus{outline:0;border-color:var(--accent)}
.mi-ask .btn{margin-top:12px}

/* ============================================================
   카카오톡 상담 버튼
   화면 오른쪽 아래에 떠 있습니다. 모바일 메뉴(z-index 80)와
   그 뒤 가림막(70)보다 아래에 두어, 메뉴를 열면 가려집니다.
   휴대폰에서는 아래 홈 표시줄만큼 띄워 가리지 않게 합니다.
   ============================================================ */
.kakao-fab{
  position:fixed;z-index:50;
  right:clamp(16px,2.4vw,28px);
  bottom:calc(clamp(16px,2.4vw,28px) + env(safe-area-inset-bottom,0px));
  display:inline-flex;align-items:center;
  padding:15px;border-radius:999px;
  background:#fee500;color:#2b1a1a;
  box-shadow:0 10px 28px rgba(0,0,0,.45);
  transition:transform .18s ease, box-shadow .18s ease
}
.kakao-fab svg{width:26px;height:26px;fill:currentColor;flex:none;display:block}
.kakao-fab .kf-label{
  font-size:14px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;
  /* 평소에는 아이콘만 보이고, 마우스를 올리면 글씨가 펼쳐집니다 */
  max-width:0;margin-left:0;overflow:hidden;opacity:0;
  transition:max-width .22s ease, margin-left .22s ease, opacity .18s ease
}
.kakao-fab:hover,.kakao-fab:focus-visible{
  transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.5);color:#2b1a1a
}
.kakao-fab:hover .kf-label,.kakao-fab:focus-visible .kf-label{max-width:120px;margin-left:10px;opacity:1}
.kakao-fab:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
/* 손가락으로 쓰는 화면에서는 hover 가 없으므로 글씨를 늘 보여 줍니다 */
@media (hover:none){
  .kakao-fab{padding:13px 18px}
  .kakao-fab .kf-label{max-width:120px;margin-left:10px;opacity:1}
}
/* 글씨 움직임을 싫어하는 설정이면 펼침 효과를 끕니다 */
@media (prefers-reduced-motion:reduce){
  .kakao-fab,.kakao-fab .kf-label{transition:none}
}
@media print{ .kakao-fab{display:none} }

/* ============================================================
   회사소개 > DOUBLEY 소개 (시안대로)
   이 페이지에서만 쓰는 모양이라 ab- 로 이름을 묶었습니다.
   ============================================================ */

/* 이 페이지의 작은 머리글(ABOUT DOUBLEY · OUR PURPOSE)은 시안처럼 라임색입니다 */
.ab-hero > .wrap > div > .micro,.ab-purpose .micro{color:var(--accent)}

/* ---- 페이지 머리: 왼쪽 글, 오른쪽 연결 그림 ---- */
.ab-hero-grid{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(30px,4vw,64px);align-items:center
}
/* 시안처럼 두 줄로 떨어지도록 이 페이지의 제목만 한 단계 작게 둡니다 */
.ab-hero h1{font-size:clamp(27px,3.5vw,45px);line-height:1.3;letter-spacing:-.035em}
.ab-hero .lead{max-width:46ch}

/* 연결 그림 — 가운데 WHOWISE, 둘레에 세 가지 */
.ab-map{justify-self:center;width:min(100%,380px);text-align:center}
.ab-ring{
  position:relative;width:min(100%,260px);aspect-ratio:1;margin:0 auto;
  border-radius:50%;border:1px solid var(--rule);
  display:grid;place-items:center
}
/* 안쪽 원 — 라임빛이 은은하게 도는 테두리 */
.ab-ring::before{
  content:"";position:absolute;inset:16%;border-radius:50%;
  border:1px solid rgba(183,255,90,.22);
  background:radial-gradient(circle at 50% 50%, rgba(183,255,90,.07), transparent 62%)
}
.ab-core{
  position:relative;padding:13px 22px;border-radius:10px;
  border:1px solid rgba(183,255,90,.45);background:var(--ink);
  font-size:clamp(13px,1.2vw,15.5px);font-weight:800;letter-spacing:.04em;color:var(--text)
}
/* 글씨는 바깥 원의 선 위에 놓습니다. 글씨 자리만큼 선이 끊겨 보이도록
   페이지 바탕색을 뒤에 깔아 둡니다. */
.ab-map-t{
  position:absolute;padding:0 9px;background:var(--ink);
  font-size:12.5px;font-weight:700;color:var(--muted);white-space:nowrap
}
.ab-map-t.top{top:0;left:50%;transform:translate(-50%,-50%)}
/* 세 단어가 원을 1/3 씩 나눠 갖도록 120도 간격으로 둡니다.
   (위 90도, 왼쪽 아래 210도, 오른쪽 아래 330도)
   아래 두 단어는 가로로 길어서, 원의 바깥쪽으로 조금 밀어 두어야
   안쪽 원과 사이가 벌어집니다. 그래도 바깥 선 위에 걸쳐 있습니다. */
.ab-map-t.left{top:75%;left:6.7%;transform:translate(calc(-50% - 8px),calc(-50% + 5px))}
.ab-map-t.right{top:75%;left:93.3%;transform:translate(calc(-50% + 8px),calc(-50% + 5px))}
.ab-map-foot{
  margin-top:34px;font-size:11px;font-weight:800;letter-spacing:.18em;
  text-transform:uppercase;color:var(--faint)
}

/* ---- 지향점 한 칸 ---- */
.ab-purpose{
  padding:clamp(52px,6vw,88px) 0;background:var(--ink-deep);
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);text-align:center
}
.ab-purpose h2{
  margin-top:16px;font-size:clamp(21px,2.4vw,31px);font-weight:800;
  letter-spacing:-.03em;line-height:1.4
}
.ab-purpose p:last-child{
  margin-top:18px;font-size:clamp(13.5px,1.1vw,15px);color:var(--muted);line-height:1.9
}

/* ---- 번호 붙은 구역 ---- */
.ab-sec{padding-top:clamp(56px,6.4vw,96px);padding-bottom:clamp(56px,6.4vw,96px)}
.ab-grid{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:clamp(24px,3.4vw,56px)}
.ab-eyebrow{font-size:13px;font-weight:800;letter-spacing:.08em;color:var(--accent)}
.ab-label{margin-top:12px;font-size:13.5px;letter-spacing:.06em;color:var(--muted)}
.ab-h2{font-size:clamp(23px,2.7vw,35px);font-weight:800;letter-spacing:-.035em;line-height:1.35}
/* 본문 한 줄이 너무 길면 눈이 다음 줄을 찾기 어렵습니다. 글자 수로 폭을 묶습니다. */
.ab-p{margin-top:22px;max-width:62ch;font-size:clamp(14.5px,1.15vw,16px);color:var(--muted);line-height:1.95}
/* 문단 사이는 한 줄 비운 만큼 띄워 문단이 눈에 띄게 나뉘도록 합니다 */
.ab-p + .ab-p{margin-top:clamp(26px,2.6vw,34px)}
.ab-h2 + .ab-p{margin-top:clamp(24px,2.6vw,34px)}

/* 대상 알갱이 — 네모난 테두리 */
.ab-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(26px,3vw,40px)}
.ab-chips span{
  padding:11px 18px;border:1px solid var(--line);border-radius:6px;
  font-size:13.5px;font-weight:700;color:var(--muted)
}

/* ---- 02 세 가지 사업 ---- */
.ab-head2{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);
  gap:clamp(16px,2.4vw,40px);align-items:start;margin-top:18px
}
.ab-note{font-size:14px;color:var(--muted);line-height:1.9;text-align:right}
.ab-cards{
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(22px,2.6vw,40px);
  margin-top:clamp(34px,4vw,58px)
}
.ab-card{padding-top:26px;border-top:1px solid var(--rule-2)}
.ab-card .k{font-size:12.5px;font-weight:800;letter-spacing:.12em;color:var(--accent)}
.ab-card h3{margin-top:16px;font-size:clamp(17px,1.5vw,21px);font-weight:800;letter-spacing:-.02em}
.ab-card .d{margin-top:14px;font-size:14px;color:var(--muted);line-height:1.9}
.ab-card .w{
  margin-top:26px;padding-top:18px;border-top:1px solid var(--rule);
  font-size:12.5px;color:var(--faint)
}

/* ---- 03 일하는 기준 ---- */
.ab-steps{list-style:none;margin:clamp(30px,3.4vw,48px) 0 0;padding:0;display:grid;gap:clamp(24px,2.8vw,38px)}
.ab-steps li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px}
.ab-steps .n{font-size:12.5px;font-weight:800;letter-spacing:.1em;color:var(--accent);padding-top:4px}
.ab-steps h3{font-size:clamp(16px,1.4vw,19px);font-weight:800;letter-spacing:-.02em}
.ab-steps p{margin-top:10px;font-size:14px;color:var(--muted);line-height:1.9}

/* ---- 04 문의 줄 ---- */
.ab-contact{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:18px 30px;padding:clamp(24px,2.8vw,34px) clamp(22px,2.6vw,34px);
  background:var(--panel);border:1px solid var(--line)
}
.ab-contact h2{font-size:clamp(17px,1.5vw,20px);font-weight:800;letter-spacing:-.02em}
.ab-contact p{margin-top:8px;font-size:13.5px;color:var(--muted)}
.ab-contact-links{display:flex;flex-wrap:wrap;gap:10px 22px}
.ab-contact-links a{font-size:13.5px;font-weight:700;color:var(--accent)}
.ab-contact-links a:hover{color:var(--accent-soft)}

@media (max-width:900px){
  .ab-hero-grid{grid-template-columns:1fr}
  .ab-map{justify-self:start;margin-top:clamp(30px,5vw,44px)}
  .ab-grid{grid-template-columns:1fr;gap:20px}
  .ab-head2{grid-template-columns:1fr}
  .ab-note{text-align:left}
  .ab-cards{grid-template-columns:1fr;gap:0}
  .ab-card{margin-top:26px}
  .ab-card:first-child{margin-top:0}
}
@media (max-width:560px){
  .ab-map{width:100%}
  .ab-ring{width:min(100%,220px)}
  /* 좁은 화면에서는 글씨가 화면 밖으로 나가지 않게 안쪽으로 당깁니다 */
  .ab-map-t{font-size:12px;padding:0 7px}
  .ab-map-t.left{top:75%;left:6.7%}
  .ab-map-t.right{top:75%;left:93.3%}
  .ab-steps li{grid-template-columns:42px minmax(0,1fr)}
}

/* ============================================================
   회원가입 — 단계(step) 화면
   ① 약관동의 ② 정보입력 ③ 가입완료. 화면은 한 장이고
   page-signup.js 가 보여 줄 칸만 바꿉니다.
   ============================================================ */
.joinsteps{
  list-style:none;display:grid;grid-template-columns:repeat(3,1fr);
  gap:8px;margin:26px 0 4px;padding:0
}
.joinsteps.four{grid-template-columns:repeat(4,1fr)}
.joinsteps li{
  display:flex;align-items:center;gap:10px;padding:14px 16px;
  border:1px solid var(--line);border-radius:10px;background:var(--panel);
  color:var(--faint);font-size:13.5px;font-weight:700
}
.joinsteps li b{font-size:12px;letter-spacing:.1em;color:var(--faint)}
.joinsteps li.on{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}
.joinsteps li.on b{color:var(--accent)}
.joinsteps li.done{color:var(--muted)}
.joinsteps li.done b{color:var(--accent)}

.step-panel{margin-top:26px}
.step-actions{margin-top:clamp(22px,2.6vw,32px)}
.step-actions.two{display:flex;gap:12px}
.step-actions.two .btn{flex:1}

/* 전체 동의 줄 — 아래 항목들보다 한 단계 도드라지게 둡니다 */
.agree-all{
  padding:16px 18px;border:1px solid var(--line);border-radius:10px;
  background:var(--panel-2);font-size:15px;color:var(--text)
}
.agree-item{margin-top:22px;padding-top:22px;border-top:1px solid var(--rule)}
.agree-item .checkline{font-size:14.5px;color:var(--text)}
.agree-item .checkline b{color:var(--accent);font-weight:800}

/* 약관 전문 — 길어서 상자 안에서만 스크롤되게 합니다 */
.agree-box{
  margin-top:14px;max-height:220px;overflow-y:auto;
  padding:18px 20px;border:1px solid var(--line);border-radius:10px;
  background:var(--ink);font-size:13.5px;line-height:1.85;color:var(--muted)
}
.agree-box:focus{outline:none;border-color:var(--accent)}
.agree-box h3{font-size:14.5px;font-weight:800;color:var(--text);letter-spacing:-.01em}
.agree-box h4{margin-top:18px;font-size:13.5px;font-weight:800;color:var(--text)}
.agree-box h3 + p,.agree-box h4 + p{margin-top:8px}
.agree-box p{margin-top:10px}
.agree-box ol.num{margin:10px 0 0;padding-left:20px;display:grid;gap:7px}
.agree-foot{margin-top:10px;font-size:13px}
.agree-foot a{color:var(--accent);font-weight:700}
.agreed-note{margin-top:4px;font-size:13px;color:var(--faint)}

/* 가입 완료 칸 */
.done-panel{text-align:center;padding:clamp(18px,2.4vw,30px) 0}
.done-mark{
  width:62px;height:62px;margin:0 auto;display:grid;place-items:center;border-radius:50%;
  background:var(--accent-dim);border:1px solid var(--accent);
  color:var(--accent);font-size:28px;font-weight:800
}
.done-panel h2{margin-top:20px;font-size:clamp(19px,1.9vw,24px);font-weight:800;letter-spacing:-.02em}
.done-panel p{margin-top:12px;font-size:14.5px;color:var(--muted);line-height:1.8}

@media (max-width:560px){
  .joinsteps{grid-template-columns:1fr;gap:6px}
  .joinsteps li{padding:12px 14px}
  .agree-box{max-height:200px}
}

/* ---- 02 이메일 인증 ---- */
.mail-verify{text-align:center}
.mv-mark{
  width:86px;height:86px;margin:6px auto 0;display:grid;place-items:center;
  border:1.5px solid var(--accent);border-radius:18px;background:var(--accent-dim);color:var(--accent)
}
.mv-mark svg{width:38px;height:38px}
.mv-lead{
  margin:20px auto 0;padding:13px 20px;max-width:420px;border-radius:999px;
  background:var(--panel-2);border:1px solid var(--line);
  font-size:14.5px;font-weight:700;color:var(--text)
}
.mail-verify .field{margin-top:26px;text-align:left}
.mv-row{display:flex;gap:10px;align-items:stretch}
.mv-row input{flex:1;min-width:0}
.mv-row .btn{flex:none;white-space:nowrap}
.mv-notes{margin:12px 0 0;padding:0;list-style:none;display:grid;gap:6px}
.mv-notes li{font-size:13px;color:var(--faint);line-height:1.6}
.mv-notes li::before{content:"※ ";color:var(--faint)}
.mv-timer{margin-top:10px;font-size:13px;font-weight:700;color:var(--accent)}
.mv-timer.over{color:#ffc266}
.mv-done{
  margin-top:22px;padding:14px 18px;border-radius:10px;
  background:var(--accent-dim);border:1px solid rgba(183,255,90,.3);
  font-size:14px;font-weight:700;color:var(--accent)
}
.ok-hint{color:var(--accent)}
.step-panel input[readonly]{background:var(--panel-2);color:var(--muted);cursor:not-allowed}

@media (max-width:560px){
  .joinsteps.four{grid-template-columns:1fr}
  .mv-row{flex-direction:column}
  .mv-row .btn{width:100%}
}

/* ---- 가입 정보입력: 소속 분류 · 필수 표시 ---- */
/* 필수 표시(*)는 글자만 남깁니다. 위쪽 .req 의 알약 모양을 되돌립니다. */
.field label .req,.auth-card .req{
  margin-left:4px;padding:0;border:0;border-radius:0;background:none;
  color:#ff8a80;font-size:inherit;font-weight:800;letter-spacing:normal
}
.kinds{display:flex;flex-wrap:wrap;gap:10px}
.kind-opt{
  display:inline-flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;
  border:1px solid var(--line);border-radius:8px;background:var(--panel);
  font-size:14px;color:var(--muted)
}
.kind-opt input{accent-color:var(--accent);cursor:pointer}
.kind-opt:has(input:checked){border-color:var(--accent);background:var(--accent-dim);color:var(--text);font-weight:700}
.kind-opt:hover{border-color:#3a4653}

/* 메일 주소 오타로 보일 때 물어보는 칸 */
.typo-ask{
  margin-top:12px;padding:14px 16px;border-radius:10px;
  background:rgba(255,183,77,.12);border:1px solid rgba(255,183,77,.4)
}
.typo-ask p{font-size:14px;color:#ffc266;line-height:1.7}
.typo-ask p b{color:#ffd79a}
.typo-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}

/* ============================================================
   밝은 바탕 (회원가입 화면)
   색은 :root 의 값으로 관리하므로, 여기서 그 값만 바꿔 끼웁니다.
   부품(버튼 · 칸 · 선)은 고치지 않아도 그대로 따라옵니다.
   ============================================================ */
body.light{
  --ink:#ffffff;          /* 기본 배경 */
  --ink-rgb:255,255,255;
  --panel:#ffffff;        /* 입력칸 · 상자 */
  --panel-2:#f3f5f8;      /* 한 단계 눌린 면 */
  --ink-deep:#f6f8fa;     /* 꼬리말 */

  --text:#11161c;
  --muted:#4d5a68;        /* 본문 보조 글씨 */
  --faint:#7b8794;
  --line:#dde2e8;         /* 칸 테두리 */
  --rule:rgba(0,0,0,.09);
  --rule-2:rgba(0,0,0,.16);

  /* 라임은 밝은 바탕에서 글씨로 쓰면 읽히지 않습니다.
     바탕색으로만 쓰고, 글씨에는 짙은 초록을 씁니다. */
  --accent-text:#3f7a16;
  --accent-dim:rgba(140,200,60,.16);

  /* --bg · --fg 같은 별칭은 :root 에서 이미 어두운 값으로 굳어지므로,
     여기서 다시 적어 주어야 버튼 글씨까지 밝은 바탕을 따라옵니다. */
  --bg:#ffffff;
  --fg:#11161c;
  --btn-fg:#11161c;

  background:var(--ink);
  color:var(--text);
}
/* 머리띠는 어두운 채로 둡니다.
   바탕까지 전부 하얘지면 다른 사이트에 온 것처럼 보이기 때문입니다.
   머리띠 안쪽에서만 색 값을 원래(어두운) 값으로 되돌립니다. */
body.light header,
body.light .mobilemenu,
body.light .mm-scrim{
  --ink:#0b0d10;
  --ink-rgb:11,13,16;
  --panel:#12161b;
  --panel-2:#171d24;
  --text:#f5f7fa;
  --muted:#aeb8c4;
  --faint:#7d8894;
  --line:#26303a;
  --rule:rgba(255,255,255,.09);
  --rule-2:rgba(255,255,255,.2);
  --bg:#0b0d10;
  --fg:#f5f7fa;
  --btn-fg:#f5f7fa;
  --accent-text:#b7ff5a;
  --accent-dim:rgba(183,255,90,.12);
  color:var(--text)
}
/* 밝은 바탕에서는 머리띠가 비치면 글씨가 묻히므로 늘 채워 둡니다 */
body.light header{background:var(--ink);border-bottom:1px solid rgba(255,255,255,.07)}
body.light header.scrolled{background:rgba(11,13,16,.92);border-bottom-color:rgba(255,255,255,.07)}
body.light header .btn{border-color:var(--rule-2);color:var(--fg)}
body.light header .btn.primary{background:var(--accent);border-color:var(--accent);color:#0b0d10}

/* 꼬리말은 밝은 톤을 따릅니다 */
body.light footer .brand{color:var(--text)}
body.light footer .brand span{color:#4f9120}
body.light footer{border-top:1px solid var(--rule)}

/* 라임 글씨를 쓰던 자리는 짙은 초록으로 */
body.light .micro,body.light .joinsteps li.on b,body.light .agree-item .checkline b,
body.light .agree-foot a,body.light .mv-timer,body.light .mv-done,
body.light .req,body.light .field label .req,body.light .auth-card .req,
body.light .legal .toc a:hover,body.light .checkline a,body.light .ok-hint,
body.light .auth-foot a,body.light .demo-hint b{color:var(--accent-text)}
body.light .joinsteps li.on,body.light .mv-done{border-color:#9ad356;background:rgba(140,200,60,.14)}
body.light .mv-mark{border-color:#9ad356;background:rgba(140,200,60,.14);color:var(--accent-text)}
body.light .done-mark{border-color:#9ad356;background:rgba(140,200,60,.14);color:var(--accent-text)}
body.light .kind-opt:has(input:checked){border-color:#9ad356;background:rgba(140,200,60,.14)}
body.light .btn.primary{color:#11161c}
body.light .btn{border-color:var(--line)}
body.light .btn:hover{border-color:#8a949f}
body.light .pwcheck li.ok{color:#2f6310}
body.light .agree-box{background:var(--panel-2)}
body.light .formmsg.ok{background:rgba(140,200,60,.16);border-color:#9ad356;color:#2f6310}
body.light .formmsg.err{background:rgba(214,45,45,.08);border-color:rgba(214,45,45,.5);color:#a51f1f}
body.light .formmsg.err::before{background:#d62d2d;color:#fff}
body.light .typo-ask{background:rgba(214,138,0,.1);border-color:rgba(214,138,0,.45)}
body.light .typo-ask p{color:#8a5a00}
body.light .typo-ask p b{color:#6b4500}
body.light .pwcheck li.ok{color:#2f6310}
body.light input::placeholder,body.light textarea::placeholder{color:#99a3ad}

/* 소속 인증 — 가입 때 받은 값이라 고칠 수 없는 항목 */
.vf-fixed{
  display:inline-block;margin-top:10px;padding:11px 18px;
  border:1px solid var(--line);border-radius:8px;background:var(--panel-2);
  font-size:14.5px;font-weight:700;color:var(--text)
}
.field input[readonly]{background:var(--panel-2);color:var(--muted);cursor:not-allowed}

/* 회원 상세 창의 탈퇴 처리 칸 — 되돌릴 수 없는 일이라 붉게 둘러 둡니다 */
.md-danger{
  margin-top:14px;padding:16px 18px;border-radius:10px;
  border:1px solid rgba(255,92,92,.4);background:rgba(255,92,92,.07)
}
.md-danger .d{font-size:13.5px;line-height:1.8;color:var(--muted)}
.md-danger .d b{color:#ff9b9b}
.md-label{display:block;margin-top:14px;font-size:12.5px;font-weight:700;color:var(--muted)}
.md-danger textarea,.md-danger input{
  width:100%;margin-top:7px;padding:11px 13px;
  background:var(--ink);border:1px solid var(--line);border-radius:8px;
  color:var(--text);font-family:inherit;font-size:14px;line-height:1.6;resize:vertical
}
.md-danger textarea:focus,.md-danger input:focus{outline:none;border-color:#ff8a80}
.md-danger .btn.danger{
  margin-top:14px;background:#d62d2d;border-color:#d62d2d;color:#fff
}
.md-danger .btn.danger:hover:not(:disabled){background:#b92525;border-color:#b92525}
.md-danger .btn.danger:disabled{opacity:.45;cursor:not-allowed}
.md-danger .btn.block{display:flex;width:100%}
.md-note{margin-top:10px;font-size:12.5px;color:var(--faint)}
.md-note.bad-note{color:#ff9b9b}

/* ---------- 전문가 찾기 · 채팅 (25-expert-chat.sql) ---------- */
.mx-notice{
  margin-bottom:22px;padding:clamp(14px,1.6vw,18px) clamp(16px,1.8vw,20px);
  background:var(--accent-dim);border:1px solid var(--rule-2);border-radius:12px;
  font-size:14px;line-height:1.7;color:var(--text)
}
.mx-notice a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.mx-avatar{
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:var(--panel-2);border:1px solid var(--rule-2);font-size:15px;font-weight:700;color:var(--text);
  /* .mt-rank 의 위쪽 여백 · 좁힌 자간을 지워야 글자가 원 한가운데 옵니다 */
  padding:0;letter-spacing:0;line-height:1;text-align:center
}

/* 머리글 메시지 링크의 안 읽은 수 */
.msg-link{position:relative}
.msg-count{
  display:inline-block;min-width:18px;height:18px;padding:0 5px;margin-left:5px;
  border-radius:9px;background:var(--accent);color:#0b0d10;
  font-size:11px;font-weight:800;line-height:18px;text-align:center;vertical-align:1px
}

/* 메시지 화면: 왼쪽 목록 · 오른쪽 대화 */
.ch-grid{
  display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);
  border:1px solid var(--rule-2);border-radius:14px;overflow:hidden;
  height:min(72vh,720px);min-height:460px;background:var(--panel)
}
.ch-rooms{border-right:1px solid var(--rule);overflow-y:auto}
.ch-rooms ul{list-style:none;margin:0;padding:0}
.ch-none{padding:28px 20px;color:var(--faint);font-size:14px;line-height:1.7}
.ch-none a{color:var(--accent)}
.ch-room{
  display:flex;flex-direction:column;gap:6px;width:100%;text-align:left;
  padding:14px 18px;border:0;border-bottom:1px solid var(--rule);
  background:transparent;color:var(--text);cursor:pointer;font:inherit
}
.ch-room:hover{background:var(--panel-2)}
.ch-room.on{background:var(--accent-dim)}
.ch-room-top{display:flex;justify-content:space-between;gap:10px;font-size:14.5px}
.ch-time{font-size:12px;color:var(--faint);flex:none}
.ch-room-mid{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-room-bot{display:flex;align-items:center;gap:8px}
.ch-unread{
  min-width:20px;height:20px;padding:0 6px;border-radius:10px;
  background:var(--accent);color:#0b0d10;font-size:11.5px;font-weight:800;line-height:20px;text-align:center
}

.ch-thread{display:flex;flex-direction:column;min-width:0;min-height:0}
.ch-empty{margin:auto;color:var(--faint);font-size:14px}
.ch-box{display:flex;flex-direction:column;height:100%;min-height:0}
.ch-head{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--rule)}
.ch-head > div{flex:1;min-width:0}
.ch-who{margin:0;font-weight:700;font-size:16px}
.ch-sub{margin:3px 0 0;font-size:12.5px;color:var(--muted);overflow-wrap:anywhere}
.ch-back{display:none}
.ch-log{list-style:none;margin:0;padding:18px 20px;flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px}
.ch-msg{display:flex;flex-direction:column;align-items:flex-start;max-width:78%}
.ch-msg.mine{align-self:flex-end;align-items:flex-end}
.ch-bubble{
  padding:10px 14px;border-radius:14px;background:var(--panel-2);border:1px solid var(--rule);
  white-space:pre-wrap;overflow-wrap:anywhere;font-size:14.5px;line-height:1.6
}
.ch-msg.mine .ch-bubble{background:var(--accent-dim);border-color:var(--rule-2)}
.ch-meta{margin-top:4px;font-size:11.5px;color:var(--faint)}
.ch-read{font-weight:700;color:var(--accent)}
.ch-sys{align-self:center;font-size:12.5px;color:var(--faint);text-align:center}
.ch-respond{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;
  padding:12px 20px;border-top:1px solid var(--rule);background:var(--accent-dim);font-size:13.5px
}
.ch-respond p{margin:0}
.ch-respond .actions{margin:0;display:flex;gap:8px}
.ch-compose{display:flex;gap:10px;align-items:flex-end;padding:12px 20px;border-top:1px solid var(--rule)}
.ch-compose textarea{
  flex:1;resize:none;min-height:46px;max-height:160px;padding:11px 14px;
  border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);font:inherit;font-size:14.5px
}
.ch-compose textarea:focus{outline:none;border-color:var(--accent)}
.ch-compose textarea:disabled{opacity:.55;cursor:not-allowed}
.ch-warn{margin:0;padding:0 20px 10px;font-size:12.5px;color:#ffc266;min-height:0}
.ch-warn:empty{display:none}

@media (max-width:760px){
  .ch-grid{grid-template-columns:1fr;height:calc(100vh - 150px);min-height:420px}
  .ch-rooms{border-right:0}
  .ch-thread{display:none}
  .ch-grid.show-thread .ch-rooms{display:none}
  .ch-grid.show-thread .ch-thread{display:flex}
  .ch-back{display:inline-flex}
  .ch-msg{max-width:90%}
  .ch-head,.ch-log,.ch-compose,.ch-respond{padding-left:14px;padding-right:14px}
}

/* 관리자 채팅 열람 */
#panel-chat tr.clickable{cursor:pointer}
#panel-chat tr.clickable:hover td{background:var(--panel-2)}
#panel-chat tr.on td{background:var(--accent-dim)}
.ac-view{margin-top:24px;border:1px solid var(--rule-2);border-radius:14px;overflow:hidden;background:var(--panel)}
.ac-view .ch-log{max-height:560px}

/* 밝은 화면에서 라임 글씨는 읽히지 않습니다 */
body.light .mx-notice a,body.light .ch-none a{color:var(--accent-text)}
body.light .ch-warn{color:#9a5b00}
/* 머리글의 메시지 아이콘 (site.js 가 붙임). 안 읽은 수는 아이콘 오른쪽 위에 얹습니다. */
.navauth .msg-icon{display:inline-flex;align-items:center;position:relative;padding:2px}
.navauth .msg-icon .msg-count{
  position:absolute;top:-7px;right:-11px;margin:0;
  min-width:16px;height:16px;line-height:16px;font-size:10px;padding:0 4px
}
/* 전역 svg{max-width:100%} 때문에 폭이 0 으로 줄어드는 것을 막습니다 */
.navauth .msg-icon svg{flex:none;display:block;width:20px;height:20px;max-width:none}
/* 머리글 오른쪽은 본문 폭(최대값이 있음) 안에서 자리가 정해져 있어, 화면을
   넓혀도 늘지 않습니다. '○○님 · 회원 유형' 까지 넣으면 가운데 메뉴를 덮으므로
   머리글에서는 숨기고, 마이페이지 링크에 마우스를 올리면 보이게 합니다 (site.js). */
.navauth .whoami{display:none !important}
/* 채팅 열람 표의 숫자 · 시각 칸은 꺾이지 않게 */
#panel-chat td:nth-child(n+3){white-space:nowrap}

/* ---------- 관리자 · AI 회원 찾기 (admin-ai-search.js) ---------- */
.ai-find{margin:0 0 18px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(183,255,90,.035)}
.ai-row{display:flex;gap:8px;align-items:center}
.ai-tag{flex:none;font-size:11px;font-weight:700;letter-spacing:.06em;padding:4px 8px;border-radius:6px;background:var(--accent-dim);color:var(--accent)}
.ai-row input{flex:1;min-width:0;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--text);font-size:14px}
.ai-row input:focus{outline:none;border-color:var(--accent)}
.ai-row .btn{flex:none;white-space:nowrap}
.ai-settings{margin-top:12px;display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}
.ai-settings label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
.ai-settings input{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--text);font-size:13px}
.ai-set-btns{display:flex;gap:6px}
.ai-hint{grid-column:1/-1;margin:0;font-size:12px;color:var(--muted)}
.ai-status{margin:10px 0 0;font-size:13px;color:var(--muted);line-height:1.5}
.ai-status:empty{display:none}
.ai-status.ok{color:var(--accent)}
.ai-status.err{color:#ff8a80}
.ai-chips{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ai-sum{width:100%;font-size:13.5px;color:var(--text);margin-bottom:2px}
.ai-chip{font-size:12px;padding:4px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.ai-chip b{color:var(--text);font-weight:600;margin-right:2px}
@media (max-width:720px){
  .ai-row{flex-wrap:wrap}
  .ai-row input{flex-basis:100%;order:2}
  .ai-tag{order:1}
  .ai-row .btn{order:3}
  .ai-settings{grid-template-columns:1fr}
}

/* ---------- 관리자 탭 묶음 (회원 · 전문가 · 소통 · 콘텐츠) ---------- */
.tabs.grouped{gap:0;align-items:stretch}
.tab-group{display:flex;flex-direction:column;padding:0 10px;position:relative}
.tab-group:first-child{padding-left:0}
.tab-group + .tab-group::before{
  content:"";position:absolute;left:0;top:6px;bottom:14px;width:1px;background:var(--rule)
}
.tab-group-label{
  padding:0 20px;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--faint)
}
.tab-group-row{display:flex;flex-wrap:wrap}
.tabs.grouped .tab{padding:9px 20px 13px;white-space:nowrap}
@media (max-width:900px){
  .tabs.grouped{border-bottom:0;gap:10px}
  .tab-group{width:100%;padding:0;border-bottom:1px solid var(--rule)}
  .tab-group + .tab-group::before{display:none}
  .tab-group-label{padding:0 4px}
  .tabs.grouped .tab{padding:8px 12px 11px;font-size:14px}
}

/* 전문가 매칭 · AI 로 조건 채우기 */
.mt-ai{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}
.mt-ai .ai-status{margin:0;flex:1;min-width:220px}
#mtWords .chip.syn{border-style:dashed}

/* 전문가 프로필 — '걸러 보기' 제목과 같은 줄에 검색칸 */
.xp-filter-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:20px}
.xp-filter-head h3{margin-bottom:0}
.xp-filter-head .search-box input[type=text]{padding-left:40px;padding-right:38px}
@media (max-width:720px){
  .xp-filter-head .search-box{width:100%}
}

/* 좁은 화면에서는 체크 칸을 두 줄로 두되 글씨를 조금 줄입니다 */
@media (max-width:600px){
  .checkgrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .checkgrid label{font-size:13px;padding:10px 11px;gap:8px}
}
