/* =====================================================================
   작당 디자인 레이어 — 스레드·인스타 미니멀
   규칙: 흑백이 기본 · 상자 대신 얇은 선 · 그림자 없음 · 색은 상태/반응에만
   글꼴 Pretendard 하나 · 굵기로 위계 (400 본문 / 600 강조 / 800 제목)
   app.css 뒤에 불러와서 생김새만 덮어쓴다 (기능·구조는 그대로)
   ===================================================================== */
:root{
  --bg:#FFFFFF; --surface:#FFFFFF; --surface-2:#F3F3F4; --line:#EAEAEA;
  --ink:#0A0A0A; --ink-2:#424242; --ink-3:#8E8E8E;
  --accent:#0A0A0A; --accent-ink:#FFFFFF; --accent-soft:#F1F1F2;
  --link:#0095F6; --link-soft:#E8F4FE;
  --sun:#F5A524; --sun-ink:#4A3000; --sun-soft:#FFF5E1;
  --mint:#12B76A; --mint-soft:#E7F8EF;
  --rose:#FF3040; --rose-soft:#FFECEE;
  --violet:#8B5CF6;
  --col:#F7F7F8; --card:#FFFFFF;
  --shadow:none;
  --f-logo:"Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --f-body:"Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --f-mono:var(--f-body);
  --r-card:14px; --r-ctl:10px;
  --st-todo:#C4C4C4; --st-doing:var(--link); --st-review:var(--sun); --st-done:var(--mint);
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#000000; --surface:#101010; --surface-2:#1C1C1E; --line:#262626;
  --ink:#F5F5F5; --ink-2:#C2C2C2; --ink-3:#7A7A7A;
  --accent:#F5F5F5; --accent-ink:#000000; --accent-soft:#1F1F1F;
  --link:#3BA6FF; --link-soft:#0B2236;
  --sun:#FFB627; --sun-ink:#2A1C00; --sun-soft:#2B2110;
  --mint:#2FD18A; --mint-soft:#0D2A1D;
  --rose:#FF4D5E; --rose-soft:#33151A;
  --violet:#A78BFA; --col:#0B0B0B; --card:#161616; --st-todo:#4A4A4A;
}}
:root[data-theme="dark"]{
  --bg:#000000; --surface:#101010; --surface-2:#1C1C1E; --line:#262626;
  --ink:#F5F5F5; --ink-2:#C2C2C2; --ink-3:#7A7A7A;
  --accent:#F5F5F5; --accent-ink:#000000; --accent-soft:#1F1F1F;
  --link:#3BA6FF; --link-soft:#0B2236;
  --sun:#FFB627; --sun-ink:#2A1C00; --sun-soft:#2B2110;
  --mint:#2FD18A; --mint-soft:#0D2A1D;
  --rose:#FF4D5E; --rose-soft:#33151A;
  --violet:#A78BFA; --col:#0B0B0B; --card:#161616; --st-todo:#4A4A4A;
}

/* ---------- 바탕 · 글자 ---------- */
body{font-size:15px;letter-spacing:-.011em;line-height:1.55;font-feature-settings:"ss06"}
.mono{font-variant-numeric:tabular-nums;letter-spacing:-.01em}
h1,h2,h3{letter-spacing:-.025em}
a{color:var(--link)}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
svg.i{stroke-width:1.75}

/* 로고: 굵은 한 덩어리 글자 */
.logo b{font-family:var(--f-body);font-weight:800;font-size:25px;letter-spacing:-.06em}
.logo b i,.ws-home b i,.ws-home-m b i,.auth-mobile-mark b i,.auth-mark b i{color:inherit}
.logo small{font-size:11.5px;letter-spacing:0}

/* ---------- 위 · 아래 바 ---------- */
.topbar{background:color-mix(in srgb,var(--bg) 90%,transparent);border-bottom:1px solid var(--line)}
.me-chip{border:0;box-shadow:none;width:30px;height:30px}
.tabbar{background:color-mix(in srgb,var(--bg) 94%,transparent);border-top:1px solid var(--line);padding-top:4px}
.tabbar:not(.wsbar):not(.adminbar) .tab{font-size:0;gap:0;padding:10px 0}
.tab svg.i{width:26px;height:26px}
.tab{color:var(--ink-2)}
.tab[aria-current="page"]{color:var(--ink)}
.tab[aria-current="page"] svg.i{stroke-width:2.5}
.tab .dot{font-size:10.5px;top:4px}
.tab.plus span.pl{width:28px;height:28px;border-radius:8px;background:transparent;color:var(--ink);border:2px solid var(--ink)}
.tab.plus span.pl svg.i{width:18px;height:18px;stroke-width:2.4}
.wsbar .tab{font-size:10.5px;font-weight:600}
.wsbar .tab svg.i{width:23px;height:23px}
.wsbar .tab[aria-current="page"]{color:var(--ink)}

/* ---------- PC 왼쪽 메뉴 ---------- */
@media (min-width:1000px){
  .side{border-right:1px solid var(--line);padding-right:14px;margin-right:-14px}
  .nav{font-weight:500;font-size:15.5px;color:var(--ink);border-radius:10px;gap:15px}
  .nav svg.i{width:25px;height:25px}
  .nav:hover{background:var(--surface-2)}
  .nav[aria-current="page"]{background:transparent;font-weight:800}
  .nav[aria-current="page"] svg.i{stroke-width:2.5}
  .side .cta{margin-top:18px;height:40px;border-radius:10px}
  .side .whoami{border-radius:10px}
  body.ws-mode .ws-side{border-right:1px solid var(--line);padding-right:14px;margin-right:-14px}
}
.invite-cta{background:transparent;color:var(--ink);border:1px solid var(--line)}
.invite-cta:hover{background:var(--surface-2);filter:none}

/* ---------- 버튼 · 라벨 ---------- */
.btn{height:38px;border-radius:var(--r-ctl);font-size:14px;font-weight:600;background:var(--surface-2)}
.btn:hover{filter:none;opacity:.86}
.btn.pri,.btn.ink{background:var(--ink);color:var(--bg)}
.btn.ghost{border-color:var(--line)}
.btn.danger{background:transparent;color:var(--rose);border:1px solid var(--line)}
.btn.sm{height:32px;padding:0 12px;border-radius:8px;font-size:13px}
.iconbtn{border-radius:50%}
.pill{height:22px;padding:0 8px;border-radius:6px;font-size:11.5px;font-weight:600;background:var(--surface-2);color:var(--ink-2)}
.pill.rec{background:var(--link-soft);color:var(--link)}
.pill.run{background:var(--mint-soft);color:var(--mint)}
.pill.lock{background:var(--surface-2);color:var(--ink-2)}
.pill.daily{background:transparent;color:var(--ink-3);padding:0}
.tag{color:var(--ink-2);background:var(--surface-2)}
.role{border-radius:6px;height:26px}
.filters{gap:6px}
.filter,.kind{height:32px;border-radius:8px;padding:0 13px;font-size:13.5px;background:transparent;border:1px solid var(--line);color:var(--ink-2)}
.filter[aria-pressed="true"],.kind[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.sec-h h2{font-size:22px;font-weight:800}
.banner{background:var(--surface-2);border-radius:12px}
.empty{border:0;background:transparent;padding:48px 20px;color:var(--ink-3)}
.empty h3{font-size:17px;font-weight:700}
.ctip,.board-hint{display:none}

/* ---------- 입력칸 ---------- */
.field input,.field textarea,.field select,.upd-form textarea,.upd-form input,.cform input,.conv-in textarea,.vis{
  background:var(--surface-2);border-color:transparent}
.field input:focus,.field textarea:focus,.field select:focus,.upd-form textarea:focus,.upd-form input:focus,.cform input:focus,.conv-in textarea:focus{
  background:var(--bg);border-color:var(--ink-3)}
.field label,.field .lbl{color:var(--ink);font-weight:600}
.seg{background:var(--surface-2);border-radius:10px}
.seg button{border-radius:8px}
.seg button[aria-pressed="true"]{box-shadow:none;background:var(--bg);color:var(--ink);font-weight:700}

/* ---------- 피드: 상자 없이 줄로 ---------- */
.stories{border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:0}
.story{font-weight:500;color:var(--ink)}
.story .ring{width:64px;height:64px}
.story .ring.fresh{background:conic-gradient(from 210deg,#FEDA75,#FA7E1E,#D62976,#962FBF,#4F5BD5,#FEDA75)}
.story.add .ring{border:1px solid var(--line);background:var(--surface-2)}
.composer{background:transparent;box-shadow:none;border-radius:0;border-bottom:1px solid var(--line);padding:14px 0 12px;margin:0 0 4px}
.composer .tools{border-top:0;padding-top:4px}
.filters{padding-top:12px}
.feed{gap:0}
.post{background:transparent;box-shadow:none;border-radius:0;border-bottom:1px solid var(--line);overflow:visible;padding-bottom:4px}
.post .hd{padding:16px 0 0}
.post .who b{font-weight:700;font-size:15px}
.post .body{padding:6px 0 2px;font-size:15px;line-height:1.6}
.more-t{padding:0}
.media{margin-top:10px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.post .acts{padding:4px 0 8px;margin-left:-8px}
.act{color:var(--ink);font-weight:500;padding:0 8px}
.act:hover{background:transparent;opacity:.6}
.act.on{color:var(--rose)}
.cmts{background:transparent;border-top:0;padding:4px 0 12px}
.post.pinned{outline:0}
.pin-tag{color:var(--ink-3)}

/* ---------- 프로젝트 · 멤버 · 레일 ---------- */
.pcard{background:transparent;box-shadow:none;border:1px solid var(--line);border-radius:var(--r-card)}
.pcard:hover{background:var(--surface-2)}
.pcard h3{font-size:18px;font-weight:800}
.pcard .top .dd{font-family:var(--f-body)}
.reccard{border-radius:14px}
.person{background:transparent;box-shadow:none;border:1px solid var(--line)}
.person:hover{background:var(--surface-2)}
.rail .box{background:transparent;box-shadow:none;border-radius:0;padding:4px 4px 18px;border-bottom:1px solid var(--line)}
.rail .box + .box{margin-top:18px}
.rail h4{font-size:14px;font-weight:700;color:var(--ink-3)}
.invite{border:1px solid var(--line);background:transparent}
.askbox{background:var(--surface-2);border:0}
.askbox .ic{background:var(--bg);color:var(--ink)}
.askchips .chip:hover,.askchips .chip.on{background:var(--ink);color:var(--bg)}

/* ---------- 시트 ---------- */
.sheet{border-radius:20px 20px 0 0;background:var(--bg)}
@media (min-width:700px){.sheet{border-radius:16px;border:1px solid var(--line)}}
.scrim{background:rgba(0,0,0,.55)}
.sheet .x{background:transparent}
.pd-box{border-color:var(--line);border-radius:12px}

/* ---------- 프로젝트 룸 ---------- */
.room-head h1{font-size:26px;font-weight:800;letter-spacing:-.035em}
.bar i,.rg-fg{background:var(--ink);stroke:var(--ink)}
.bar{background:var(--surface-2)}
.panel,.kpi{background:var(--surface);box-shadow:none;border:1px solid var(--line);border-radius:var(--r-card)}
body .kpi[class*="tone-"],body .kpi.ring-k,body .kpi.alert{background:var(--surface)}
body .kpi[class*="tone-"] > b{color:var(--ink)}
body .kpi.alert > b{color:var(--rose)}
.kpi > b{font-weight:800;letter-spacing:-.03em}
.kpi[class*="tone-"] .k-l::before{border-radius:50%;width:7px;height:7px}
.panel[class*="tone-"] > .ph::before{width:7px;height:7px;border-radius:50%;margin-right:2px}
.panel[class*="tone-"] > .ph .linkbtn,.panel.tone-s > .ph .linkbtn{color:var(--ink-3)}
.ph{font-weight:700}
.ov-stack .legend > span{background:transparent;padding:0}
.col{background:var(--col);border:1px solid var(--line);border-radius:14px}
.card{background:var(--card);box-shadow:none;border:1px solid var(--line);border-left-width:1px;border-radius:10px}
.card.pri-high{border-left:3px solid var(--rose)}
.addcard{border-style:solid;border-color:transparent;color:var(--ink-3)}
.addcard:hover{background:var(--card);border-color:var(--line)}
.ws-home{box-shadow:none;border:1px solid var(--line);background:transparent}
.ws-side .nav[aria-current="page"]{background:var(--surface-2);color:var(--ink);font-weight:800}
.utab{font-weight:600}
.utab[aria-pressed="true"]{font-weight:800}
.lv{border-radius:6px}

/* ---------- 메시지 ---------- */
.titem.on{outline:0;background:var(--surface-2)}
.bub.me .bt{background:linear-gradient(135deg,#7B3FF2,#3B82F6);color:#fff}
.bub:not(.me) .bt{background:var(--surface-2);color:var(--ink)}
.composer .row{align-items:center}

/* ---------- 휴대폰: 위 바 아래 여백 ---------- */
@media (max-width:999px){
  body:not(.ws-mode) .topbar{margin-bottom:14px}
  .stories{padding-top:2px}
}

/* ---------- 지금 모집 중 카드 (작은 배너형) ---------- */
.recwrap .sec-h{margin:16px 2px 10px}
.recwrap .sec-h h2{font-size:16px}
.recstrip{gap:8px;margin:0 -16px 4px;padding:0 16px 14px;scroll-snap-type:x mandatory;scroll-padding-inline:16px;border-bottom:1px solid var(--line)}
.reccard{width:220px;padding:12px 13px 11px;gap:5px;border-radius:14px;color:var(--ink);border:0;scroll-snap-align:start;
  background:hsl(var(--h1) 70% 95.5%);display:flex;flex-direction:column}
:root[data-theme="dark"] .reccard{background:hsl(var(--h1) 22% 12%)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .reccard{background:hsl(var(--h1) 22% 12%)}}
.reccard:active{transform:scale(.98)}
.rc-top{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11.5px;font-weight:700}
.rc-kind{color:hsl(var(--h1) 55% 38%)}
:root[data-theme="dark"] .rc-kind{color:hsl(var(--h1) 60% 72%)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .rc-kind{color:hsl(var(--h1) 60% 72%)}}
.rc-dd{color:var(--ink-2);font-variant-numeric:tabular-nums}
.rc-dd.soon{color:var(--rose)}
.reccard .t{font-weight:700;font-size:15px;line-height:1.35;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.rc-foot{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3)}
.rc-need{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.rc-n{display:inline-flex;align-items:center;gap:3px;flex:none;font-variant-numeric:tabular-nums}
.rc-n svg.i.sm{width:14px;height:14px}

/* PC 오른쪽 '지금 모집 중' 목록 */
.ritem.rthumb{display:flex;align-items:center;gap:11px;padding:9px 0}
.ritem.rthumb:first-of-type{padding-top:0}
.rt-ic{flex:none;width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:16px;color:#fff;
  background:linear-gradient(135deg,hsl(var(--h1) 75% 62%),hsl(var(--h2) 70% 52%))}
.rt-tx{min-width:0;display:flex;flex-direction:column}
.rt-tx b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-tx span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ritem.rthumb:hover b{text-decoration:underline;text-underline-offset:2px}
.recstrip{scroll-padding-inline:16px}
@media (max-width:999px){
  .composer .tools{flex-wrap:nowrap;gap:6px}
  .composer .kinds{flex-wrap:nowrap;gap:4px;flex:none}
  .composer .kind{padding:0 10px;flex:none}
  .composer .vis{max-width:96px}
  .composer .tools .btn.sm{flex:none}
}

/* ===== 검토 후 다듬기 ===== */
/* 댓글: 프사 · 입력칸 · 보내기 비율 */
.cmts{padding:10px 14px 14px}
.post .cmts{padding:2px 0 14px}
.rcmts{padding:4px 0 0}
.cmt .av.sm{width:30px;height:30px}
.cform{gap:10px;margin-top:2px}
.cform .av.xs{width:30px;height:30px}
.cform input{height:40px;border-radius:20px;padding:0 16px}
.cform .iconbtn{width:36px;height:36px;margin-left:-2px;color:var(--link)}

/* 게시물 '···' 메뉴 */
.pmenu{position:relative}
.pmenu summary{list-style:none;cursor:pointer}
.pmenu summary::-webkit-details-marker{display:none}
.pm-list{position:absolute;right:0;top:36px;z-index:15;min-width:150px;padding:6px;border-radius:12px;background:var(--bg);border:1px solid var(--line);box-shadow:0 10px 30px -10px rgba(0,0,0,.25);display:flex;flex-direction:column}
.pm-list .menu-btn{width:100%;height:40px;justify-content:flex-start;display:flex;align-items:center;gap:10px;padding:0 10px;border-radius:8px;color:var(--ink);font-size:14px;font-weight:500}
.pm-list .menu-btn::after{content:attr(aria-label)}
.pm-list .menu-btn[data-armed="1"]::after{content:none}
.pm-list .menu-btn:hover{background:var(--surface-2)}
.pm-list [data-act="del-post"]{color:var(--rose)}

/* 글쓰기 칸 빈 공간 */
.thumbs:empty{display:none}

/* 관심 버튼 */
.favbtn{border:1px solid var(--line);border-radius:10px;height:36px;font-weight:600}
.favbtn.on{background:var(--sun-soft);color:var(--ink);border-color:transparent}

/* 내 페이지 */
.tile.daily{background:var(--surface-2)}
.mp-item{background:transparent;box-shadow:none;border:1px solid var(--line);border-radius:12px}

/* 프로젝트 룸 머리 (휴대폰): 버튼 줄 → 정보 → 제목 */
@media (max-width:999px){
  .room-head{flex-wrap:wrap;row-gap:12px;align-items:center}
  .room-head .rh-tx{order:3;flex-basis:100%}
  .room-head .rh-btns{order:2;margin-left:auto}
  .room-head h1{font-size:23px;margin-top:8px}
}
/* 보드: 첫 칸이 화면 끝에 붙지 않게 */
.board{scroll-padding-inline:16px}
.card .cm{min-height:0}
/* 개요 숫자 카드 (휴대폰): 진행률 한 줄 + 숫자 3개 한 줄 */
@media (max-width:699px){
  .kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .kpi.ring-k{grid-column:1/-1}
  .kpi{padding:12px}
  .kpi > b{font-size:22px}
  .kpi .k-l{font-size:11.5px}
  .kpi > span:last-child{white-space:normal;font-size:11.5px;line-height:1.35}
}

/* 글쓰기: 입력칸은 내용만큼 자라고(가림 없음), 좁은 폰에선 버튼 줄을 두 줄로 */
.composer textarea{min-height:48px;height:auto}
.composer .row{align-items:flex-start}
.composer .row .av{margin-top:2px}
@media (max-width:400px){
  .composer .tools{flex-wrap:wrap;row-gap:8px}
  .composer .kinds{flex:1 1 100%}
  .composer .vis{max-width:none}
}

/* 글쓰기 칸: 아주 살짝 상자 */
.composer .row textarea{background:var(--surface-2);border:1px solid transparent;border-radius:14px;padding:11px 14px;transition:border-color .15s,background .15s}
.composer .row textarea:focus{background:var(--bg);border-color:var(--line)}
.composer .row{align-items:flex-start}
.composer .row .av{margin-top:4px}

/* 댓글 · 답글 */
.cthread{display:flex;flex-direction:column;gap:8px}
.creplies{margin-left:40px;display:flex;flex-direction:column;gap:8px}
.cmt.reply .av.sm{width:24px;height:24px}
.cmt .bub .m{align-items:center;flex-wrap:wrap;gap:10px;margin-top:2px}
.clike{display:inline-flex;align-items:center;gap:3px}
.clike svg.i.sm{width:14px;height:14px}
.clike.on{color:var(--rose)!important} .clike.on svg{fill:var(--rose);stroke:var(--rose)}
.ctoggle{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;font-size:13px;font-weight:700;color:var(--link);padding:2px 0}
.ctoggle svg.i.sm{width:15px;height:15px;transform:rotate(-90deg)}
.ctoggle.open svg.i.sm{transform:rotate(90deg)}
.cform.reply input{height:36px}
.ccancel{font-size:12.5px;font-weight:600;color:var(--ink-3);padding:0 2px;flex:none}
.cedit{display:flex;flex-direction:column;gap:6px;margin:2px 0 4px}
.cedit input{width:100%;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--bg);padding:0 12px;font-size:16px}
.ce-btns{display:flex;gap:6px;justify-content:flex-end}
.stats span .i{width:12px;height:12px;vertical-align:-1px;opacity:.6}
.cform input:focus-visible,.cedit input:focus-visible,.composer textarea:focus-visible{outline:0}
.cedit{width:100%}
.menu-btn.rep{width:auto;min-width:32px;display:inline-flex;align-items:center;gap:4px;padding:0 8px;white-space:nowrap}
.tile .txt{bottom:22px;-webkit-line-clamp:5}

/* ===================== 프로젝트 룸 v2 ===================== */
.room-top{display:flex;align-items:center;gap:10px;margin:2px 0 10px;min-height:34px}
.rt-name{font-size:13.5px;font-weight:600;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
@media (min-width:1000px){.room-top{display:none}}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 0 16px}
.page-head h1{margin:0;font-size:26px;font-weight:800;letter-spacing:-.035em;line-height:1.2}
.page-head.ov h1{font-size:25px;margin-top:8px;text-wrap:balance}
.ph-tx{min-width:0}
.ph-proj{display:block;font-size:12.5px;font-weight:600;color:var(--ink-3);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:999px){.ph-proj{display:none}}
.ph-sub{margin:6px 0 0;color:var(--ink-2);font-size:14.5px}
.ph-acts{display:flex;gap:6px;flex-wrap:wrap}
.room-body{padding-top:0}

/* 개요: 공지 띠 */
.ov-notice{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 14px;border-radius:14px;background:var(--surface-2)}
.ov-notice .oi{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--bg);flex:none}
.ov-notice .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.ov-notice .lb{font-size:12px;color:var(--ink-3);font-weight:600}
.ov-notice b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pagetalk summary{list-style:none;cursor:pointer;margin:0}
.pagetalk summary::-webkit-details-marker{display:none}
.pagetalk[open] summary{margin-bottom:10px}

/* 할 일: 도구줄 · 목록 */
.tbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.tbar .filters{margin:0;padding:0}
.vtoggle{flex:none}
.vtoggle button{display:inline-flex;align-items:center;gap:5px;padding:0 12px;height:32px;font-size:13px}
.vtoggle svg.i.sm{width:15px;height:15px}
.tlist{display:flex;flex-direction:column;gap:18px}
.tgroup header{display:flex;align-items:center;gap:8px;padding:0 2px 8px;border-bottom:1px solid var(--line);font-size:14px}
.tgroup header .iconbtn{margin-left:auto;width:30px;height:30px}
.trow{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.trow.hi .tt::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--rose);margin:0 7px 2px 0}
.trow-main{flex:1;min-width:0;text-align:left;display:flex;flex-direction:column;gap:2px}
.trow-main .tt{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tmeta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--ink-3)}
.tmeta:empty{display:none}
.tmeta svg.i.sm{width:13px;height:13px;vertical-align:-2px}
.tmeta .late{color:var(--rose);font-weight:600}
.qstat{flex:none;height:30px;border-radius:8px;border:0;padding:0 8px;font-size:12.5px;font-weight:700;background:var(--surface-2);color:var(--ink-2);max-width:86px}
.qstat.doing{background:var(--link-soft);color:var(--link)}
.qstat.review{background:var(--sun-soft);color:color-mix(in srgb,var(--sun) 70%,var(--ink))}
.qstat.done{background:var(--mint-soft);color:var(--mint)}
.qstat.ro{display:inline-flex;align-items:center}
.av-empty{width:22px;height:22px;border-radius:50%;border:1.5px dashed var(--line);flex:none}
.tempty{margin:0;padding:12px 2px;font-size:13px;color:var(--ink-3)}

/* 공지 목록 */
.nlist{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.ncard{display:flex;flex-direction:column;gap:4px;text-align:left;width:100%;padding:16px 4px;border-bottom:1px solid var(--line)}
.ncard:hover{background:var(--surface-2)}
.ncard.pinned{background:color-mix(in srgb,var(--sun-soft) 60%,transparent)}
.npin{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:color-mix(in srgb,var(--sun) 70%,var(--ink))}
.npin svg.i.sm{width:13px;height:13px}
.ncard .nt{font-size:16.5px;font-weight:700;letter-spacing:-.02em}
.ncard .nx{font-size:14px;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nmeta{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-3);margin-top:4px}

/* 진행 보고 카드 */
.ulist{display:flex;flex-direction:column;gap:12px}
.ucard{border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}
.u-hd{display:flex;align-items:center;gap:10px}
.u-hd .who{display:flex;flex-direction:column;min-width:0}
.u-hd .who b{font-size:14px}
.u-hd .who > span{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:4px}
.tchip{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;max-width:100%;padding:5px 10px;border-radius:8px;background:var(--surface-2);font-size:13px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.tchip b{font-weight:700}
.u-main{text-align:left;display:flex;flex-direction:column;gap:4px}
.u-main .ut{font-size:15.5px;font-weight:700;letter-spacing:-.015em}
.u-main .ux{font-size:14px;color:var(--ink-2);white-space:pre-line;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.u-ft{display:flex;align-items:center;margin:-4px -8px -6px}
.u-ft .sp{flex:1}
.u-ft .linkbtn{margin-right:8px}
.ukind{font-weight:700}
.ukind.update{color:var(--link)}
.ukind.meeting{color:var(--violet)}
.ukind.notice{color:color-mix(in srgb,var(--sun) 70%,var(--ink))}
.ukind.resource{color:var(--mint)}

/* 자료 */
.flist{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.frow{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line)}
.fic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);flex:none}
.frow .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.frow .tx a{color:var(--ink);text-decoration:none}
.frow .tx a:hover b{text-decoration:underline}
.frow .tx b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.frow .tx span{font-size:12.5px;color:var(--ink-3);display:flex;gap:4px;align-items:center}
.frow .iconbtn{position:relative}
.fcnt{position:absolute;top:2px;right:0;font-size:10px;font-weight:700;color:var(--ink-3)}

/* 상세 */
.backlink{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:var(--ink-3);margin:2px 0 14px}
.backlink:hover{color:var(--ink)}
.detail{padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:16px}
.d-meta{display:flex;gap:8px;align-items:center;font-size:13px}
.detail h1{margin:8px 0 14px;font-size:26px;font-weight:800;letter-spacing:-.035em;line-height:1.3;text-wrap:balance}
.d-author{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.d-author div{display:flex;flex-direction:column}
.d-author b{font-size:14px}
.d-author span{font-size:12.5px;color:var(--ink-3)}
.detail .tchip{margin-bottom:14px}
.d-body{font-size:16px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}
.ulink.big{margin-top:14px}
.d-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:18px}

/* 설정 */
.srow{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.srow:first-of-type{border-top:0;padding-top:0}
.srow .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.srow .tx b{font-size:14.5px}
.srow .tx span{font-size:12.5px;color:var(--ink-3)}
.danger-zone{border-color:color-mix(in srgb,var(--rose) 30%,var(--line))}

/* 더보기 시트 */
.more-list{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.more-list.sub{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.more-list button{display:flex;align-items:center;gap:12px;padding:12px 8px;border-radius:12px;text-align:left;font-size:15.5px}
.more-list button:hover{background:var(--surface-2)}
.more-list button:disabled{opacity:.45}
.more-list .mi{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface-2);flex:none}
.more-list b{flex:1;font-weight:600}

/* PC 왼쪽 메뉴 구분선 */
.ws-sep{display:block;height:1px;background:var(--line);margin:8px 6px}
.panel > h3.ph{justify-content:flex-start;gap:6px}
.panel > h3.ph .mono{margin-left:2px}
@media (min-width:1000px){#rbody:has(.ulist,.nlist,.detail,.flist,.srow,.tlist,.empty){max-width:860px}}
.act-row > span:first-child{white-space:nowrap;flex:none}

/* 친구만 */
.pill.fr{background:var(--mint-soft);color:var(--mint)}
.pill.fr svg.i.sm{width:12px;height:12px}
.lockmark.fr{color:var(--mint)}
.vt.public{border-color:var(--line);color:var(--ink-2);background:transparent}
.vt.friends{border-color:var(--mint);color:var(--mint);background:var(--mint-soft)}
.vt.private{border-color:var(--line);color:var(--ink-3);background:var(--surface-2)}

/* ===== 내 페이지: AI 느낌 그라데이션 태그 ===== */
:root{--ai-grad:linear-gradient(120deg,#8B5CF6 0%,#3B82F6 50%,#06B6D4 100%)}
.ubio.chips{flex-direction:row;flex-wrap:wrap;gap:8px;margin-top:16px}
.chip-ai{display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:6px 12px 6px 10px;border-radius:999px;font-size:13.5px;color:var(--ink);
  border:1px solid transparent;background:linear-gradient(color-mix(in srgb,var(--bg) 94%,#8B5CF6),color-mix(in srgb,var(--bg) 94%,#3B82F6)) padding-box,var(--ai-grad) border-box}
.chip-ai .k{display:inline-flex;align-items:center;gap:4px;flex:none;font-size:11.5px;font-weight:800;letter-spacing:-.01em;background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.chip-ai .k svg.i.sm{width:13px;height:13px;stroke:#6D6AF5}
.chip-ai .v{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.chip-ai .v a{color:inherit}
.chip-ai .lockmark{display:inline-flex;opacity:.7}
.chip-ai .lockmark svg{width:12px;height:12px}
.chip-ai.tag{font-weight:600;font-size:12.5px;padding:5px 11px;color:color-mix(in srgb,#6D6AF5 75%,var(--ink))}
.chip-ai.live{background:linear-gradient(color-mix(in srgb,var(--bg) 92%,#8B5CF6),color-mix(in srgb,var(--bg) 92%,#06B6D4)) padding-box,linear-gradient(90deg,#8B5CF6,#3B82F6,#06B6D4,#3B82F6,#8B5CF6) border-box;background-size:100% 100%,300% 100%;box-shadow:0 0 0 3px color-mix(in srgb,#8B5CF6 10%,transparent)}
@media (prefers-reduced-motion:no-preference){.chip-ai.live{animation:aiflow 6s linear infinite}}
@keyframes aiflow{to{background-position:0 0,300% 0}}

/* ===== 이력 ===== */
.cv{margin-top:14px;display:flex;flex-direction:column;gap:22px}
.cv-top{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}
.cv-top p{flex:1;min-width:200px}
.cv-group h3{display:flex;align-items:center;gap:7px;margin:0 0 6px;font-size:14px;font-weight:800}
.cv-group h3 .mono{margin-left:2px;font-weight:600}
.cv-group h3 svg.i.sm{width:16px;height:16px;stroke:#6D6AF5}
.cv-list{display:flex;flex-direction:column;border-left:2px solid transparent;border-image:var(--ai-grad) 1;margin-left:7px}
.cv-item{display:flex;gap:12px;width:100%;text-align:left;padding:10px 8px 10px 0;position:relative}
button.cv-item:hover .cv-tx b{text-decoration:underline;text-underline-offset:3px}
.cv-dot{width:10px;height:10px;border-radius:50%;flex:none;margin:6px 0 0 -6px;background:var(--bg);border:2px solid #6D6AF5}
.cv-tx{display:flex;flex-direction:column;gap:3px;min-width:0}
.cv-tx b{font-size:15px;font-weight:700;letter-spacing:-.015em}
.cv-sub{font-size:12.5px;color:var(--ink-3)}
.cv-detail{font-size:13.5px;color:var(--ink-2);white-space:pre-line}
.cv-link{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--link)}
.cv-link svg.i.sm{width:13px;height:13px}
.cv-kinds{display:flex;flex-wrap:wrap;gap:6px}
.chip-k{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);font-size:13.5px;font-weight:600;color:var(--ink-2)}
.chip-k svg.i.sm{width:15px;height:15px}
.chip-k[aria-pressed="true"]{border-color:transparent;color:#fff;background:var(--ai-grad)}

/* 친구 목록 등: 이름 아래에 소개 */
.urow .tx{display:flex;flex-direction:column;align-items:flex-start;min-width:0;gap:1px}
.urow .tx span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}

/* 프로젝트 카드: 작게 */
.pcard{padding:12px 14px 11px;border-radius:12px}
.pcard + .pcard{margin-top:8px}
.pcard .top{gap:4px}
.pcard .top .pill{height:20px;padding:0 7px;font-size:11px}
.pcard .top .pill svg.i.sm{width:12px;height:12px}
.pcard .top .dd{font-size:12px}
.pcard h3{margin:6px 0 2px;font-size:15.5px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcard p{font-size:13px;-webkit-line-clamp:1}
.pcard .roles{margin-top:8px;gap:4px}
.pcard .role{height:22px;padding:0 7px;font-size:11.5px;border-radius:6px}
.pcard .role .c{font-size:10.5px}
.pcard .foot{margin-top:9px;font-size:12px;gap:8px}
.pcard .stack img{width:20px;height:20px;margin-left:-5px}
.pcard .stack img:first-child{margin-left:0}
/* 이력 입력: 월 선택 칸 */
#cv-start,#cv-end{width:100%}
.drow .tx{display:flex;flex-direction:column;align-items:flex-start;min-width:0;gap:1px}
.drow .tx > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
/* 오른쪽 '친구 초대하기' 상자: 차분하게 */
.rail .box.invitebox{background:var(--surface-2)!important;color:var(--ink);border:0;border-radius:14px;padding:14px;margin-bottom:6px}
.invitebox span{color:var(--ink-3);opacity:1}
.invitebox .btn.pri{background:var(--ink);color:var(--bg)}
.ritem.rthumb b{color:var(--ink)}

/* PC 왼쪽 아래 내 프로필: AI 테마 카드 */
@media (min-width:1000px){
  .side .whoami{position:relative;display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:10px 12px;border-radius:14px;
    border:1px solid transparent;background:linear-gradient(color-mix(in srgb,var(--bg) 93%,#8B5CF6),color-mix(in srgb,var(--bg) 93%,#06B6D4)) padding-box,var(--ai-grad) border-box}
  .side .whoami:hover{background:linear-gradient(color-mix(in srgb,var(--bg) 86%,#8B5CF6),color-mix(in srgb,var(--bg) 86%,#06B6D4)) padding-box,var(--ai-grad) border-box}
  .side .whoami .wa-av{flex:none;width:38px;height:38px;border-radius:50%;padding:2px;background:var(--ai-grad)}
  .side .whoami .wa-av img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;border:2px solid var(--bg)}
  .side .whoami .wa-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .side .whoami b{font-size:14.5px;font-weight:800;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .side .whoami .wa-tx span{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;font-weight:700;background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
  .side .whoami .wa-tx span svg.i.sm{width:12px;height:12px;stroke:#6D6AF5}
  .side .whoami > svg.i{width:16px;height:16px;color:var(--ink-3);flex:none}
}

/* 로고: '당'에 AI 그라데이션 */
.logo b i,.ws-home b i,.ws-home-m b i,.auth-mobile-mark b i,.auth-mark b i{
  font-style:normal;background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;color:transparent;padding-right:.04em}
.logo b{display:inline-flex;align-items:baseline}
.logo small{font-size:12.5px;font-weight:600;color:var(--ink-2);letter-spacing:-.01em}

/* 프로젝트 대표 이미지 */
.pthumb{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:12px;color:#fff;overflow:hidden;background:var(--surface-2)}
.pthumb svg.i{width:55%;height:55%;stroke:#fff;stroke-width:2}
.pthumb.img img{width:100%;height:100%;object-fit:cover;display:block}
.pthumb.add{color:var(--ink-3);border:1.5px dashed var(--line);background:transparent}
.pthumb.add svg.i{stroke:var(--ink-3)}
.pthumb.xs{width:20px;height:20px;border-radius:6px;margin-right:2px}
.pthumb.md{width:44px;height:44px;border-radius:12px}
.pthumb.lg{width:56px;height:56px;border-radius:16px}
.pthumb.rt{width:40px;height:40px;border-radius:11px}
.rc-top{justify-content:flex-start}
.rc-top .rc-dd{margin-left:auto}
.pc-main{display:flex;gap:12px;align-items:center;margin-top:8px}
.pc-tx{min-width:0;flex:1}
.pcard .pc-main h3{margin:0 0 2px}
.pd-title{display:flex;gap:14px;align-items:center;margin-top:10px}
.pd-title h2{margin:0}
.page-head.ov{align-items:center;justify-content:flex-start;flex-wrap:nowrap}
.page-head.ov .pthumb.lg{width:64px;height:64px;border-radius:18px;align-self:flex-start;margin-top:4px}
.cover-pick{display:flex;flex-wrap:wrap;gap:8px}
.cv-opt{position:relative;padding:3px;border-radius:15px;border:2px solid transparent;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center}
.cv-opt .pthumb{width:44px;height:44px}
.cv-opt[aria-pressed="true"]{border-color:transparent;background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box}
.cv-opt.up .up-l{position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:700;background:var(--bg);padding:0 4px;border-radius:4px;color:var(--ink-2)}
/* 로고 '당': 아이폰에서도 또렷하게 (글자 채움색까지 투명 + 조금 더 진한 그라데이션) */
.logo b i,.ws-home b i,.ws-home-m b i,.auth-mobile-mark b i,.auth-mark b i{display:inline-block;
  background:linear-gradient(135deg,#7C3AED 0%,#4F46E5 35%,#2563EB 65%,#06B6D4 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
@media (max-width:999px){
  .topbar .logo b{font-size:27px}
  .topbar .logo b i{filter:drop-shadow(0 0 10px rgba(99,102,241,.35))}
}

/* ===== 프로젝트 찾기 (첫 화면) ===== */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.find-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:8px 2px 14px}
.find-head h2{margin:0;font-size:23px;font-weight:800;letter-spacing:-.035em}
.find-head p{margin:4px 0 0;font-size:13.5px;color:var(--ink-3)}
.psearch{display:flex;gap:8px;position:sticky;top:0;z-index:15;padding:8px 0;background:var(--bg)}
@media (max-width:999px){.psearch{top:58px}}
.ps-box{flex:1;min-width:0;display:flex;align-items:center;gap:8px;height:46px;padding:0 6px 0 14px;border-radius:14px;
  border:1.5px solid transparent;background:linear-gradient(var(--surface-2),var(--surface-2)) padding-box,linear-gradient(var(--surface-2),var(--surface-2)) border-box}
.ps-box:focus-within{background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box}
.ps-box > svg{color:var(--ink-3)}
.ps-box input{flex:1;min-width:0;border:0;outline:0;background:transparent;font-size:16px;height:100%}
.ps-box input::-webkit-search-cancel-button{display:none}
.ps-x{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:var(--ink-3)}
.ps-f{position:relative;display:inline-flex;align-items:center;gap:6px;height:46px;padding:0 14px;border-radius:14px;background:var(--surface-2);font-size:14px;font-weight:700;flex:none}
.ps-f[aria-expanded="true"]{background:var(--ink);color:var(--bg)}
.ps-f .nbadge{position:absolute;top:-4px;right:-4px}
.pq-st{margin:6px 0 10px}
.pq-panel{border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px;display:flex;flex-direction:column;gap:12px}
.pq-row{display:flex;flex-direction:column;gap:7px}
.pq-l{font-size:12.5px;font-weight:800;color:var(--ink-2)}
.pq-chips{display:flex;flex-wrap:wrap;gap:6px}
.fchip{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink-2)}
.fchip[aria-pressed="true"],.fchip.on{border-color:transparent;color:#fff;background:var(--ai-grad)}
.fchip svg.i.sm{width:13px;height:13px}
.pq-foot{display:flex;justify-content:flex-end;gap:6px;padding-top:4px;border-top:1px solid var(--line);margin-top:2px;padding-top:12px}
.pq-sum{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:10px}
.pres-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 2px 10px;font-size:13.5px}
.pq-sort select{height:32px;border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:0 8px;font-size:13px;font-weight:600}
.pcard mark{background:linear-gradient(transparent 55%,color-mix(in srgb,#8B5CF6 28%,transparent) 55%);color:inherit;padding:0 1px}
.ritem.peek{display:flex;gap:10px;align-items:flex-start;padding:9px 0}
.ritem.peek .av{margin-top:2px}
.ritem.peek .rt-tx span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ===== 알림: PC 오른쪽 위 종 ===== */
.pc-bell{display:none}
@media (min-width:1000px){
  .pc-bell{display:grid;place-items:center;position:fixed;top:14px;right:18px;z-index:25;width:42px;height:42px;border-radius:50%;
    background:var(--bg);border:1px solid var(--line);color:var(--ink);box-shadow:0 4px 14px -6px rgba(0,0,0,.25)}
  .pc-bell:hover{background:var(--surface-2)}
  .pc-bell .dot{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--rose);color:#fff;font-size:10.5px;line-height:18px;text-align:center;font-weight:700}
  .rail{padding-top:66px}
  body.ws-mode .page-head{padding-right:56px}
  body.admin-mode .pc-bell{display:grid}
}

/* ===== 메시지 (PC): 창 높이 고정 · 닫기 · 저장/출력 ===== */
.conv-acts{margin-left:auto;display:flex;gap:2px}
.conv-acts .iconbtn{width:34px;height:34px}
.close-pc{display:none}
.conv-tools{display:none}
@media (min-width:1000px){
  .mob-only{display:none}
  .close-pc{display:grid}
  .inbox{height:calc(100vh - 120px);min-height:420px;align-items:stretch}
  .inbox .tlist{overflow-y:auto;min-height:0;padding-right:2px}
  .inbox .conv{height:100%;min-height:0;max-height:none}
  .conv-tools{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--line);flex:none}
  .conv-tools button{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
  .conv-tools button:hover{background:var(--surface-2);color:var(--ink)}
  .conv-tools svg.i.sm{width:14px;height:14px}
  .conv-tools .sp{flex:1}
}
.empty-conv{gap:10px}
.ec-ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-3)}

/* 대화 출력: 대화만 종이에 */
@media print{
  body.print-chat .side,body.print-chat .rail,body.print-chat .topbar,body.print-chat .tabbar,body.print-chat .pc-bell,body.print-chat #wsside,
  body.print-chat .inbox .tlist,body.print-chat #ibody .sec-h,body.print-chat .conv-in,body.print-chat .conv-tools,body.print-chat .conv-acts,body.print-chat #notice,body.print-chat .updbar{display:none!important}
  body.print-chat .shell{display:block;max-width:none;padding:0}
  body.print-chat .inbox{display:block;height:auto}
  body.print-chat .conv{position:static!important;height:auto!important;max-height:none!important;overflow:visible!important;border:0;box-shadow:none}
  body.print-chat .bubbles{overflow:visible!important;height:auto!important}
  body.print-chat *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ===== 라이트 모드: 상자 구분 또렷하게 (다크는 그대로) ===== */
:root{--box-sh:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.05)}
:root:not([data-theme="dark"]){--line:#E2E4E9;--surface-2:#F1F2F5;--col:#F3F4F7}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--box-sh:none;--line:#262626;--surface-2:#1C1C1E;--col:#0B0B0B}}
:root[data-theme="dark"]{--box-sh:none}
.panel,.kpi,.pcard,.ucard,.person,.mp-item,.pd-box,.titem,.conv,.card,.ws-home,.pq-panel,.askbox,.ov-notice,.ncard.pinned,.sheet .panel{box-shadow:var(--box-sh)}
.titem{border:1px solid var(--line);background:var(--bg)}
.card{border-color:var(--line)}
.col{border-color:var(--line)}
.conv{border:1px solid var(--line)}
.ps-box{border-color:transparent}
.filter,.kind,.fchip,.role,.chip-k{border-color:var(--line)}
.post{border-bottom-color:var(--line)}
/* 종 아이콘: 화면 끝이 아니라 콘텐츠 오른쪽 끝에 맞춘다 */
@media (min-width:1000px){
  .pc-bell{top:18px;right:max(24px,calc((100vw - 1240px) / 2 + 16px))}
  body.ws-mode .pc-bell{right:max(24px,calc((100vw - 1480px) / 2 + 24px))}
}
/* 오른쪽 칸: 검색창 줄에 맞춰 시작 · 종은 그 위 오른쪽 끝 ('모집하기' 버튼 줄) */
@media (min-width:1000px){
  .rail{padding-top:91px}
  .pc-bell{top:32px;right:max(16px,calc((100vw - 1240px) / 2 + 32px))}
}

/* 모집 직무: 직군 탭 + 직무 칩 */
.jg-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;margin:0 -2px 4px;padding:0 2px 6px;border-bottom:1px solid var(--line)}
.jg-tabs::-webkit-scrollbar{display:none}
.jg{flex:none;display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 11px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink-3)}
.jg[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.jg-n{min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--ai-grad);color:#fff;font-size:10.5px;line-height:16px;text-align:center}
.fc-n{font-size:11px;font-weight:700;opacity:.6;margin-left:2px}
.fchip[aria-pressed="true"] .fc-n{opacity:.9}
.pq-cnt{font-weight:700;color:#6D6AF5;margin-left:4px}
/* 필터 항목 이름: 살짝 색 */
.pq-l{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:800;background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;width:fit-content}
.pq-l::before{content:"";width:3px;height:12px;border-radius:2px;background:var(--ai-grad);flex:none}
.pq-l .pq-cnt{-webkit-text-fill-color:currentColor;color:var(--ink-3);font-weight:700}

/* 증빙 파일 */
.proof-pick{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;border:1.5px dashed var(--line);cursor:pointer}
.proof-pick:hover{border-color:#6D6AF5}
.proof-pick.has{border-style:solid;border-color:transparent;background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box}
.proof-pick > svg{flex:none;color:#6D6AF5}
.pp-tx{display:flex;flex-direction:column;min-width:0}
.pp-tx b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-tx span{font-size:12px;color:var(--ink-3)}
.cv-proof{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;color:var(--mint)}
.cv-proof svg.i.sm{width:13px;height:13px}

/* ===================== 포트폴리오 만들기 ===================== */
.pf-cta{border:1px solid transparent;background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box}
.pf-cta svg{stroke:#6D6AF5}
.cv-btns{display:flex;gap:6px;flex-wrap:wrap}
.pf-top{display:flex;align-items:center;gap:8px;margin:8px 0 12px}
.pf-tt h2{margin:0;font-size:22px;font-weight:800;letter-spacing:-.03em}
.pf-tt p{margin:2px 0 0;font-size:13px;color:var(--ink-3)}
.pf-mode{margin-bottom:12px}
.pf-wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;padding-bottom:80px}
.pf-wrap.mode-edit .pf-preview{display:none}
.pf-wrap.mode-view .pf-ctl{display:none}
.pf-ctl{display:flex;flex-direction:column;gap:12px}
.pf-box{border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--box-sh)}
.pf-box h3{margin:0 0 10px;font-size:14.5px;font-weight:800;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.pf-box h3 small{font-weight:500;font-size:12px}
.pf-box h3 .linkbtn{margin-left:auto}
.pf-ck{display:flex;gap:10px;align-items:flex-start;padding:8px 2px;border-top:1px solid var(--line);cursor:pointer}
.pf-ck:first-of-type{border-top:0}
.pf-ck input{margin-top:3px;accent-color:#6D6AF5;width:16px;height:16px;flex:none}
.pf-ck span{display:flex;flex-direction:column;min-width:0}
.pf-ck b{font-size:14px;font-weight:600}
.pf-ck small{font-size:12px;color:var(--ink-3)}
.pf-k{display:inline-block;font-size:11px;font-weight:800;color:#6D6AF5;margin-right:6px}
.pf-preview{overflow:auto}
.pf-paper{background:#E9EBF0;border-radius:14px;padding:14px;overflow:auto}
.pf-bar{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom,0px));z-index:20;display:flex;align-items:center;gap:8px;padding:10px 16px;background:color-mix(in srgb,var(--bg) 94%,transparent);border-top:1px solid var(--line);backdrop-filter:blur(10px)}
.pf-bar .sp{flex:1}
@media (min-width:1000px){
  .pf-mode{display:none}
  .pf-wrap,.pf-wrap.mode-edit,.pf-wrap.mode-view{grid-template-columns:minmax(0,360px) minmax(0,1fr)}
  .pf-wrap .pf-ctl,.pf-wrap .pf-preview{display:flex !important}
  .pf-preview{position:sticky;top:12px;max-height:calc(100vh - 100px);align-self:start}
  .pf-bar{bottom:0;left:auto;right:auto;position:sticky;margin-top:-60px;border:1px solid var(--line);border-radius:14px}
  body:has(#v-portfolio:not([hidden])) .rail{display:none}
  body:has(#v-portfolio:not([hidden])) .shell{grid-template-columns:220px minmax(0,1fr);max-width:1400px}
}

/* A4 문서 (화면에서도 종이처럼) */
.pf-doc{width:794px;min-height:1123px;margin:0 auto;background:#fff;color:#111;padding:56px 60px;font-size:13.5px;line-height:1.65;box-shadow:0 2px 12px rgba(0,0,0,.12);font-family:var(--f-body);letter-spacing:-.01em}
@media (max-width:860px){.pf-paper{padding:8px}}
.pd-head{display:flex;gap:22px;align-items:center;padding-bottom:20px;border-bottom:2px solid #111}
.pd-photo{width:96px;height:96px;border-radius:12px;object-fit:cover;flex:none}
.pd-id h1{margin:0;font-size:30px;font-weight:800;letter-spacing:-.04em;color:#111}
.pd-title{font-size:15px;font-weight:600;color:#4338CA;margin-top:2px}
.pd-contact{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:12.5px;color:#444}
.pd-sec{margin-top:22px}
.pd-sec h2{margin:0 0 10px;font-size:15px;font-weight:800;color:#111;padding-left:10px;border-left:3px solid #6D6AF5}
.pd-intro{margin:0;white-space:pre-line;color:#222}
.pd-tags{display:flex;flex-wrap:wrap;gap:6px}
.pd-tags span{padding:3px 10px;border-radius:999px;border:1px solid #C7CBF5;color:#3730A3;font-size:12px;font-weight:600}
.pd-item{padding:9px 0;border-bottom:1px solid #EEE;break-inside:avoid}
.pd-item:last-child{border-bottom:0}
.pd-row{display:flex;justify-content:space-between;gap:16px;align-items:baseline}
.pd-row b{font-size:14.5px;color:#111}
.pd-date{font-size:12px;color:#666;white-space:nowrap;font-variant-numeric:tabular-nums}
.pd-org{font-size:12.5px;color:#555;margin-top:1px}
.pd-item p{margin:4px 0 0;color:#333;white-space:pre-line}
.pd-link{font-size:12px;color:#4338CA;margin-top:2px}
.pd-proof{display:inline-block;margin-top:4px;font-size:11px;font-weight:700;color:#047857;background:#ECFDF5;padding:1px 7px;border-radius:5px}
.pd-metrics{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:5px;font-size:12px;color:#444}
.pd-metrics b{color:#111}
.pd-src{color:#888}
.pd-post{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid #EEE;break-inside:avoid}
.pd-post img{width:110px;height:80px;object-fit:cover;border-radius:6px;flex:none}
.pd-post p{margin:2px 0 0;color:#333;font-size:12.5px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.pd-foot{margin-top:28px;padding-top:10px;border-top:1px solid #EEE;font-size:11px;color:#999}
.pd-appx{break-before:page;margin-top:30px}
.pd-appx h2{font-size:15px;font-weight:800;margin:0 0 12px}
.pd-appx figure{margin:0 0 18px;break-inside:avoid}
.pd-appx figcaption{font-size:12.5px;font-weight:700;margin-bottom:6px}
.pd-appx img{max-width:100%;max-height:900px;border:1px solid #DDD}
.pd-file{padding:14px;border:1px dashed #BBB;border-radius:8px;font-size:12.5px;color:#555}

/* PDF로 저장: 문서만 */
@media print{
  @page{size:A4;margin:0}
  body.print-pf *{visibility:hidden}
  body.print-pf .pf-doc,body.print-pf .pf-doc *{visibility:visible}
  body.print-pf .pf-doc{position:absolute;left:0;top:0;zoom:1!important;transform:none!important;box-shadow:none;width:210mm;min-height:297mm;padding:16mm 16mm}
  body.print-pf .pf-preview,body.print-pf .pf-paper{display:block!important;overflow:visible!important;max-height:none!important;background:none;padding:0}
  body.print-pf *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.field input[type=tel]{width:100%;border:1px solid var(--line);background:var(--surface-2);border-color:transparent;border-radius:var(--r-ctl);padding:11px 13px;font-size:16px;outline:none}
.field input[type=tel]:focus{background:var(--bg);border-color:var(--ink-3)}

/* ===================== 관리자 콘솔 ===================== */
.ad-side{display:none}
body.admin-mode .side,body.admin-mode .rail{display:none}
@media (min-width:1000px){
  body.admin-mode .shell{max-width:1480px;grid-template-columns:240px minmax(0,1fr);gap:32px}
  body.admin-mode .ad-side{display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow:auto;padding:18px 14px 18px 0;margin-right:-14px;border-right:1px solid var(--line)}
  body.admin-mode .main{padding-top:22px}
  body.admin-mode .ad-tabs-m,body.admin-mode .ad-exit-m{display:none}
  body.admin-mode .ad-head{padding-right:56px}
}
.ad-who{display:flex;flex-direction:column;gap:3px;padding:4px 10px 14px;margin-bottom:8px;border-bottom:1px solid var(--line)}
.ad-who b{font-size:15px}
.ad-who .rolepill{align-self:flex-start}
.ad-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:4px 0 14px}
.ad-head h1{margin:2px 0 0;font-size:26px;font-weight:800;letter-spacing:-.035em}
.ad-tabs-m{margin-bottom:14px}
.ak-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
@media (min-width:700px){.ak-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.ak{border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--box-sh);background:var(--surface)}
.ak-l{font-size:12.5px;font-weight:700;color:var(--ink-3)}
.ak b{font-size:26px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ak-s{font-size:12px;color:var(--ink-3)}
.ak.warn b{color:color-mix(in srgb,var(--sun) 75%,var(--ink))}
.ak.alert b{color:var(--rose)}
.ad-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-bottom:12px}
@media (min-width:900px){.ad-cols{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}}
.ad-todo{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:11px 4px;border-top:1px solid var(--line)}
.ad-todo:first-of-type{border-top:0}
.ad-todo .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.ad-todo .tx b{font-size:14.5px}
.ad-todo .tx span{font-size:12.5px;color:var(--ink-3)}
.ad-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--rose-soft);color:var(--rose);flex:none}
.ad-clear{display:flex;flex-direction:column;align-items:center;gap:4px;padding:18px 0;text-align:center;color:var(--ink-3);font-size:13px}
.ad-clear svg{color:var(--mint);width:28px;height:28px}
.ad-clear b{color:var(--ink);font-size:14.5px}
.ad-tools{margin-bottom:10px}
.ps-box.sm{height:42px}
.ad-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.ad-row:first-child{border-top:0;padding-top:0}
.ad-row .tx{flex:1;min-width:0;text-align:left;display:flex;flex-direction:column}
.ad-row .tx b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ad-row .tx span{font-size:12px;color:var(--ink-3)}
.ad-row .ctl{display:flex;gap:6px;flex:none}

/* 글 머리 친구 추가 */
.pfollow{flex:none;height:28px;padding:0 11px;border-radius:8px;font-size:12.5px;font-weight:700;color:#fff;background:var(--ai-grad);display:inline-flex;align-items:center;margin-right:2px}
.pfollow.sent{background:var(--surface-2);color:var(--ink-3)}
.actsheet .ic.ai{background:var(--ai-grad);color:#fff}
.post .who .sub{flex-wrap:nowrap;white-space:nowrap;overflow:hidden}
.post .who .sub > span:last-child{overflow:hidden;text-overflow:ellipsis}
/* 푸시 알림 설정 */
.pp-row{display:flex;gap:12px;align-items:flex-start}
.pp-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--surface-2);color:var(--ink-3)}
.push-panel.on .pp-ic{background:var(--ai-grad);color:#fff}
.pp-row .tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.pp-row .tx b{font-size:15px}
.pp-row .tx span{font-size:13px;color:var(--ink-2)}
.pp-btns{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.jd-np{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.jd-np .check{align-items:flex-start;gap:10px;font-weight:500;cursor:pointer}
.jd-np .check input{flex:none;margin-top:2px}
.jd-np .tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.jd-np .tx b{font-size:15px}
.jd-np .tx span{font-size:13px;color:var(--ink-2);overflow-wrap:anywhere}

/* ===== 넘침 수정: 이름·이메일·글 제목이 옆 버튼을 침범하지 않게 ===== */
.drow .tx{align-items:stretch}
.drow .tx > *{max-width:100%;min-width:0}
.drow .tx > b,.drow .tx > .ulink-btn{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.drow .tx > .ulink-btn b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drow > .btn,.drow > div:last-child:not(.tx),.drow .mp-ctl{flex:none}
@media (max-width:420px){
  .drow{flex-wrap:wrap}
  .drow > div:last-child:not(.tx){width:100%;justify-content:flex-start}
}

/* ===== 로고: 휴대폰에서도 PC처럼 밝은 AI 그라데이션 ===== */
.logo b i,.ws-home b i,.ws-home-m b i,.auth-mobile-mark b i,.auth-mark b i{
  background:linear-gradient(120deg,#A78BFA 0%,#818CF8 30%,#60A5FA 62%,#22D3EE 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
@media (max-width:999px){.topbar .logo b i{filter:none}}

/* ===== 검색창: 고급 그라데이션 테두리 ===== */
.ps-box{border:1.5px solid transparent;
  background:linear-gradient(color-mix(in srgb,var(--bg) 96%,#8B5CF6),color-mix(in srgb,var(--bg) 96%,#06B6D4)) padding-box,
             linear-gradient(120deg,color-mix(in srgb,#8B5CF6 45%,var(--line)),color-mix(in srgb,#3B82F6 45%,var(--line)),color-mix(in srgb,#06B6D4 45%,var(--line))) border-box}
.ps-box:focus-within{background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box;box-shadow:0 0 0 4px color-mix(in srgb,#6D6AF5 14%,transparent),0 8px 24px -12px color-mix(in srgb,#6D6AF5 45%,transparent)}
.ps-box > svg{color:#6D6AF5}
.ps-f{border:1.5px solid transparent;background:linear-gradient(var(--surface-2),var(--surface-2)) padding-box,linear-gradient(120deg,color-mix(in srgb,#8B5CF6 35%,var(--line)),color-mix(in srgb,#06B6D4 35%,var(--line))) border-box}
.ps-f[aria-expanded="true"]{background:var(--ai-grad);color:#fff;border-color:transparent}
/* 신청·요청 줄: 시간 줄바꿈 방지, 좁은 폰에선 버튼을 아래로 */
.app .tx .muted{white-space:nowrap}
@media (max-width:420px){
  .app{flex-wrap:wrap}
  .app .btns{width:100%;padding-left:40px}
}

/* ===================== 비회원 둘러보기 ===================== */
.guest-top,.guest-side,.guest-tab,.guest-back{display:none}
body.guest .guest-top{display:flex;gap:6px}
body.guest .topbar .iconbtn:not([data-act="theme"]),body.guest .me-chip,body.guest .modebtn,body.guest .pc-bell{display:none!important}
body.guest .side .nav:not([data-go="projects"]):not([data-go="feed"]):not(.theme-nav),body.guest .side .cta,body.guest .side .invite-cta,body.guest .side .whoami{display:none!important}
body.guest .guest-side{display:flex;flex-direction:column;gap:8px;margin-top:auto;padding:14px;border-radius:14px;border:1px solid transparent;background:linear-gradient(color-mix(in srgb,var(--bg) 93%,#8B5CF6),color-mix(in srgb,var(--bg) 93%,#06B6D4)) padding-box,var(--ai-grad) border-box}
.guest-side b{font-size:15px} .guest-side span{font-size:12.5px;color:var(--ink-2);margin-bottom:4px}
body.guest .tabbar:not(.adminbar):not(.wsbar){grid-template-columns:repeat(3,1fr)}
body.guest .tabbar .tab.plus,body.guest .tabbar .tab[data-go="inbox"],body.guest .tabbar .tab[data-go="me"]{display:none}
body.guest .guest-tab{display:flex}
body.guest .composer,body.guest .stories,body.guest .invitebox,body.guest .rail .box.invitebox{display:none!important}
.auth .guest-back{display:inline-flex;align-items:center;gap:4px;font-size:13.5px;font-weight:600;color:var(--ink-3);margin-bottom:10px}
.guest-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 12px;padding:12px 14px;border-radius:14px;border:1px solid transparent;
  background:linear-gradient(color-mix(in srgb,var(--bg) 94%,#8B5CF6),color-mix(in srgb,var(--bg) 94%,#06B6D4)) padding-box,var(--ai-grad) border-box}
.guest-bar .tx{flex:1;min-width:200px;display:flex;flex-direction:column;gap:2px}
.guest-bar b{font-size:14px} .guest-bar span{font-size:12.5px;color:var(--ink-2)}
.gb-btns{display:flex;gap:6px}
.guest-cmt{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2)}
.guest-cmt span{flex:1}
.gj-head{text-align:center}
.gj-logo b{font-weight:800;font-size:30px;letter-spacing:-.06em}
.gj-head h2{margin:10px 0 6px;font-size:19px}
.gj-list{list-style:none;margin:14px 0;padding:0;display:flex;flex-direction:column;gap:10px}
.gj-list li{display:flex;gap:10px;align-items:flex-start;font-size:14px}
.gj-list svg{color:#6D6AF5;flex:none;margin-top:2px}
.gj-btns{display:flex;flex-direction:column;gap:8px}
.on-box{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;font-size:14px}
.on-box ul{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:3px}
.pd-title h2{color:var(--ink)}
body.guest .filter[data-filter="friends"]{display:none}

/* ===================== 일정: 달력 ===================== */
.tl-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.cal{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface);box-shadow:var(--box-sh)}
.cal-h{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--line)}
.cal-h b{font-size:17px;font-weight:800;letter-spacing:-.02em;min-width:110px;text-align:center}
.cal-h .btn{margin-left:auto}
.cal-w{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);background:var(--surface-2)}
.cal-w span{text-align:center;font-size:12px;font-weight:700;color:var(--ink-3);padding:6px 0}
.cal-w .sun,.cd.sun .cd-n{color:var(--rose)} .cal-w .sat,.cd.sat .cd-n{color:var(--link)}
.cal-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cd{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:2px;min-height:96px;padding:5px 4px 6px;text-align:left;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0;overflow:hidden}
.cd:nth-child(7n){border-right:0}
.cd:hover{background:var(--surface-2)}
.cd.out{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}
.cd.out .cd-n{opacity:.45}
.cd-n{font-size:12.5px;font-weight:700;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;font-variant-numeric:tabular-nums}
.cd.today .cd-n{background:var(--ai-grad);color:#fff!important}
.cd.sel{box-shadow:inset 0 0 0 2px #6D6AF5}
.cd-ev{display:flex;flex-direction:column;gap:2px;min-width:0}
.ce{display:block;font-size:11px;font-weight:600;line-height:17px;height:17px;padding:0 5px;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ce.ms{background:color-mix(in srgb,var(--violet) 22%,transparent);color:color-mix(in srgb,var(--violet) 80%,var(--ink));margin:0 -4px;border-radius:0}
.ce.ms.f{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}
.ce.ms.l{margin-right:0;border-top-right-radius:4px;border-bottom-right-radius:4px}
.ce.ms.done{background:var(--surface-2);color:var(--ink-3)}
.ce.task{background:var(--surface-2);color:var(--ink-2)}
.ce.task.doing{background:var(--link-soft);color:var(--link)}
.ce.task.review{background:var(--sun-soft);color:color-mix(in srgb,var(--sun) 70%,var(--ink))}
.ce.task.done{background:var(--mint-soft);color:var(--mint);text-decoration:line-through}
.ce.task.late{background:var(--rose-soft);color:var(--rose)}
.ce.dead{background:var(--rose);color:#fff}
.ce.more{color:var(--ink-3);background:none;padding:0 2px}
.cd-dots{display:none}
.cal-legend{display:flex;flex-wrap:wrap;gap:4px 12px;padding:9px 12px;font-size:11.5px;color:var(--ink-3);border-top:1px solid var(--line)}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
.cal-legend i,.cd-dots i{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--st-todo)}
.cal-legend i.ms,.cd-dots i.ms{background:var(--violet)} .cal-legend i.doing,.cd-dots i.doing{background:var(--link)} .cal-legend i.review,.cd-dots i.review{background:var(--sun)}
.cal-legend i.done,.cd-dots i.done{background:var(--mint)} .cal-legend i.late,.cd-dots i.late{background:var(--rose)} .cal-legend i.dead,.cd-dots i.dead{background:var(--rose)}
.cd-dots i.ms.done{background:var(--ink-3)}
.cal-day{margin-top:12px}
.tdot.dead{background:var(--rose)}
/* 휴대폰: 칸 안에는 점만, 고른 날 목록은 아래에 */
@media (max-width:640px){
  .cd{min-height:58px;align-items:center;padding:4px 2px}
  .cd-ev{display:none}
  .cd-dots{display:flex;gap:3px;flex-wrap:wrap;justify-content:center;max-width:100%}
  .cd-dots i{width:6px;height:6px}
  .cal-h b{font-size:16px}
}

/* ---------- 대회·공모전 ---------- */
.xswitch{display:flex;gap:4px;padding:3px;margin:4px 0 6px;border-radius:12px;background:var(--surface-2);width:fit-content}
.xswitch button{height:34px;padding:0 16px;border-radius:9px;font-size:14px;font-weight:700;color:var(--ink-3)}
.xswitch button[aria-selected="true"]{background:var(--bg);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
@media (min-width:1000px){.xswitch{display:none}}
.ccards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
@media (max-width:640px){.ccards{grid-template-columns:1fr;gap:8px}}
.ccard{display:flex;flex-direction:column;gap:6px;text-align:left;padding:13px 14px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);box-shadow:var(--box-sh);min-width:0}
.ccard:hover{background:var(--surface-2)}
.ccard.ended{opacity:.62}
.cc-top{display:flex;align-items:center;gap:6px;min-height:20px}
.cc-field{font-size:11.5px;font-weight:800;background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.cc-top .dd{margin-left:auto;font-size:12px;font-weight:700;color:var(--ink-2)}
.cc-top .dd.soon,.cc-top .dd.over{color:var(--rose)}
.cc-top .dd.later{color:var(--link)}
.ccard h3{margin:0;font-size:15.5px;font-weight:800;line-height:1.35;letter-spacing:-.02em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ccard mark{background:linear-gradient(transparent 55%,color-mix(in srgb,#8B5CF6 28%,transparent) 55%);color:inherit;padding:0 1px}
.cc-host{font-size:12.5px;color:var(--ink-3);display:flex;align-items:center;flex-wrap:wrap;gap:4px;min-width:0}
.cc-prize{display:inline-flex;align-items:center;gap:3px;color:var(--sun-ink);font-weight:700}
:root[data-theme="dark"] .cc-prize{color:var(--sun)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .cc-prize{color:var(--sun)}}
.cc-prize svg.i.sm{width:12px;height:12px;color:var(--sun)}
.cbadges{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.cb > svg.i{flex:none;margin:0}
.cbadges.lg{margin:12px 0 4px;gap:6px}
.cb{display:inline-flex;align-items:center;gap:3px;height:22px;padding:0 7px;border-radius:6px;font-size:11.5px;font-weight:700;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}
.cbadges.lg .cb{height:26px;padding:0 9px;font-size:12.5px}
.cb svg.i.sm{width:12px;height:12px}
.cb.ok{background:var(--mint-soft);color:var(--mint)}
.cb.info{background:var(--link-soft);color:var(--link)}
.cb.warn{background:var(--rose-soft);color:var(--rose)}
.cb.cost{background:var(--sun-soft);color:var(--sun-ink)}
:root[data-theme="dark"] .cb.cost{color:var(--sun)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .cb.cost{color:var(--sun)}}
.cc-foot{display:flex;align-items:center;gap:8px;margin-top:2px;font-size:12px;color:var(--ink-3)}
.cc-teams{display:inline-flex;align-items:center;gap:4px}
.cc-teams.on{color:var(--ink);font-weight:600}
.cc-teams.on b{background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:800}
.cc-src{margin-left:auto;font-size:11px;font-weight:700;color:var(--ink-3);border:1px solid var(--line);border-radius:5px;padding:1px 5px}
/* 대회 상세 */
.cd-head h2{margin:6px 0 4px;font-size:21px;line-height:1.3;letter-spacing:-.03em}
.ct-warn{display:flex;gap:8px;align-items:flex-start;margin:10px 0;padding:10px 12px;border-radius:10px;background:var(--rose-soft);color:var(--ink);font-size:13px;line-height:1.5}
.ct-warn svg{flex:none;margin-top:2px;color:var(--rose)}
.pd-box.ci{display:flex;flex-direction:column;gap:0;padding:4px 14px}
.ci-row{display:grid;grid-template-columns:88px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px;line-height:1.55}
.ci-row:last-child{border-bottom:0}
.ci-k{color:var(--ink-3);font-weight:600}
.ci-v{min-width:0;overflow-wrap:anywhere}
.ci-v .muted{font-size:12.5px}
a.ct-src{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:12px;text-decoration:none}
.ct-note{margin:8px 2px 0;font-size:12px;color:var(--ink-3);line-height:1.55}
.ct-team{display:flex;align-items:center;gap:10px;width:100%;padding:9px 0;text-align:left;border-bottom:1px solid var(--line)}
.ct-team:last-of-type{border-bottom:0}
.ct-team .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.ct-team .tx b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-team .tx span{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 모집 글 안 대회 */
.pc-ct{display:flex;align-items:center;gap:5px;margin-top:8px;font-size:12px;color:var(--ink-2);min-width:0}
.pc-ct svg.i.sm{width:13px;height:13px;color:var(--sun);flex:none}
.pc-ct .t{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pc-ct-d{color:var(--ink-3);white-space:nowrap;flex:none}
.pc-ct .cb{height:19px;font-size:10.5px;padding:0 5px;flex:none}
.ct-box h4{margin-bottom:8px}
.ct-link{display:flex;align-items:center;gap:10px;width:100%;text-align:left;margin-bottom:8px}
.ct-ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex:none;color:#fff;background:linear-gradient(135deg,#F59E0B,#EF4444)}
.ct-link .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.ct-link .tx b{font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-link .tx span{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-check{display:flex;gap:9px;align-items:flex-start;margin:4px 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:13px;line-height:1.5;cursor:pointer}
.ct-check input{width:18px;height:18px;margin:1px 0 0;flex:none;accent-color:#6D6AF5}
.ct-new{margin-top:10px;padding:12px;border:1px dashed var(--line);border-radius:12px;display:flex;flex-direction:column;gap:12px}
.ct-new .field{margin:0}

/* ---------- 탐색: 내 프로젝트 줄 · PL 도구 ---------- */
.mystrip{margin:2px 0 12px}
.ms-h{display:flex;align-items:center;gap:6px;margin:0 2px 8px;font-size:14px}
.ms-h b{font-weight:800}
.ms-h .linkbtn{margin-left:auto;font-size:12.5px;color:var(--ink-3);font-weight:600}
.ms-row{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 4px;scroll-snap-type:x proximity}
.ms-row::-webkit-scrollbar{display:none}
.myp{position:relative;flex:none;width:232px;scroll-snap-align:start;border:1px solid var(--line);border-radius:12px;background:var(--bg);box-shadow:var(--box-sh)}
.myp:hover{background:var(--surface-2)}
.myp-main{display:flex;align-items:center;gap:10px;width:100%;padding:10px 40px 10px 10px;text-align:left;min-width:0}
.myp .pthumb.sm{width:40px;height:40px;border-radius:11px;flex:none}
.myp .tx{display:flex;flex-direction:column;min-width:0}
.myp .tx b{font-size:13.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.myp .tx span{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.myp .ml{font-style:normal;font-weight:800;background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.myp-ed{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--ink-3)}
.myp-ed:hover{background:var(--bg);color:var(--ink)}
@media (max-width:640px){.myp{width:200px}}
.own-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-4px 0 14px}
.own-tools .seg{flex:none}
.own-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px;padding:9px 10px 9px 12px;border-radius:10px;background:var(--surface-2);font-size:13px;font-weight:600;color:var(--ink-2)}
.own-bar > span{display:inline-flex;align-items:center;gap:6px;min-width:0}
.ms-h .linkbtn{margin:0 0 0 auto;width:auto;padding:0;display:inline-flex;align-self:center;text-decoration:none}
.own-tools .seg button{white-space:nowrap;padding:0 12px}

/* ---------- 기여 기록 · 팀원 확인 ---------- */
.tier{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;border-radius:7px;font-size:12px;font-weight:800;white-space:nowrap;flex:none}
.tier.sm{height:20px;padding:0 7px;font-size:11px}
.tier svg.i.sm{width:12px;height:12px}
.tier.team{background:var(--mint-soft);color:var(--mint)}
.tier.act{background:var(--link-soft);color:var(--link)}
.tier.self{background:var(--surface-2);color:var(--ink-3)}
.cb-panel .ph{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cb-row{display:flex;gap:10px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line)}
.cb-row:last-of-type{border-bottom:0}
.cb-row .tx{flex:1;min-width:0}
.cb-row .ctl{flex:none;align-self:center}
.cb-name{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cb-name b{font-size:14px}
.cb-stat{font-size:12.5px;color:var(--ink-2);margin-top:2px}
.cb-stat b{color:var(--ink)}
.cb-by{margin-top:4px;font-size:12px;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.cb-by span{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:6px;background:var(--surface-2);color:var(--ink-2);font-weight:600}
.cb-by i{font-style:normal;font-weight:800;color:var(--mint)}
.cb-wrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 6px;padding:10px 12px;border-radius:10px;background:var(--sun-soft);font-size:13px;color:var(--ink)}
.cb-wrap .btn{margin-left:auto}
.cb-me{margin-top:10px;padding:12px;border-radius:12px;background:var(--surface-2)}
.cb-me-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.needs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--ink-3)}
.needs li{display:flex;align-items:center;gap:6px}
.needs li i{width:12px;height:12px;border:1.5px solid var(--line);border-radius:50%;display:inline-block}
.needs li.ok{color:var(--mint);font-weight:600}
.needs svg.i.sm{width:13px;height:13px}
.cb-sum{padding:10px 12px;border-radius:10px;background:var(--surface-2);font-size:13px;color:var(--ink-2);margin-bottom:10px}
.cb-sum b{color:var(--ink)}
.cb-tops{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin:0 0 12px}
.cb-tops > .muted{width:100%}
.cb-top{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:7px;border:1px solid var(--line);font-size:12.5px}
.cb-top svg.i.sm{width:12px;height:12px;color:var(--mint)}
.cb-agree{align-items:flex-start;font-size:13px;line-height:1.5}
/* 포트폴리오 문서 */
.pd-result{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:12px;color:#333}
.pd-result span{color:#2563EB}
.pd-rec{margin-top:6px;padding:7px 10px;border-radius:8px;background:#F7F7F8;font-size:11.5px;color:#444;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.pd-rec b{color:#111}
.pd-tier{font-weight:800;font-size:10.5px;padding:1px 7px;border-radius:5px;background:#EEE;color:#555}
.pd-rec.team .pd-tier{background:#E7F8EF;color:#047857}
.pd-rec.act .pd-tier{background:#E8F0FE;color:#1D4ED8}
.pd-conf{width:100%;color:#333;font-size:11.5px}
.pd-proof.self{color:#777;background:#F2F2F3}
.pd-qr{margin-left:auto;display:flex;flex-direction:column;align-items:center;gap:2px;flex:none}
.pd-qr img{width:78px;height:78px;image-rendering:pixelated}
.pd-qr span{font-size:9.5px;color:#666;font-weight:700}
.pf-share.on{border-color:color-mix(in srgb,#6D6AF5 40%,var(--line))}
.pf-box h3 svg.i.sm{width:14px;height:14px;vertical-align:-2px;margin-right:4px}
.pf-url{display:flex;gap:6px}
.pf-url input{flex:1;min-width:0;height:36px;font-size:13px}
.pf-share-row{display:flex;gap:12px;align-items:flex-start;margin-top:10px}
.pf-qr{width:92px;height:92px;border-radius:8px;border:1px solid var(--line);image-rendering:pixelated;flex:none;background:#fff}

/* ---------- 내가 한 일 정리 ---------- */
.wu-panel .ph{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.wu-card{padding:12px 0;border-bottom:1px solid var(--line)}
.wu-card:last-of-type{border-bottom:0}
.wu-card.mine{background:var(--surface-2);border-radius:12px;padding:12px;border-bottom:0;margin-bottom:6px}
.wu-h{display:flex;align-items:center;gap:8px}
.wu-h b{font-size:14px}
.wu-ok{margin-left:auto;font-size:12px;font-weight:700;color:var(--mint);background:var(--mint-soft);padding:2px 8px;border-radius:999px;white-space:nowrap}
.wu-sum{margin:8px 0 0;font-size:14.5px;font-weight:700;line-height:1.45}
.wu-lines{margin:6px 0 0;padding-left:18px;font-size:13.5px;color:var(--ink-2);line-height:1.6}
.wu-skills{margin-top:6px;font-size:12.5px;color:var(--ink-3)}
.wu-act{display:flex;justify-content:flex-end;margin-top:8px}
.wu-like.on{background:var(--mint-soft);color:var(--mint);border-color:transparent}
.wu-nudge{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:12px 14px;border-radius:14px;border:1.5px solid transparent;background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box}
.wu-nudge > svg{flex:none;color:#6D6AF5}
.wu-nudge div{flex:1;min-width:0;display:flex;flex-direction:column}
.wu-nudge b{font-size:14px}
.wu-nudge span{font-size:12.5px;color:var(--ink-3)}
.wu-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;align-items:center}
.wu-chips > .muted{width:100%}
.wu-chip{padding:4px 10px;border-radius:999px;border:1px dashed var(--line);font-size:12.5px;color:var(--ink-2)}
.wu-chip:disabled{opacity:.4}
.pf-prow{display:flex;align-items:center;gap:8px}
.pf-prow .pf-ck{flex:1;min-width:0}
.pf-prow .btn{flex:none}
.pd-wu{margin-top:6px;font-size:12.5px;color:#222}
.pd-wu > b{display:block;font-size:12.5px}
.pd-wu ul{margin:4px 0 0;padding-left:16px;line-height:1.55}
.pd-wu-sk{margin-top:4px;font-size:11.5px;color:#555}
.pd-wu-ok{margin-top:4px;font-size:11px;font-weight:700;color:#047857}

/* ===================== 포트폴리오 v2: 자유 편집 · 테마 · 가독성 ===================== */
/* 편집 패널 */
.pf-secs{display:flex;flex-direction:column;gap:6px}
.pf-sec{display:flex;align-items:center;gap:4px}
.pf-sec.off .pf-secname{opacity:.45;text-decoration:line-through}
.pf-secname{flex:1;min-width:0;height:36px;border:1px solid var(--line);border-radius:9px;padding:0 10px;font-size:14px;font-weight:600;background:var(--bg);color:var(--ink)}
.pf-secname:focus{outline:none;border-color:#6D6AF5}
.pf-sec .iconbtn.sm{width:30px;height:30px;font-size:14px;font-weight:700}
.pf-eye{height:30px;padding:0 9px;border-radius:8px;border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--ink-3);flex:none}
.pf-eye[aria-pressed="true"]{color:var(--mint);background:var(--mint-soft);border-color:transparent}
.pf-themes{display:flex;flex-wrap:wrap;gap:6px}
.pf-th{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 11px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink-2)}
.pf-th i{width:12px;height:12px;border-radius:50%;background:var(--c)}
.pf-th[aria-pressed="true"]{border-color:var(--c);box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 25%,transparent);color:var(--ink)}
details.pf-share summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px}
details.pf-share summary::-webkit-details-marker{display:none}
details.pf-share summary b{display:inline-flex;align-items:center;gap:5px;font-size:14px}
/* 문서 — 테마 색 --pc 로 구분을 또렷하게 */
.pf-doc{--pc:#4338CA;font-size:13.5px;line-height:1.7}
.pf-doc .pd-head{border-bottom:3px solid var(--pc);padding-bottom:22px}
.pf-doc .pd-title{color:var(--pc)}
.pf-doc .pd-contact span+span::before{content:"·";margin-right:14px;color:#BBB}
.pf-doc .pd-contact{gap:4px 14px}
.pf-doc .pd-sec{margin-top:28px}
.pf-doc .pd-sec h2{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:7px 12px;border-left:0;border-radius:6px;font-size:14.5px;font-weight:800;letter-spacing:-.01em;color:var(--pc);background:color-mix(in srgb,var(--pc) 8%,#fff)}
.pf-doc .pd-sec h2::before{content:"";width:4px;height:15px;border-radius:2px;background:var(--pc);flex:none}
.pf-doc .pd-tags span{border-color:color-mix(in srgb,var(--pc) 35%,#fff);color:var(--pc)}
.pf-doc .pd-item{position:relative;padding:12px 2px 12px 14px;border-bottom:0;border-left:2px solid color-mix(in srgb,var(--pc) 22%,#fff);margin-bottom:8px}
.pf-doc .pd-item:last-child{margin-bottom:0}
.pf-doc .pd-item.pd-proj{background:#FAFAFB;border-radius:0 8px 8px 0;border-left-color:var(--pc)}
.pf-doc .pd-row b{font-size:15px}
.pf-doc .pd-org{color:#555;font-weight:500}
.pf-doc .pd-body{margin-top:6px;color:#222;white-space:pre-line}
.pf-doc .pd-result{margin-top:6px}
.pf-doc .pd-result span{color:var(--pc)}
.pf-doc .pd-post{padding:10px 0;border-bottom:1px dashed #E2E2E6}
.pf-doc .pd-foot{color:#999}
/* 촘촘하게 */
.pf-doc.dense{font-size:12.5px;line-height:1.55;padding:44px 50px}
.pf-doc.dense .pd-sec{margin-top:18px}
.pf-doc.dense .pd-sec h2{padding:5px 10px;margin-bottom:8px;font-size:13.5px}
.pf-doc.dense .pd-item{padding:8px 2px 8px 12px;margin-bottom:5px}
.pf-doc.dense .pd-head{padding-bottom:16px}
.pf-doc.dense .pd-photo{width:80px;height:80px}
/* 문서에서 바로 고치기 */
.pf-doc.inline [contenteditable="true"]{border-radius:4px;outline:none;transition:background .15s;cursor:text}
.pf-doc.inline [contenteditable="true"]:hover{background:color-mix(in srgb,var(--pc) 7%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--pc) 7%,transparent)}
.pf-doc.inline [contenteditable="true"]:focus{background:#FFFBEA;box-shadow:0 0 0 2px #F5D565}
.pf-doc.inline [contenteditable="true"]:empty::before{content:"눌러서 내용을 입력하세요";color:#BBB}
.pf-doc .pd-ch{text-decoration:underline dotted color-mix(in srgb,var(--pc) 45%,transparent);text-underline-offset:3px}
.pd-tools{position:absolute;top:-13px;right:0;display:none;gap:3px;z-index:2;padding:2px;border-radius:8px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.pf-doc.inline .pd-item:hover > .pd-tools,.pf-doc.inline .pd-post:hover > .pd-tools,.pf-doc.inline .pd-item:focus-within > .pd-tools{display:flex}
.pd-tools button{height:24px;min-width:24px;padding:0 7px;border-radius:6px;border:1px solid #DDD;background:#fff;font-size:11.5px;font-weight:700;color:#444;cursor:pointer}
.pd-tools button:disabled{opacity:.35;cursor:default}
.pf-doc .pd-post{position:relative}
@media (hover:none){.pf-doc.inline .pd-item > .pd-tools,.pf-doc.inline .pd-post > .pd-tools{display:flex;position:static;justify-content:flex-end;margin:-4px 0 4px}}
/* PDF 합치기 */
.mg-steps{margin:0 0 12px;padding-left:20px;font-size:13.5px;line-height:1.7}
.mg-steps .btn{margin-left:6px;vertical-align:middle}
.mg-add{margin-bottom:10px;cursor:pointer}
.mg-list{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.mg-item{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.mg-item.off{opacity:.5}
.mg-item input{width:17px;height:17px;accent-color:#6D6AF5;flex:none}
.mg-k{font-size:11px;font-weight:800;color:#6D6AF5;flex:none}
.mg-n{flex:1;min-width:0;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mg-item .iconbtn.sm{width:28px;height:28px;font-weight:700}
/* 인쇄: 여러 장이어도 위아래 여백, 편집 표시는 숨김 */
@media print{
  @page{size:A4;margin:14mm 0}
  body.print-pf .pf-doc{padding:0 16mm!important}
  body.print-pf .pd-tools{display:none!important}
  body.print-pf .pf-doc [contenteditable]{background:none!important;box-shadow:none!important}
  body.print-pf .pf-doc .pd-ch{text-decoration:none}
  body.print-pf .pf-doc [contenteditable]:empty{display:none}
  body.print-pf .pd-sec h2{break-after:avoid}
  body.print-pf .pd-item{break-inside:avoid}
}

/* ---------- 뒤로가기 버튼 (앞 단계가 있을 때) ---------- */
.backbar{margin:4px 0 6px}
.backbtn{display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 12px 0 8px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink-2);font-size:13.5px;font-weight:600}
.backbtn:hover{background:var(--surface-2);color:var(--ink)}
.backbtn svg.i.sm{width:16px;height:16px}
body.chat-open .backbar,body.ws-mode .backbar,body.admin-mode .backbar{display:none}
/* 게시글을 팝업으로 열었을 때 좌우 여백 */
.sheet .post{padding-left:18px;padding-right:18px;border-bottom:0}

/* ---------- 비회원: 회원과 같은 메뉴를 보여 주고, 막힌 기능은 누를 때 가입 안내 ---------- */
body.guest .topbar .iconbtn:not([data-act="theme"]){display:inline-flex!important}
@media (min-width:1000px){body.guest .pc-bell{display:grid!important}}   /* 종 아이콘을 동그라미 가운데로 */
body.guest .side .nav:not([data-go="projects"]):not([data-go="feed"]):not(.theme-nav):not([data-admin]),body.guest .side .cta,body.guest .side .invite-cta{display:flex!important}
body.guest .tabbar:not(.adminbar):not(.wsbar){grid-template-columns:repeat(5,1fr)}
body.guest .tabbar .tab.plus,body.guest .tabbar .tab[data-go="inbox"],body.guest .tabbar .tab[data-go="me"]{display:flex}
body.guest .composer{display:block!important}
body.guest .stories{display:flex!important}
body.guest .invitebox,body.guest .rail .box.invitebox{display:flex!important}
body.guest .side .nav[data-admin],body.guest [data-admin]{display:none!important}
body.guest .filter[data-filter="friends"]{display:inline-flex}
body.guest .guest-side{margin-top:auto;padding:0;border:0;background:none;gap:6px}
.guest-cin{display:block;width:calc(100% - 28px);margin:10px 14px 14px;text-align:left}
.guest-cin-in{display:block;height:40px;line-height:40px;padding:0 14px;border-radius:999px;background:var(--surface-2);color:var(--ink-3);font-size:14px}
.gj-head h2{margin-bottom:16px}

/* ---------- 들어간 화면: 상단바 대신 "← 제목" 한 줄 머리 ---------- */
.backbar{display:flex;align-items:center;gap:6px;margin:0 0 6px;min-height:48px}
.backbar[hidden]{display:none}
.backbtn{width:40px;height:40px;padding:0;justify-content:center;border:0;border-radius:50%;background:none;color:var(--ink)}
.backbtn:hover{background:var(--surface-2)}
.backbtn svg.i{width:22px;height:22px}
.dh-t{font-size:17px;font-weight:800;letter-spacing:-.02em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:999px){
  body.detail .topbar{display:none!important}
  body.detail .backbar{position:sticky;top:0;z-index:20;margin:0 -16px 8px;padding:4px 10px calc(4px) 6px;padding-top:calc(4px + env(safe-area-inset-top,0px));background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
  body.detail .pf-top{position:sticky;top:0;z-index:20;margin:0 -16px 10px;padding:4px 10px 4px 6px;padding-top:calc(4px + env(safe-area-inset-top,0px));background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
  body.detail .pf-top .pf-tt h2{font-size:17px}
}

/* ===================== 휴대폰: 더 밝게 + AI 그라데이션 포인트 (PC는 그대로) ===================== */
@media (max-width:999px){
  /* 상단바: 아주 옅은 그라데이션 빛 + 아래 그라데이션 선 */
  .topbar{position:sticky;background:
      linear-gradient(110deg,rgba(139,92,246,.08),rgba(59,130,246,.05) 50%,rgba(6,182,212,.08)),
      color-mix(in srgb,var(--bg) 92%,transparent);border-bottom:0}
  .topbar::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--ai-grad);opacity:.55}
  .topbar .logo b i{filter:drop-shadow(0 0 8px rgba(109,106,245,.45))}
  .me-chip{padding:2px;background:var(--ai-grad);border-radius:50%;width:34px;height:34px}
  .me-chip img{border-radius:50%;border:2px solid var(--bg)}
  /* 아래 탭바: 고른 탭은 보라빛 + 그라데이션 점, 만들기 버튼은 그라데이션 */
  .tabbar:not(.wsbar):not(.adminbar){background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
  .tabbar:not(.wsbar):not(.adminbar) .tab{position:relative}
  .tabbar:not(.wsbar):not(.adminbar) .tab[aria-current="page"]{color:#6D6AF5}
  .tabbar:not(.wsbar):not(.adminbar) .tab[aria-current="page"]::after{content:"";position:absolute;bottom:3px;left:50%;width:18px;height:3px;margin-left:-9px;border-radius:3px;background:var(--ai-grad)}
  .tab.plus span.pl{border:0;background:var(--ai-grad);color:#fff;width:34px;height:30px;border-radius:10px;box-shadow:0 4px 14px -4px rgba(99,102,241,.6)}
  .wsbar .tab[aria-current="page"]{color:#6D6AF5}
  /* 화면 제목에 그라데이션 포인트 */
  /* 화면 제목 그라데이션은 다크에서만 (라이트에 넣으면 폰 브라우저의 '강제 다크'에서 검은 글씨로 묻힘) */
  .backbar .dh-t,.pf-top .pf-tt h2{color:var(--ink)}
}
/* 휴대폰 다크 모드: 새까만 바탕 대신 보랏빛이 도는 밝은 남색 계열로 */
@media (max-width:999px) and (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#1F1F2A; --surface:#272734; --surface-2:#313141; --line:#4A4A5E; --col:#23232E; --card:#2A2A38;
  --ink:#FFFFFF; --ink-2:#EFEFF8; --ink-3:#CFCFE0;
  --ai-grad:linear-gradient(120deg,#B197FF 0%,#6FAEFF 50%,#3DDCF2 100%); --accent-soft:#33334A; --st-todo:#6A6A82;
  --link:#A3C8FF; --link-soft:#2A3A5C; --mint:#4BE0A0; --mint-soft:#173A2C; --rose:#FF6B7A; --sun:#FFC24D;
}}
@media (max-width:999px){:root[data-theme="dark"]{
  --bg:#1F1F2A; --surface:#272734; --surface-2:#313141; --line:#4A4A5E; --col:#23232E; --card:#2A2A38;
  --ink:#FFFFFF; --ink-2:#EFEFF8; --ink-3:#CFCFE0;
  --ai-grad:linear-gradient(120deg,#B197FF 0%,#6FAEFF 50%,#3DDCF2 100%); --accent-soft:#33334A; --st-todo:#6A6A82;
  --link:#A3C8FF; --link-soft:#2A3A5C; --mint:#4BE0A0; --mint-soft:#173A2C; --rose:#FF6B7A; --sun:#FFC24D;
}}
@media (max-width:999px) and (prefers-color-scheme: dark){:root:not([data-theme="light"]) .tabbar:not(.wsbar):not(.adminbar) .tab[aria-current="page"],:root:not([data-theme="light"]) .wsbar .tab[aria-current="page"]{color:#A9A6FF}}
@media (max-width:999px){:root[data-theme="dark"] .tabbar:not(.wsbar):not(.adminbar) .tab[aria-current="page"],:root[data-theme="dark"] .wsbar .tab[aria-current="page"]{color:#A9A6FF}}
@media (max-width:999px) and (prefers-color-scheme: dark){:root:not([data-theme="light"]) .find-head h2,:root:not([data-theme="light"]) .sec-h h2{background:linear-gradient(120deg,#FFFFFF 50%,#C4C1FF);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}}
@media (max-width:999px){:root[data-theme="dark"] .find-head h2,:root[data-theme="dark"] .sec-h h2{background:linear-gradient(120deg,#FFFFFF 50%,#C4C1FF);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}}
/* 휴대폰 라이트: 로고 '당'은 중간 톤 그라데이션 (흰 바탕·강제 다크 둘 다에서 보이게) */
@media (max-width:999px){
  :root:not([data-theme="dark"]) .topbar .logo b i{background-image:linear-gradient(120deg,#8B5CF6 0%,#6366F1 40%,#3B82F6 70%,#06B6D4 100%);filter:none}
}
@media (max-width:999px) and (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .topbar .logo b i{background-image:linear-gradient(120deg,#A78BFA 0%,#818CF8 30%,#60A5FA 62%,#22D3EE 100%);filter:drop-shadow(0 0 8px rgba(129,140,248,.5))}
}
@media (max-width:999px){:root[data-theme="dark"] .topbar .logo b i{background-image:linear-gradient(120deg,#A78BFA 0%,#818CF8 30%,#60A5FA 62%,#22D3EE 100%);filter:drop-shadow(0 0 8px rgba(129,140,248,.5))}}

/* 휴대폰 다크: 보라 글씨·그라데이션 글씨가 어두운 바탕에 묻히지 않게 밝은 톤으로 */
@media (max-width:999px) and (prefers-color-scheme: dark){
:root:not([data-theme="light"]) .pq-cnt,:root:not([data-theme="light"]) .pf-k,:root:not([data-theme="light"]) .mg-k,:root:not([data-theme="light"]) .proof-pick > svg,:root:not([data-theme="light"]) .ps-box > svg,:root:not([data-theme="light"]) .gj-list svg,:root:not([data-theme="light"]) .wu-nudge > svg{color:#B7B4FF}
:root:not([data-theme="light"]) .chip-ai .k svg.i.sm,:root:not([data-theme="light"]) .cv-group h3 svg.i.sm,:root:not([data-theme="light"]) .pf-cta svg{stroke:#B7B4FF}
:root:not([data-theme="light"]) .chip-ai .k,:root:not([data-theme="light"]) .pq-l,:root:not([data-theme="light"]) .cc-field,:root:not([data-theme="light"]) .cc-teams.on b,:root:not([data-theme="light"]) .myp .ml{background-image:linear-gradient(120deg,#C4B5FD 0%,#A5B4FC 40%,#93C5FD 70%,#67E8F9 100%)}
:root:not([data-theme="light"]) .pq-l .pq-cnt{color:var(--ink-3)}
}
@media (max-width:999px){
:root[data-theme="dark"] .pq-cnt,:root[data-theme="dark"] .pf-k,:root[data-theme="dark"] .mg-k,:root[data-theme="dark"] .proof-pick > svg,:root[data-theme="dark"] .ps-box > svg,:root[data-theme="dark"] .gj-list svg,:root[data-theme="dark"] .wu-nudge > svg{color:#B7B4FF}
:root[data-theme="dark"] .chip-ai .k svg.i.sm,:root[data-theme="dark"] .cv-group h3 svg.i.sm,:root[data-theme="dark"] .pf-cta svg{stroke:#B7B4FF}
:root[data-theme="dark"] .chip-ai .k,:root[data-theme="dark"] .pq-l,:root[data-theme="dark"] .cc-field,:root[data-theme="dark"] .cc-teams.on b,:root[data-theme="dark"] .myp .ml{background-image:linear-gradient(120deg,#C4B5FD 0%,#A5B4FC 40%,#93C5FD 70%,#67E8F9 100%)}
:root[data-theme="dark"] .pq-l .pq-cnt{color:var(--ink-3)}
}

/* ===================== 통화방 (테스트) ===================== */
.nav .beta,.call-beta{font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px;color:#fff;background:var(--ai-grad);letter-spacing:0}
.nav .dot.live,.badge-wrap .dot.live{min-width:9px;width:9px;height:9px;padding:0;border-radius:50%;background:var(--mint);box-shadow:0 0 0 2px var(--bg)}
.nav .dot.live{margin-left:6px}
.call-wrap{padding-bottom:100px}
.call-wrap .sec-h{justify-content:flex-start;align-items:center;gap:8px}
.call-list{display:flex;flex-direction:column;gap:8px}
.cr{border:1px solid var(--line);border-radius:14px;overflow:hidden}
.cr.on{border-color:color-mix(in srgb,var(--mint) 60%,var(--line))}
.cr-h{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;text-align:left}
.cr-h:not(:disabled):hover{background:var(--surface-2)}
.cr-h:disabled{cursor:default;opacity:1}
.cr-ic{flex:none;width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-2)}
.cr.on .cr-ic{background:var(--mint);color:#fff}
.cr-tx{display:flex;flex-direction:column;min-width:0;flex:1}
.cr-tx b{font-size:15px}
.cr-tx small{font-size:12.5px;color:var(--ink-3)}
.cr-n{font-size:12.5px;font-weight:700;color:var(--mint)}
.cr-go{flex:none;font-size:12.5px;font-weight:700;padding:6px 11px;border-radius:9px;background:var(--ink);color:var(--bg)}
.cr.on .cr-go{background:none;color:var(--mint);padding:6px 0}
.cr-who{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 12px 62px}
.cw{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink-2);padding:2px 8px 2px 2px;border-radius:999px;background:var(--surface-2)}
.cw img{width:20px;height:20px;border-radius:50%;object-fit:cover}
.call-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:48px 16px;color:var(--ink-3)}
.call-empty b{color:var(--ink);font-size:16px}
.call-empty .btn{margin-top:8px}
/* 다른 화면에서 통화 중일 때 아래 막대 */
.callbar{position:fixed;z-index:40;left:50%;transform:translateX(-50%);bottom:calc(74px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:4px;
  padding:5px 6px 5px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 28px -10px rgba(0,0,0,.35);max-width:calc(100% - 32px)}
.callbar[hidden]{display:none}
.cb-go{display:flex;align-items:center;gap:7px;min-width:0;padding-right:4px}
.cb-go b{font-size:13.5px;white-space:nowrap}
.cb-go small{font-size:12px;color:var(--ink-3);white-space:nowrap}
.cb-dot{width:8px;height:8px;border-radius:50%;background:var(--mint);flex:none;animation:cbPulse 1.6s ease-in-out infinite}
@keyframes cbPulse{50%{opacity:.35}}
.callbar .iconbtn.off{color:var(--rose)}
.callbar .iconbtn.end{background:var(--rose);color:#fff}
@media (min-width:1000px){.callbar{bottom:24px}}

/* ===================== 휴대폰: 글씨는 그라데이션 대신 단색 =====================
   폰 크롬의 '웹사이트 어둡게 하기'는 그라데이션(배경 이미지)을 어둡게 눌러서
   글자에 입힌 그라데이션(당 · 지금 모집 중 · 탐색 …)이 어둡게 묻힌다. 단색 글씨는 그대로 보인다 */
@media (max-width:999px){
  :root{--logo-tx:#4F5BF5;--acc-tx:#5B4FE8}
  .logo b i,.ws-home b i,.ws-home-m b i,.auth-mobile-mark b i,.auth-mark b i,.find-head h2,.sec-h h2,.chip-ai .k,.pq-l,.cc-field,.cc-teams.on b,.myp .ml,.side .whoami .wa-tx span{background:none!important;-webkit-text-fill-color:currentColor!important;filter:none!important}
  .logo b i,.ws-home b i,.ws-home-m b i,.auth-mobile-mark b i,.auth-mark b i{color:var(--logo-tx)!important}
  .find-head h2,.sec-h h2{color:var(--ink)!important}
  .chip-ai .k,.pq-l,.cc-field,.cc-teams.on b,.myp .ml,.side .whoami .wa-tx span{color:var(--acc-tx)!important}
  .pq-l .pq-cnt{color:var(--ink-3)!important}
  /* 정렬: 상자 없이 글자만 */
  .pq-sort select{height:auto;border:0;background:none;padding:0 2px;color:var(--ink-2)}
}
@media (max-width:999px) and (prefers-color-scheme: dark){:root:not([data-theme="light"]){--logo-tx:#7CCBFF;--acc-tx:#C2BEFF}}
@media (max-width:999px){:root[data-theme="dark"]{--logo-tx:#7CCBFF;--acc-tx:#C2BEFF}}

/* PC: 오른쪽·왼쪽 사이드는 스크롤바를 숨긴다 (페이지 스크롤바와 겹쳐 두 줄로 보이던 문제). 휠·터치 스크롤은 그대로 */
@media (min-width:1000px){
  .rail,.side{overflow-y:auto;scrollbar-width:none;overscroll-behavior:contain}
  .rail::-webkit-scrollbar,.side::-webkit-scrollbar{display:none}
}

/* 회원 안내창 '작당': 상단 로고와 같은 모양 ('당'이 기울임체로 바뀌던 문제) */
.gj-logo b{display:inline-flex;align-items:baseline;font-family:var(--f-body)}
.gj-logo b i{font-style:normal;display:inline-block;padding-right:.04em;
  background:linear-gradient(120deg,#A78BFA 0%,#818CF8 30%,#60A5FA 62%,#22D3EE 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
@media (max-width:999px){.gj-logo b i{background:none!important;-webkit-text-fill-color:currentColor!important;color:var(--logo-tx)!important}}

/* 음성 설정 */
.cset{margin-top:14px;border-radius:14px;padding:4px 14px;background:var(--surface-2);color:var(--ink);text-align:left}
.call-wrap > .cset{margin:0 0 16px}
.cset-row,.cset-thr{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid color-mix(in srgb,currentColor 12%,transparent)}
.cset > :first-child{border-top:0}
.cset-row > span,.cset-thr > span{display:flex;flex-direction:column;flex:1;min-width:0}
.cset b{font-size:14px}
.cset small{font-size:12px;opacity:.7}
.cset-thr{flex-wrap:wrap}
.cset-thr[hidden]{display:none}
.cset-thr > span{flex-basis:100%}
.cset-meter{position:relative;flex-basis:100%;height:8px;border-radius:4px;background:color-mix(in srgb,currentColor 15%,transparent);overflow:hidden}
.cset-meter i{position:absolute;left:0;top:0;bottom:0;width:0;background:#9AA0AE;border-radius:4px;transition:width .05s linear}
.cset-meter i.open{background:#3BD16F}
.cset-meter em{position:absolute;top:-2px;bottom:-2px;left:var(--thr);width:2px;background:#FFC24D}
.cset-thr input[type=range]{flex-basis:100%;accent-color:#5865F2;margin:2px 0 0}
.cset-sw{appearance:none;-webkit-appearance:none;flex:none;width:42px;height:24px;border-radius:12px;background:color-mix(in srgb,currentColor 25%,transparent);position:relative;cursor:pointer;transition:background .15s}
.cset-sw::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s}
.cset-sw:checked{background:#3BA55D}
.cset-sw:checked::after{transform:translateX(18px)}

/* 통화 중 카드 (아바타 + 이름, 말하면 초록 테두리) */
.call-live{border-radius:16px;padding:16px;margin-bottom:18px;border:1px solid transparent;
  background:linear-gradient(color-mix(in srgb,var(--bg) 92%,#8B5CF6),color-mix(in srgb,var(--bg) 92%,#06B6D4)) padding-box,var(--ai-grad) border-box}
.cl-h{display:flex;align-items:center;gap:7px;font-size:15px}
.cl-h span{margin-left:auto;font-size:12.5px;color:var(--ink-3)}
.cl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:14px 8px;margin:16px 0 6px}
.cm{display:flex;align-items:center;gap:8px;min-width:0}
.cm.big{flex-direction:column;gap:6px;text-align:center}
.cm-av{position:relative;flex:none;width:30px;height:30px;border-radius:50%;box-shadow:0 0 0 2px transparent;transition:box-shadow .12s}
.cm.big .cm-av{width:64px;height:64px}
.cm-av img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
.cm.talk .cm-av{box-shadow:0 0 0 3px var(--mint),0 0 14px 2px color-mix(in srgb,var(--mint) 45%,transparent)}
.cm-n{font-size:13px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cm-n small{font-size:10.5px;font-weight:700;color:var(--ink-3)}
.cm-st{display:inline-flex;align-items:center;gap:3px;color:var(--rose);font-size:11.5px}
.cm-st i{font-style:normal;color:var(--ink-3)}
.cl-alone{margin:8px 0 0;text-align:center;font-size:12.5px;color:var(--ink-3)}
.cl-ctl{display:flex;justify-content:center;gap:10px;margin-top:16px}
.cbtn{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:76px;padding:10px 8px 8px;border-radius:14px;background:var(--surface-2);color:var(--ink);font-size:12px;font-weight:600}
.cbtn.off{color:var(--rose);background:color-mix(in srgb,var(--rose) 14%,var(--surface-2))}
.cbtn.end{background:var(--rose);color:#fff}
.cl-ctl .cbtn.on{background:color-mix(in srgb,#6D6AF5 22%,var(--surface-2));color:var(--ink)}
.call-live .cset{margin-top:14px}
.cs-setbtn{margin-left:auto}
.cl-ctl{gap:8px}.cl-ctl .cbtn{min-width:66px}

/* 로고: 글자를 도형(SVG)으로 박아 둔 것 — 글꼴·브라우저와 상관없이 같은 모양. 작=글자색, 당=그라데이션 */
.jd-logo{display:block;height:.84em;width:auto;aspect-ratio:165.1/89.6;overflow:visible}
:root{--lg1:#8B5CF6;--lg2:#6366F1;--lg3:#3B82F6;--lg4:#06B6D4}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--lg1:#A78BFA;--lg2:#818CF8;--lg3:#60A5FA;--lg4:#22D3EE}}
:root[data-theme="dark"]{--lg1:#A78BFA;--lg2:#818CF8;--lg3:#60A5FA;--lg4:#22D3EE}
.lgw{display:inline-flex;align-items:center;line-height:1;color:var(--ink)}
.topbar .logo .lgw .jd-logo{filter:drop-shadow(0 0 8px rgba(129,140,248,.35))}
/* 탐색: 제목 대신 탭과 버튼을 한 줄에 */
.find-top{display:flex;align-items:center;gap:8px;margin:4px 2px 14px}
.find-top .xswitch{margin:0}
.find-top .sp{flex:1}
/* 테마 고르기 메뉴 */
.theme-pop{position:fixed;z-index:200;min-width:190px;padding:5px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:0 12px 32px -10px rgba(0,0,0,.35);display:flex;flex-direction:column}
.theme-pop button{display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:9px;font-size:14px;font-weight:600;color:var(--ink);text-align:left}
.theme-pop button:hover{background:var(--surface-2)}
.theme-pop button span{flex:1}
.theme-pop button b{color:#6D6AF5;font-size:13px}
.theme-pop button[aria-checked="true"]{background:var(--surface-2)}
/* 로고 세로 정렬: 도형 로고는 글자 기준선이 없어서 가운데로 맞춘다 */
.logo{align-items:center}
.logo b.lgw,.ws-home b.lgw,.ws-home-m b.lgw,.auth-mark b.lgw,.auth-mobile-mark b.lgw,.gj-logo b.lgw{display:inline-flex;align-items:center;height:1em;line-height:1}
.jd-logo{height:.9em}
@media (min-width:1000px){.find-top{margin-top:10px}}
/* 음성 설정: 잡음 제거 단계 · 값 표시 */
.cset-ns{flex-wrap:wrap}
.cset-seg{display:flex;gap:3px;padding:3px;border-radius:10px;background:color-mix(in srgb,currentColor 10%,transparent);flex:none}
.cset-seg button{height:30px;padding:0 11px;border-radius:8px;font-size:12.5px;font-weight:700;color:inherit;opacity:.7}
.cset-seg button[aria-pressed="true"]{background:var(--bg);opacity:1;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.cset-seg button[data-cns="ai"][aria-pressed="true"]{background:var(--ai-grad);color:#fff}
.cset-v{font-style:normal;font-weight:700;color:#6D6AF5;margin-left:4px;font-size:12.5px}
.cset-thr input[type=range]{accent-color:#6D6AF5}
@media (max-width:520px){.cset-ns .cset-seg{flex-basis:100%;justify-content:stretch}.cset-ns .cset-seg button{flex:1}}
/* 사람 우클릭 · 길게 누르기: 음량 메뉴 */
.cm[data-csid]{cursor:context-menu;-webkit-touch-callout:none;user-select:none}
.cvol-pop{position:fixed;z-index:210;width:236px;padding:12px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:0 14px 36px -12px rgba(0,0,0,.4);display:flex;flex-direction:column;gap:8px}
.cv-t{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-r{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink-2)}
.cv-r em{font-style:normal;font-weight:700;color:#6D6AF5}
.cv-r input{accent-color:#6D6AF5;width:100%}
.cv-b{display:flex;align-items:center;gap:7px;height:36px;padding:0 10px;border-radius:9px;font-size:13px;font-weight:600;color:var(--ink);background:var(--surface-2)}
.cv-b:hover{filter:brightness(1.05)}
.cv-b.on{color:var(--rose)}
/* 통화방 만들기 · 방 머리 */
.call-wrap .sec-h{flex-wrap:wrap}
.call-acts{margin-left:auto;display:flex;gap:6px}
.call-form{display:flex;flex-direction:column;gap:12px;margin:0 0 16px;padding:16px;border-radius:16px;border:1px solid var(--line);background:var(--surface)}
.call-live .call-form{margin:14px 0 4px;background:var(--bg)}
.cf-t{font-size:15px}
.call-form .field{display:flex;flex-direction:column;gap:6px;margin:0}
.call-form .field > span{font-size:13px;font-weight:700;color:var(--ink-2)}
.call-form .field small{font-weight:500;color:var(--ink-3)}
.call-form input[type=text]{height:42px;padding:0 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:14.5px}
.call-form input[type=text]:focus{outline:none;border-color:#6D6AF5}
.cf-size{display:flex;flex-wrap:wrap;gap:6px}
.cf-size button{height:34px;min-width:52px;padding:0 10px;border-radius:9px;border:1px solid var(--line);font-size:13.5px;font-weight:700;color:var(--ink-2)}
.cf-size button[aria-pressed="true"]{border-color:transparent;background:var(--ai-grad);color:#fff}
.cf-hint{font-size:12px;color:var(--ink-3)}
.cf-btns{display:flex;justify-content:flex-end;gap:8px}
.cl-h .cl-tt{margin-left:0;flex:1;min-width:0;display:flex;flex-direction:column;font-size:15px;color:var(--ink)}
.cl-h .cl-tt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-h .cl-tt small{font-size:12.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-h .cl-n{margin-left:auto;flex:none}
.cl-h .iconbtn{flex:none;color:var(--ink-2)}
.cr-n.full{color:var(--rose)}
.call-sub-h{margin:4px 2px 10px;font-size:14px;font-weight:700;color:var(--ink-2)}
.call-none{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:40px 16px;border:1px dashed var(--line);border-radius:16px;color:var(--ink-3)}
.call-none b{color:var(--ink);font-size:15px}
.call-none span{font-size:13px}
@media (max-width:520px){.call-acts .ca-t{display:none}.call-acts .btn.ghost{padding:0 10px}}
/* 메시지 말풍선: PC·휴대폰 똑같이. 내 말 = 보라→파랑 그라데이션, 상대 = 보랏빛이 살짝 도는 회색 */
.bub.me .bt{background:linear-gradient(135deg,#7B3FF2,#3B82F6);color:#fff}
.bub:not(.me) .bt{background:color-mix(in srgb,var(--surface-2) 82%,#8B5CF6);color:var(--ink)}
.tp-ver{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;padding:8px 10px 4px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink-3)}
.tp-ver button{font-size:12px;font-weight:700;color:#6D6AF5}
/* 프로젝트 탐색 정렬: PC·휴대폰 모두 상자 없이 글자만 (검색창·필터의 AI 테두리와 겹쳐 보이지 않게) */
.pq-sort select{height:auto;border:0;background:none;padding:2px 18px 2px 2px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer;box-shadow:none}
.pq-sort select:focus-visible{outline:2px solid #6D6AF5;outline-offset:2px;border-radius:6px}
/* 안드로이드 앱 안에서는 "앱으로 설치하기" 버튼 숨김 */
.in-app [data-act="install"]{display:none!important}
/* 상태 표시줄(시계·배터리 줄) 칸을 항상 덮기 — 앱·아이폰처럼 화면이 그 밑까지 그려질 때 스크롤하면 내용이 비쳐 보이던 문제 */
body::before{content:"";position:fixed;left:0;right:0;top:0;height:env(safe-area-inset-top,0px);z-index:30;pointer-events:none;background:var(--bg)}
@media (max-width:999px){
  body::before{background:linear-gradient(110deg,rgba(139,92,246,.08),rgba(59,130,246,.05) 50%,rgba(6,182,212,.08)),color-mix(in srgb,var(--bg) 92%,var(--bg))}
}
/* 상대 말풍선도 그라데이션 — 내 것(보라→파랑)보다 더 보라색 쪽으로 */
.bub:not(.me) .bt{background:linear-gradient(135deg,#B15CF8,#7C3AED);color:#fff}
.bub:not(.me) .bt a{color:inherit}
/* 설정 > 화면: 버튼 글자가 칸을 벗어나지 않게 (좁은 화면에서는 줄바꿈) */
.theme-seg{display:flex;width:100%}
.theme-seg button{flex:1;min-width:0;white-space:normal;line-height:1.25;padding:6px 8px;height:auto;min-height:36px;text-align:center}
/* 대회 카드·상세: 접수 시작/마감 표시를 제목과 같은 줄 오른쪽에 */
.cc-tt{display:flex;align-items:flex-start;gap:10px}
.cc-tt h3,.cc-tt h2{flex:1;min-width:0}
.cc-tt .dd{flex:none;margin-top:3px;font-size:12px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.cc-tt .dd.soon,.cc-tt .dd.over{color:var(--rose)}
.cc-tt .dd.later{color:var(--link)}
.cd-head .cc-tt h2{margin-top:6px}
.cd-head .cc-tt .dd{margin-top:12px}
.sheet .cd-head .cc-tt{padding-right:30px}
/* 팀 찾기: 분야 칩 (프로젝트 탐색 + 대회·공모전을 한 화면으로) */
.find-top{flex-wrap:nowrap}
.kchips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;min-width:0;padding:2px 0}
.kchips::-webkit-scrollbar{display:none}
.kchips button{flex:none;height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--line);font-size:13.5px;font-weight:700;color:var(--ink-2);background:var(--bg);white-space:nowrap}
.kchips button[aria-pressed="true"]{border-color:transparent;background:var(--ink);color:var(--bg)}
.find-top > .btn{flex:none}
@media (max-width:520px){.find-top{flex-wrap:wrap}.find-top .kchips{order:2;flex-basis:100%}.find-top .sp{display:none}.find-top > .btn{margin-left:auto}}
/* 모집 글 작성: 분야 고르기 */
.np-kinds{flex-wrap:wrap}
.np-kinds button{flex:1 1 auto;white-space:nowrap}
/* 모집 설명 보기 (지원 칸 위) */
.rn-box{margin:12px 0;border-radius:14px;border:1px solid transparent;background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box}
.rn-box summary{display:flex;align-items:center;gap:8px;padding:13px 14px;font-weight:800;font-size:14.5px;cursor:pointer;list-style:none}
.rn-box summary::-webkit-details-marker{display:none}
.rn-box summary .small{margin-left:auto;font-weight:500}
.rn-box summary svg{color:#6D6AF5}
.rn-box[open] summary{border-bottom:1px solid var(--line)}
.rn-body{padding:12px 14px 14px;font-size:14px;line-height:1.65;white-space:normal}
/* 모집 글 상세: 대회 정보 (글 안에서 그대로) */
.ct-box .ct-h{display:flex;align-items:flex-start;gap:8px;margin-bottom:6px}
.ct-box .ct-h svg{color:#F5A524;flex:none;margin-top:2px}
.ct-box .ct-h span{display:flex;flex-direction:column;min-width:0}
.ct-box .ct-h small{font-size:12.5px;font-weight:500;color:var(--ink-3)}
.ct-info .ci-row:last-child{border-bottom:0}
.ct-inline .ct-new{margin-top:6px;padding:12px;border-radius:12px;background:var(--surface-2)}
/* 안드로이드 앱(WebView)에서 안 되는 기능(파일 저장·인쇄)은 앱에서만 숨기고 안내 */
.app-only{display:none!important}
.in-app .app-only{display:block!important}
.in-app span.app-only{display:inline!important}
.in-app .web-only{display:none!important}
/* 모집 설명 보기: 글 옆 화살표 (닫힘 ⌄ · 열림 ⌃), 자세한 내용 + 모집 설명을 함께 */
.rn-box summary{justify-content:flex-start}
.rn-box summary .rn-arr{width:16px;height:16px;transform:rotate(-90deg);transition:transform .15s;color:var(--ink-3);flex:none}
.rn-box[open] summary .rn-arr{transform:rotate(90deg)}
.rn-body .rn-note{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
/* ===================== AI 도우미 ===================== */
.ai-fab{position:fixed;right:16px;bottom:calc(78px + env(safe-area-inset-bottom,0px));z-index:45;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;
  border:1.5px solid transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--ai-grad) border-box;color:#6D6AF5;
  box-shadow:0 8px 22px -8px rgba(91,79,232,.55)}
.ai-fab svg.i{width:22px;height:22px}
.ai-fab[hidden]{display:none}
body.chat-open .ai-fab,body.admin-mode .ai-fab,body.ai-open .ai-fab{display:none}
body:has(#callbar:not([hidden])) .ai-fab{bottom:calc(132px + env(safe-area-inset-bottom,0px))}
@media (min-width:1000px){.ai-fab{display:none!important}}
.ai-panel{position:fixed;left:0;right:0;bottom:0;z-index:60;height:min(80vh,660px);display:flex;flex-direction:column;
  background:var(--bg);border-radius:20px 20px 0 0;border:1px solid var(--line);box-shadow:0 -14px 40px -12px rgba(0,0,0,.35);padding-bottom:env(safe-area-inset-bottom,0px)}
.ai-panel[hidden]{display:none}
.ai-panel.ai-inline{position:static;height:calc(100vh - 120px);min-height:460px;border-radius:18px;box-shadow:none;margin-top:10px;padding-bottom:0}
@media (min-width:1000px){.ai-panel:not(.ai-inline){left:auto;right:24px;bottom:24px;width:400px;border-radius:18px}}
.ai-h{display:flex;align-items:center;gap:10px;padding:12px 12px 10px 16px;border-bottom:1px solid var(--line)}
.ai-badge{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--ai-grad);color:#fff;flex:none}
.ai-tt{flex:1;min-width:0;display:flex;flex-direction:column}
.ai-tt b{font-size:15px}
.ai-tt small{font-size:12px;color:var(--ink-3)}
.ai-list{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:14px;display:flex;flex-direction:column;gap:8px}
.ai-list .bub{max-width:86%;align-self:flex-start}
.ai-list .bub.me{align-self:flex-end}
.ai-list .bub.ai-bot .bt{background:var(--surface-2);color:var(--ink);border-radius:4px 16px 16px 16px}
.ai-list .bub.ai-err .bt{background:var(--rose-soft);color:var(--ink)}
.ai-list .bt{padding:9px 13px;font-size:14.5px;line-height:1.6;overflow-wrap:anywhere}
.ai-sug{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 4px}
.ai-sug button{padding:7px 12px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink-2);background:var(--bg);text-align:left}
.ai-sug button:hover{border-color:#6D6AF5;color:var(--ink)}
.ai-typing{display:flex;gap:4px;align-items:center;min-height:22px}
.ai-typing i{width:7px;height:7px;border-radius:50%;background:var(--ink-3);animation:aiDot 1s infinite ease-in-out}
.ai-typing i:nth-child(2){animation-delay:.15s}.ai-typing i:nth-child(3){animation-delay:.3s}
@keyframes aiDot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.ai-in{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
.ai-in textarea{flex:1;resize:none;min-height:42px;max-height:120px;padding:10px 14px;border-radius:21px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font:inherit;font-size:14.5px;line-height:1.45}
.ai-in textarea:focus{outline:none;border-color:#6D6AF5}
.ai-foot{margin:0;padding:0 14px 10px;font-size:11.5px;color:var(--ink-3)}
.ai-inline [data-act="ai-close"]{display:none}
.ai-list .bub{margin-top:0!important}.ai-list .bt{white-space:normal}
/* AI 도우미: 말풍선·문단 간격을 넉넉하게 */
.ai-list{gap:16px;padding:18px 16px}
.ai-list .bt{padding:12px 16px;line-height:1.72}
.ai-list .bt p{margin:0}
.ai-list .bt p + p{margin-top:8px}
.ai-list .bub{max-width:82%}
.ai-list .bub.me + .bub.ai-bot,.ai-list .bub.ai-bot + .bub.me{margin-top:6px!important}
.ai-fab{touch-action:manipulation}
/* 버전 표시 (작게) */
.ver-note{font-size:11px;color:var(--ink-3)}
.ver-set{margin:18px 2px 6px;font-size:12px;color:var(--ink-3);text-align:center}

/* 관리자 개요 — 서버 사용량 막대 */
.su .ph{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.su .ph .linkbtn{margin-left:auto}
.su-row{margin:12px 0}
.su-top{display:flex;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:6px;flex-wrap:wrap}
.su-top span{color:var(--ink-2)}
.su-pct.warn{color:color-mix(in srgb,var(--sun) 75%,var(--ink))}
.su-pct.alert{color:var(--rose)}
.su-bar{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.su-bar i{display:block;height:100%;border-radius:inherit;background:var(--ai-grad);transition:width .4s}
.su-bar i.warn{background:var(--sun)}
.su-bar i.alert{background:var(--rose)}
.su-note{font-size:13px;color:var(--ink-2);margin:12px 0 0;line-height:1.55}
.su-note.muted{color:var(--ink-3, var(--ink-2));font-size:12px}
.su-sub{font-size:13px;font-weight:700;color:var(--ink-2);margin:20px 0 0;padding-top:14px;border-top:1px solid var(--line)}
.su-reset{display:block;font-size:12px;color:var(--ink-2);margin-top:5px;opacity:.85}

/* PC 오른쪽 칸(피드 새 글·지금 모집 중·요즘 공부) — 테두리를 따라 빛이 천천히 도는 AI 그라데이션 + 은은하게 숨 쉬는 빛 */
@property --jd-ang{syntax:'<angle>';initial-value:0deg;inherits:false}
.rail .box.jd-glow{position:relative;border:1.5px solid transparent;border-radius:16px;padding:14px 14px 16px;
  background:linear-gradient(var(--bg),var(--bg)) padding-box,
    conic-gradient(from var(--jd-ang),#8B5CF6 0%,#3B82F6 22%,#06B6D4 38%,color-mix(in srgb,#06B6D4 30%,var(--line)) 50%,color-mix(in srgb,#8B5CF6 30%,var(--line)) 75%,#8B5CF6 100%) border-box;
  animation:jd-spin 7s linear infinite}
.rail .box.jd-glow::before{content:"";position:absolute;inset:-1.5px;z-index:-1;border-radius:inherit;
  background:conic-gradient(from var(--jd-ang),#8B5CF6,#3B82F6,#06B6D4,transparent 50%,transparent 75%,#8B5CF6);
  filter:blur(16px);opacity:.35;animation:jd-spin 7s linear infinite,jd-breathe 3.5s ease-in-out infinite alternate}
.rail .box.jd-glow + .box.jd-glow{margin-top:16px}
.rail .box.jd-glow:hover{animation-duration:3.5s}
.rail .box.jd-glow:hover::before{opacity:.45}
@keyframes jd-spin{to{--jd-ang:360deg}}
@keyframes jd-breathe{from{opacity:.25}to{opacity:.55}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .rail .box.jd-glow::before{opacity:.4}}
:root[data-theme="dark"] .rail .box.jd-glow::before{opacity:.4}
@media (prefers-reduced-motion:reduce){.rail .box.jd-glow,.rail .box.jd-glow::before{animation:none}}

/* 오른쪽 칸: 피드 새 글 이름 옆 시간, 추천인 줄 끝 팔로우 버튼 */
.ritem.peek .rt-tx .rt-nm{display:flex;align-items:baseline;gap:6px;min-width:0;-webkit-line-clamp:unset}
.rt-nm b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-nm small{flex:none;font-size:11.5px;font-weight:400;color:var(--ink-3, var(--ink-2));opacity:.85}
.rp-row{display:flex;align-items:center;gap:8px}
.rp-row .rp{flex:1;min-width:0}
.rp-row .rp span{max-width:none}
.rp-row .pfollow{margin-right:0}
.rp-row .pfollow.sent{background:var(--surface-2);color:var(--ink-2)}

/* PC 왼쪽 메뉴 이름 옆 설명 배지 (팀 찾기 '프로젝트 모집', 피드 '일상·공유') — AI 배지보다 은은하게 */
.nav .nav-tag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:6px;letter-spacing:0;white-space:nowrap;
  color:color-mix(in srgb,#6D5AF0 85%,var(--ink));border:1px solid transparent;
  background:linear-gradient(color-mix(in srgb,var(--bg) 88%,#8B5CF6),color-mix(in srgb,var(--bg) 88%,#3B82F6)) padding-box,var(--ai-grad) border-box}
.tabbar .nav-tag{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .nav .nav-tag{color:#C9BCFF}}
:root[data-theme="dark"] .nav .nav-tag{color:#C9BCFF}

/* AI 도우미 대화창(휴대폰 떠 있는 창·PC 도우미 화면) — 연두빛이 테두리를 따라 돌고, 바깥 빛이 숨 쉼
   (창이 z-index를 가져 ::before 흐림 빛이 안으로 번지므로 바깥 빛은 box-shadow로) */
.ai-panel{border:1.5px solid transparent;
  background:linear-gradient(var(--bg),var(--bg)) padding-box,
    conic-gradient(from var(--jd-ang),#84CC16 0%,#D9F99D 18%,#4ADE80 34%,color-mix(in srgb,#84CC16 25%,var(--line)) 50%,color-mix(in srgb,#4ADE80 25%,var(--line)) 75%,#84CC16 100%) border-box;
  animation:jd-spin 7s linear infinite,jd-lime 3.5s ease-in-out infinite alternate}
.ai-panel.ai-inline{animation:jd-spin 7s linear infinite,jd-lime-in 3.5s ease-in-out infinite alternate}
@keyframes jd-lime{from{box-shadow:0 -14px 40px -12px rgba(0,0,0,.35),0 0 14px -2px rgba(132,204,22,.22)}to{box-shadow:0 -14px 40px -12px rgba(0,0,0,.35),0 0 30px 2px rgba(132,204,22,.55)}}
@keyframes jd-lime-in{from{box-shadow:0 0 14px -2px rgba(132,204,22,.18)}to{box-shadow:0 0 28px 0 rgba(132,204,22,.4)}}
@media (prefers-reduced-motion:reduce){.ai-panel,.ai-panel.ai-inline{animation:none}}
/* 도우미 입력칸 — 다른 곳(검색칸 등)과 같은 무지개(AI 그라데이션) 테두리, 누르면 빛이 번짐 */
.ai-in textarea{border:1.5px solid transparent;
  background:linear-gradient(var(--surface-2),var(--surface-2)) padding-box,var(--ai-grad) border-box}
.ai-in textarea:focus{border-color:transparent;background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--ai-grad) border-box;
  box-shadow:0 0 0 4px color-mix(in srgb,#6D6AF5 14%,transparent),0 8px 24px -12px color-mix(in srgb,#6D6AF5 45%,transparent)}
/* 라이트 모드에서 연두 테두리가 흰 배경에 묻히지 않게 조금 진하게 */
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .ai-panel{background:linear-gradient(var(--bg),var(--bg)) padding-box,
  conic-gradient(from var(--jd-ang),#65A30D 0%,#A3E635 18%,#22C55E 34%,color-mix(in srgb,#65A30D 35%,var(--line)) 50%,color-mix(in srgb,#22C55E 35%,var(--line)) 75%,#65A30D 100%) border-box}}
:root[data-theme="light"] .ai-panel{background:linear-gradient(var(--bg),var(--bg)) padding-box,
  conic-gradient(from var(--jd-ang),#65A30D 0%,#A3E635 18%,#22C55E 34%,color-mix(in srgb,#65A30D 35%,var(--line)) 50%,color-mix(in srgb,#22C55E 35%,var(--line)) 75%,#65A30D 100%) border-box}
/* 휴대폰: 도우미 대화창을 화면 전체로 (뒤의 '모집하기' 등이 비치지 않게). 위쪽 상태 표시줄만큼 띄움 */
@media (max-width:999px){
  .ai-panel:not(.ai-inline){top:0;height:auto;border-radius:0;padding-top:env(safe-area-inset-top,0px)}
}

/* 멤버 카드 오른쪽 위 팔로우 버튼 (카드 자체가 버튼이라 겉에 감싸는 칸을 두고 그 위에 띄움) */
.person-wrap{position:relative;min-width:0;display:flex}
.person-wrap .person{flex:1;padding-right:96px}
.person-fol{position:absolute;top:14px;right:14px;z-index:1}
.person-fol .pfollow{margin:0;cursor:pointer}
.pfollow.on{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}
.pfollow.on:hover{color:var(--rose);border-color:color-mix(in srgb,var(--rose) 40%,var(--line))}
button.pfollow.sent{cursor:pointer}

/* 설정 바로가기 — PC: 왼쪽 메뉴 맨 아래 '설정'(화면 테마 바로 위) / 휴대폰: 내 페이지 오른쪽 위 톱니바퀴 */
.side .set-nav{margin-top:auto}
.side .set-nav + .theme-nav{margin-top:0}
.uhead.has-set{position:relative}
.uhead.has-set > div{padding-right:44px}
.uh-set{position:absolute;top:2px;right:0;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2)}
.uh-set .i{width:21px;height:21px}
@media (min-width:1000px){.uh-set{display:none}.uhead.has-set > div{padding-right:0}}
body.guest .set-nav{display:none!important}
.utabs{scroll-margin-top:calc(64px + env(safe-area-inset-top,0px))}

/* 바로가기 모음 (오른쪽 아래, AI 테두리) — 홍레이더·전시관·연구실(운영자만). PC는 '바로가기' 알약, 휴대폰은 AI 도우미 버튼 위 동그란 버튼 */
.jd-links{position:fixed;right:24px;bottom:24px;z-index:44}
.jd-links>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:7px;height:44px;padding:0 17px 0 14px;border-radius:999px;
  border:1.5px solid transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--ai-grad) border-box;color:var(--ink);
  font-size:14px;font-weight:800;letter-spacing:-.02em;box-shadow:0 8px 22px -8px rgba(91,79,232,.55);user-select:none}
.jd-links>summary::-webkit-details-marker{display:none}
.jd-links>summary svg.i{width:18px;height:18px;color:#6D6AF5}
.jd-links[open]>summary{box-shadow:0 8px 26px -6px rgba(91,79,232,.7)}
.jd-links-pop{position:absolute;right:0;bottom:calc(100% + 10px);width:260px;padding:6px;border-radius:16px;display:flex;flex-direction:column;gap:2px;
  border:1.5px solid transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--ai-grad) border-box;box-shadow:0 14px 36px -12px rgba(0,0,0,.4)}
.jd-links-pop a{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:10px;padding:9px 12px;border-radius:11px;text-decoration:none;color:var(--ink)}
.jd-links-pop a:hover{background:var(--surface-2)}
.jd-links-pop a[hidden]{display:none}
.jd-links-pop b{font-size:15px;font-weight:800;letter-spacing:-.03em}
.jd-links-pop b span{background:var(--ai-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.jd-links-pop .lab-st{margin-left:4px;font-size:11px;font-weight:700;font-style:normal;letter-spacing:0;color:var(--ink-3);vertical-align:2px}
.jd-links-pop .lab-st:empty{display:none}
.jd-links-pop .lab-st::before{content:'';display:inline-block;width:7px;height:7px;margin-right:4px;border-radius:50%;background:currentColor;vertical-align:1px}
.jd-links-pop .lab-st.on{color:#16A34A}
.jd-links-pop small{grid-column:1;font-size:12px;color:var(--ink-3)}
.jd-links-pop i{grid-column:2;grid-row:1 / 3;font-style:normal;font-weight:700;color:var(--ink-3)}
body.chat-open .jd-links,body.admin-mode .jd-links,body.ai-open .jd-links{display:none}
@media (max-width:999px){
  .jd-links{right:16px;bottom:calc(138px + env(safe-area-inset-bottom,0px))}
  body.guest .jd-links{bottom:calc(78px + env(safe-area-inset-bottom,0px))}
  body:has(#callbar:not([hidden])) .jd-links{bottom:calc(192px + env(safe-area-inset-bottom,0px))}
  .jd-links>summary{width:48px;height:48px;padding:0;justify-content:center}
  .jd-links>summary svg.i{width:21px;height:21px}
  .jd-links>summary span{display:none}
}
