/* 공모 레이더 — 금융 앱처럼 익숙한 화면: 회색 바탕 + 흰 둥근 묶음 + 한 줄 목록 + 아래에서 올라오는 창.
   (업계 공통 패턴만 쓰고 다른 회사의 로고·색·글꼴·문구는 쓰지 않는다. 색은 우리 초록, 글꼴은 Pretendard) */
@font-face{font-family:"Pretendard";src:url("/fonts/PretendardVariable.woff2") format("woff2-variations");font-weight:45 920;font-display:swap}
:root{
  --brand:#0E7A4F;--brand-d:#0A5E3C;--brand-l:#E6F4EC;--brand-ink:#0E7A4F;--accent:#FFD84D;
  --bg:#F2F4F3;--surface:#FFFFFF;--fill:#F2F4F3;--fill-2:#E9ECEA;--line:#E5E8E6;--text:#191F1C;--sub:#4E5953;--muted:#8B948F;
  --ok:#0E7A4F;--ok-bg:#E6F4EC;--cond:#B26B00;--cond-bg:#FFF3DF;--no:#8B948F;--no-bg:#F2F4F3;--hot:#E5483A;--hot-bg:#FDECEA;
  --r-box:24px;--r:16px;--r-sm:12px;--h:56px;--h-sm:38px;--row:24px;
  /* 글자 크기·줄 높이: 공개된 금융 앱 디자인 시스템 표(TDS Typography)와 같은 값. rem 이라 휴대폰 글자 크기 설정을 따라 커짐 */
  --ff:"Pretendard",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  --t1:700 1.875rem/2.5rem var(--ff);--t2:700 1.625rem/2.1875rem var(--ff);--t3:700 1.375rem/1.9375rem var(--ff);--t4:700 1.25rem/1.8125rem var(--ff);
  --t5:600 1.0625rem/1.59375rem var(--ff);--st10:500 1rem/1.5rem var(--ff);--t6:500 .9375rem/1.40625rem var(--ff);--st11:500 .875rem/1.3125rem var(--ff);--t7:500 .8125rem/1.21875rem var(--ff);--st12:500 .75rem/1.125rem var(--ff);--st13:600 .6875rem/1.03125rem var(--ff);
  --gx:24px;--gy:12px;
}
/* 어두운 화면은 이용자가 고를 때만(data-theme=dark). 기본은 늘 밝은 화면 */
:root[data-theme=dark]{
  --brand-ink:#5FD39C;--brand-l:#15362A;--bg:#101212;--surface:#1B1E1D;--fill:#262A28;--fill-2:#2E3330;--line:#2C312E;--text:#ECEFED;--sub:#AEB6B1;--muted:#7F8883;
  --ok:#5FD39C;--ok-bg:#15362A;--cond:#F0B65C;--cond-bg:#36290F;--no:#7F8883;--no-bg:#262A28;--hot:#FF7B6E;--hot-bg:#3B1C18;color-scheme:dark
}
:root{color-scheme:light}
/* 줄바꿈: 제목은 줄 길이를 고르게, 글은 한 글자만 남는 줄이 없게. .ln 은 정해 둔 한 줄 */
h1,h2,h3,h4,b,strong,.sh-title{text-wrap:balance}
p,small,li,dd,dt,label,.meta{text-wrap:pretty}
.ln{display:block}
.nw{white-space:nowrap}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:500 1rem/1.5rem "Pretendard",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;letter-spacing:-.01em}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{-webkit-tap-highlight-color:transparent}
.wrap{max-width:680px;margin:0 auto;padding:0 20px}
.ico{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.muted{color:var(--muted)}
.offscreen{position:fixed;left:-9999px;top:0;opacity:0}

/* ── 위 막대 ── */
.top{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 94%,transparent)}
.head{display:flex;align-items:center;gap:16px;height:64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex:none}
/* 로고: G + 동그란 레이더(O) + 2B = 「Go to be」 */
.wm{display:inline-flex;align-items:center;gap:1px;font:900 1.75rem/1 var(--ff);letter-spacing:-.04em;color:var(--brand-ink)}
.wm b{font-weight:900}
.wm .radar{width:1.5rem;height:1.5rem;margin:0 1px;border-radius:50%}
.radar{flex:none;display:block}
.radar .sweep{transform-box:view-box;transform-origin:32px 32px;animation:spin 3.2s linear infinite}
.radar .blip{animation:blip 3.2s ease-out infinite;opacity:0}
.radar .b2{animation-delay:1.1s}.radar .b3{animation-delay:2.1s}
.radar .ring{animation:ringpulse 3.2s ease-out infinite;transform-box:view-box;transform-origin:32px 32px}
.actions{display:flex;gap:4px;margin-left:auto}
.icon-btn{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:12px;background:transparent;color:var(--sub);cursor:pointer;transition:background .15s,color .15s}
@media (hover:hover){.icon-btn:hover{background:var(--fill-2);color:var(--text)}}
.icon-btn .ico{width:22px;height:22px}
@media (hover:hover){.icon-btn.upd:hover .ico{transform:rotate(180deg);transition:transform .5s}}
.seg{display:flex;gap:4px}
.seg button{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px;border:0;border-radius:12px;background:transparent;color:var(--muted);font:var(--t6);font-weight:600;cursor:pointer;white-space:nowrap;transition:color .15s,background .15s}
.seg button .ico{display:none}
@media (hover:hover){.seg button:hover{color:var(--text)}}
.seg button[aria-pressed=true]{color:var(--text);background:var(--surface)}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes blip{0%,8%{opacity:0;r:1}14%{opacity:1;r:3.6}60%{opacity:.6}100%{opacity:0;r:2.4}}
@keyframes ringpulse{0%{opacity:.5;transform:scale(.4)}70%{opacity:0;transform:scale(1.1)}100%{opacity:0}}

/* ── 묶음 상자 ── */
.box{background:var(--surface);border-radius:var(--r-box);padding:20px var(--gx);margin:0 0 12px}
.box-h{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;margin:0 0 4px}
.box-h strong{font:var(--t4);letter-spacing:-.02em}
.box-h .count{color:var(--brand-ink);font-weight:800;margin-left:6px}
.box-h.hot .count{color:var(--hot)}
.box-h small{color:var(--muted);font:var(--t7)}

/* ── 실시간 한 줄 ── */
.ticker{position:relative;display:flex;align-items:center;gap:14px;padding:12px 20px 12px 12px;margin-top:8px;overflow:hidden}
.scout{flex:none;display:grid;place-items:center;width:52px;height:44px;border-radius:14px;background:var(--brand-l)}
.turtle{width:46px;height:38px;display:block;overflow:visible}
.turtle .body{transform-box:fill-box;transform-origin:center;animation:bob 1.4s ease-in-out infinite}
.turtle .leg{transform-box:fill-box;transform-origin:50% 20%;animation:paddle .7s ease-in-out infinite alternate}
.turtle .leg2{animation-delay:.35s}
.turtle .glass{transform-box:view-box;transform-origin:40px 14px;animation:scan 2.4s ease-in-out infinite}
.turtle .spark{animation:spark 1.8s ease-out infinite;opacity:0}
.turtle .s2{animation-delay:.6s}.turtle .s3{animation-delay:1.2s}
.ticker-window{flex:1;min-width:0;height:var(--row);overflow:hidden}
.ticker-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ticker-list.roll{transition:transform .6s cubic-bezier(.2,.8,.2,1);transform:translateY(calc(var(--row) * -1))}
.tick{display:flex;align-items:center;gap:12px;height:var(--row);min-width:0;font:var(--t6);color:var(--sub)}
.tick span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tick b{color:var(--brand-ink)}
.tick time{flex:none;color:var(--muted);font:var(--t7);font-variant-numeric:tabular-nums}
.bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:transparent}
.bar i{display:block;height:100%;width:0;background:var(--brand);transition:width .8s ease}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes paddle{from{transform:rotate(-14deg)}to{transform:rotate(14deg)}}
@keyframes scan{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg)}}
@keyframes spark{0%{opacity:0;transform:translateY(2px)}30%{opacity:1}100%{opacity:0;transform:translateY(-6px)}}

/* ── 홈 첫 상자: 나 · 큰 숫자 · 요약 줄 ── */
.me{display:flex;align-items:center;gap:8px;margin:-8px -8px 16px}
.me-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:8px;border:0;border-radius:16px;background:transparent;text-align:left;cursor:pointer;transition:background .15s}
@media (hover:hover){.me-main:hover{background:var(--fill)}}
.avatar{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--brand-l);color:var(--brand-ink);font-size:18px;font-weight:900}
.avatar.on{background:var(--brand);color:var(--accent)}
.me-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.me-txt b{font:var(--t5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-txt small{color:var(--muted);font:var(--t7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chev{width:18px;height:18px;color:var(--muted)}
.pill-btn{flex:none;display:inline-flex;align-items:center;gap:4px;height:36px;padding:0 10px 0 12px;border:0;border-radius:999px;background:var(--fill);color:var(--sub);font:var(--st11);font-weight:600;cursor:pointer}
.pill-btn .ico{width:16px;height:16px}
.pill-btn[data-on=true]{background:var(--brand-l);color:var(--brand-ink)}
.brief-kicker{display:flex;align-items:center;gap:8px;margin:0;color:var(--muted);font:var(--st11)}
.spark-dot{width:8px;height:8px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--brand-l);animation:breathe 2.4s ease-in-out infinite}
.brief.live .spark-dot{background:var(--accent);animation:breathe .9s ease-in-out infinite}
.brief-hi{display:flex;flex-direction:column;margin:8px 0 0;font:var(--t5);letter-spacing:-.02em;color:var(--sub)}
.brief-hi .big{margin-top:2px;font:var(--t1);letter-spacing:-.03em;color:var(--text);font-variant-numeric:tabular-nums}
.brief-hi .big em{font-style:normal;color:var(--brand-ink)}
.onboard{margin:20px 0 0}
.ob-cta{display:flex;align-items:center;gap:12px;width:100%;padding:16px;border:0;border-radius:16px;background:var(--brand-l);text-align:left;cursor:pointer}
.ob-cta>span:first-child{flex:1;display:flex;flex-direction:column;gap:2px}
.ob-cta b{font:var(--t5);color:var(--brand-ink)}
.ob-cta small{font:var(--t7);color:var(--sub)}
@keyframes breathe{0%,100%{box-shadow:0 0 0 3px var(--brand-l)}50%{box-shadow:0 0 0 7px var(--brand-l)}}

/* ── 한 줄 목록(가장 많이 쓰는 모양) ── */
.rows{display:flex;flex-direction:column;margin:4px calc(var(--gx) * -1) 0}
.row{display:flex;align-items:center;gap:16px;width:100%;min-height:64px;padding:var(--gy) var(--gx);border:0;border-radius:0;background:transparent;text-align:left;cursor:pointer;transition:background .12s,transform .12s}
@media (hover:hover){.row:hover{background:var(--fill)}}
.row:active{transform:scale(.985)}
.row:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.row.enter{animation:fadeup .4s cubic-bezier(.2,.8,.2,1) both}
.row-ico{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--fill);color:var(--sub)}
.row-ico .ico{width:22px;height:22px}
.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.row-t{word-break:keep-all;overflow-wrap:anywhere;font:var(--t5);font-weight:500;color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row-s{font:var(--st11);font-weight:400;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-end{flex:none;display:flex;align-items:center;gap:6px;font:var(--t6);font-weight:600;color:var(--sub);font-variant-numeric:tabular-nums}
.row-end b{font:var(--t5);color:var(--text)}
.row-end b.hot{color:var(--hot)}
.row-end .chev{width:16px;height:16px}
.sum-row .row-ico{background:var(--brand-l);color:var(--brand-ink)}
.sum-row.hot .row-ico{background:var(--hot-bg);color:var(--hot)}

/* 공고 한 줄: 왼쪽 마감 네모 */
.dd{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:44px;height:44px;border-radius:14px;background:var(--fill);color:var(--sub);font-variant-numeric:tabular-nums;line-height:1}
.dd small{font:var(--st13);opacity:.8}
.dd b{font:var(--t5);font-weight:700;margin-top:-1px}
.dd.word b{font-size:12px;margin-top:0;text-align:center;line-height:1.2;white-space:pre-line}
.dd.hot{background:var(--hot-bg);color:var(--hot)}
.dd.urgent{background:var(--hot);color:#fff;animation:hotpulse 1.6s ease-in-out infinite}
.dd.closed{background:var(--fill-2);color:var(--muted)}
.fit{font:var(--t7);font-weight:600;white-space:nowrap}
.fit.ok{color:var(--ok)}.fit.check{color:var(--cond)}.fit.no{color:var(--muted)}
.new-dot{display:inline-block;width:6px;height:6px;margin:0 0 3px 6px;border-radius:50%;background:var(--hot);vertical-align:middle}
.star-mark{display:inline-block;width:14px;height:14px;margin:0 0 2px 4px;fill:#F2C230;stroke:#E0A800;vertical-align:middle}
.row.closed .row-t{color:var(--sub)}
.list-box{padding:20px var(--gx) 8px}
.list-box .rows{margin-top:4px}
.more-btn{display:block;width:100%;height:48px;margin:4px 0 12px;border:0;border-radius:14px;background:var(--fill);color:var(--sub);font:var(--t6);font-weight:600;cursor:pointer}
@media (hover:hover){.more-btn:hover{background:var(--fill-2);color:var(--text)}}
.empty{margin:8px 0 16px;padding:24px 8px;color:var(--muted);text-align:center;font:var(--t6)}
.trash-note{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:16px 20px;border-radius:var(--r);background:var(--surface);color:var(--sub);font-size:14px}
@keyframes fadeup{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes hotpulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--hot) 35%,transparent)}50%{box-shadow:0 0 0 6px transparent}}

/* ── 찾기 상자 ── */
.search{padding:20px var(--gx) 16px}
.ask{position:relative;display:flex;align-items:center;gap:10px;height:48px;padding:0 4px 0 14px;border-radius:12px;background:var(--fill);transition:box-shadow .2s,background .2s}
.ask:focus-within{background:var(--surface);box-shadow:0 0 0 2px var(--brand)}
.ask>.ico{width:20px;height:20px;color:var(--muted)}
.ask input{flex:1;min-width:0;height:100%;border:0;background:transparent;font:var(--t5);font-weight:400;outline:none}
.ask input::placeholder{color:var(--muted)}
.ask input::-webkit-search-cancel-button{display:none}
.ask-go{flex:none;width:40px;height:40px;border:0;border-radius:12px;background:var(--brand);color:#fff;display:grid;place-items:center;cursor:pointer}
.ask-go .ico{width:18px;height:18px}
.ask-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 0}
.ask-chips:empty{display:none}
.ask-chips .tag{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 12px;border:0;border-radius:999px;background:var(--brand-l);color:var(--brand-ink);font-size:14px;font-weight:700;cursor:pointer;animation:fadeup .25s ease-out both}
.ask-chips .tag .ico{width:12px;height:12px}
.ask-chips .tag.clear{background:var(--fill);color:var(--sub)}
.ask-understood{font-size:13px;color:var(--muted);margin-right:4px}
.quick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:16px -8px -4px}
.q{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 4px;border:0;border-radius:16px;background:transparent;color:var(--sub);font:var(--t7);font-weight:600;cursor:pointer;transition:background .12s,transform .12s}
@media (hover:hover){.q:hover{background:var(--fill)}}
.q:active{transform:scale(.95)}
.q .qi{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--fill)}
.q .qi .ico{width:22px;height:22px;color:var(--brand-ink)}
.link{display:inline-flex;align-items:center;gap:2px;border:0;background:none;color:var(--muted);font-weight:700;font-size:14px;cursor:pointer;padding:0}
.link .ico{width:16px;height:16px}

/* ── 버튼 ── */
.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--h);padding:0 20px;border:0;border-radius:16px;font:var(--t5);line-height:1;cursor:pointer;white-space:nowrap;transition:background .15s,transform .1s,color .15s}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.5;cursor:wait}
.btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.btn .ico{width:18px;height:18px}
.btn-primary{background:var(--brand);color:#fff}
@media (hover:hover){.btn-primary:hover{background:var(--brand-d)}}
.btn-ghost{background:var(--fill);color:var(--sub)}
@media (hover:hover){.btn-ghost:hover{background:var(--fill-2);color:var(--text)}}
.btn-sm{height:var(--h-sm);padding:0 14px;font:var(--st11);font-weight:600;line-height:1;border-radius:10px}
.btn-quiet{background:transparent;color:var(--muted)}
@media (hover:hover){.btn-quiet:hover{background:var(--fill);color:var(--text)}}
.btn-star[aria-pressed=true]{background:#FFF4CC;color:#8A6500}
.btn-star[aria-pressed=true] .ico{fill:#F2C230;stroke:#C99A00;animation:pop .35s ease-out}
[data-theme=dark] .btn-star[aria-pressed=true]{background:#3A3115;color:#F2CF5B}[data-theme=dark] .dd.urgent{color:#2A0D07}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.25)}100%{transform:scale(1)}}

/* ── 전체 탭 거르기 ── */
.notice{color:var(--muted);font-size:13px;margin:0 4px 8px;min-height:0}
.notice:empty{display:none}
.filters{display:none;gap:8px;margin:0 0 12px;padding:0;overflow-x:auto;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filters.on{display:flex}
.filters>*{flex:none}
.filters select,.filters input[type=search],.num{height:40px;border:0;background:var(--surface);border-radius:999px;padding:0 14px;font-size:14px;font-weight:600;color:var(--sub)}
.filters input[type=search]{width:140px}
.check{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px;border-radius:999px;background:var(--surface);color:var(--sub);font-size:14px;font-weight:600;white-space:nowrap}
.check input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand)}
.num{width:64px;margin-left:4px;padding:0 10px;background:var(--fill)}

.foot{color:var(--muted);font-size:12px;line-height:1.7;padding:24px 4px 48px}
.foot p{margin:0 0 4px}

/* ── 아래에서 올라오는 창(공통) ── */
.ai-dlg,.sheet{border:0;padding:0;background:var(--surface);color:var(--text)}
.ai-dlg{border-radius:28px;width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow-y:auto}
.ai-dlg::backdrop,.sheet::backdrop{background:rgba(10,14,12,.5)}
.ai-dlg[open]{animation:dlgin .25s cubic-bezier(.2,.8,.2,1)}
.ai-box{padding:28px 24px 24px}
.ai-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}
.ai-kicker{display:inline-flex;align-items:center;gap:6px;margin:0;color:var(--brand-ink);font-size:13px;font-weight:800}
.ai-kicker .ico{width:14px;height:14px}
.ai-head h3{margin:6px 0 0;font:var(--t3);letter-spacing:-.03em}
.ai-target{margin:6px 0 0;color:var(--sub);font:var(--t6);font-weight:400}
.ai-x{flex:none;display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:50%;background:var(--fill);color:var(--sub);cursor:pointer;font-size:14px}
.ai-x .ico{width:16px;height:16px}
.ai-sec{display:flex;align-items:baseline;gap:8px;margin:20px 0 8px;font-size:15px}
.ai-sec:first-of-type{margin-top:0}
.ai-sec span{color:var(--muted);font-size:13px}
.ai-grid{display:flex;flex-direction:column;gap:4px;margin:0 -8px}
.ai-opt{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;column-gap:14px;align-items:center;text-align:left;min-height:64px;padding:10px 8px;border:0;border-radius:16px;background:transparent;cursor:pointer;transition:background .12s}
@media (hover:hover){.ai-opt:hover{background:var(--fill)}}
.ai-opt:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.ai-opt:disabled{opacity:.5;cursor:wait}
.ai-opt.work .ai-ico{box-shadow:0 0 0 3px var(--brand-l)}
.ai-ico{grid-row:1/3;width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:18px;color:#fff}
.ai-ico.mini{width:22px;height:22px;border-radius:7px;font-size:11px}
.ai-gpt{background:#10A37F}.ai-claude{background:#D97757}.ai-here{background:var(--brand)}.ai-copy{background:var(--sub)}
.ai-here .ico{width:20px;height:20px;stroke:var(--accent)}
.ai-opt b{font:var(--t5)}
.ai-opt small{color:var(--muted);font:var(--t7);font-weight:400}
.ai-foot{margin:16px 0 0;color:var(--muted);font:var(--t7);font-weight:400}
@keyframes dlgin{from{transform:translateY(16px) scale(.98);opacity:0}to{transform:none;opacity:1}}

/* 지역 */
.locate{width:100%}
.region-msg{min-height:20px;margin:10px 0;color:var(--sub);font-size:14px}
.region-msg:empty{margin:4px 0}
.region-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.region-grid button{height:44px;border:0;border-radius:12px;background:var(--fill);font-weight:700;font-size:15px;cursor:pointer}
@media (hover:hover){.region-grid button:hover{background:var(--fill-2)}}
.region-grid button[aria-pressed=true]{background:var(--brand);color:#fff}
.region-grid .all{grid-column:span 2}

/* 내 조건 카드 */
.card-dlg{width:min(640px,calc(100vw - 32px))}
.drop{position:relative;display:grid;grid-template-columns:44px 1fr;column-gap:14px;align-items:center;padding:18px;border:2px dashed color-mix(in srgb,var(--brand) 40%,var(--line));border-radius:18px;background:var(--brand-l);cursor:pointer}
@media (hover:hover){.drop:hover,.drop.over{border-color:var(--brand)}}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.drop .ico{grid-row:1/3;width:30px;height:30px;color:var(--brand-ink);justify-self:center}
.drop b{font-size:16px}
.drop b small{color:var(--muted);font-weight:600;font-size:13px;margin-left:4px}
.drop span{color:var(--sub);font-size:13px;line-height:1.5}
.scan-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.scan-list:empty{display:none}
.scan-list li{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--sub)}
.scan-list li b{color:var(--text)}
.scan-list li.ok{color:var(--ok)}.scan-list li.err{color:var(--hot)}
.scan-list li.wait::before{content:"";width:14px;height:14px;border-radius:50%;border:2px solid var(--brand);border-right-color:transparent;animation:spin .8s linear infinite}
.card-or{display:flex;align-items:center;gap:12px;margin:16px 0 0;color:var(--muted);font-size:14px}
.paste{margin-top:10px;padding:14px;border-radius:16px;background:var(--fill)}
.paste p{margin:0 0 10px;font-size:14px;color:var(--sub)}
.paste-open{display:flex;gap:8px;margin:0 0 10px;flex-wrap:wrap}
.paste-open .btn{background:var(--surface)}
.paste textarea,.copy-text{width:100%;border:0;border-radius:12px;padding:12px;background:var(--surface);font:13px/1.5 ui-monospace,monospace;resize:vertical;margin-bottom:10px}
.copy-text{background:var(--fill);font:14px/1.6 inherit}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}
.f{display:flex;flex-direction:column;gap:8px;min-width:0}
.f.wide{grid-column:1/-1}
.f>span{font-size:14px;font-weight:700;color:var(--sub)}
.f>span small{font-weight:500;color:var(--muted)}
.f input,.f select{height:48px;border:0;border-radius:12px;padding:0 14px;background:var(--fill);min-width:0;font-size:16px}
.f input:focus,.f select:focus{outline:2px solid var(--brand);outline-offset:0}
.pills{display:flex;flex-wrap:wrap;gap:6px}
.pills button{height:36px;padding:0 14px;border:0;border-radius:999px;background:var(--fill);font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}
.pills button[aria-pressed=true]{background:var(--brand);color:#fff}
.filled{animation:filled 1.8s ease-out}
.pills.filled{border-radius:12px}
@keyframes filled{0%,30%{box-shadow:0 0 0 3px var(--brand),0 0 0 7px var(--brand-l)}100%{box-shadow:0 0 0 0 transparent}}
.docbox{margin-top:20px}
.docbox:empty{display:none}
.docbox h4{margin:0 0 8px;font-size:14px;color:var(--sub)}
.doc-row{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;background:var(--fill);font-size:14px;margin-bottom:6px}
.doc-row .ico{width:16px;height:16px;color:var(--ok)}
.doc-row b{flex:1;min-width:0}
.doc-row .exp{font-size:13px;color:var(--muted);white-space:nowrap}
.doc-row .exp.warn{color:var(--hot);font-weight:800}
.card-acts{position:sticky;bottom:-24px;display:flex;align-items:center;gap:8px;margin:24px -24px -24px;padding:16px 24px 24px;background:var(--surface)}
.card-acts .spacer{flex:1}
.card-acts .btn-primary{flex:1}

/* 토스트 */
.toast{position:fixed;left:50%;bottom:28px;z-index:50;display:flex;align-items:center;gap:16px;min-height:52px;padding:0 8px 0 20px;border-radius:16px;background:#2B302D;color:#fff;font:var(--t6);font-weight:500;transform:translate(-50%,160%);opacity:0;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .3s;pointer-events:none;white-space:nowrap}
.toast.on{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.toast button{height:40px;padding:0 14px;border:0;border-radius:12px;background:transparent;color:var(--accent);font-weight:800;cursor:pointer}
.toast:not(:has(button)){padding-right:20px}

/* ── 상세 시트 ── */
.sheet{position:fixed;inset:0 0 0 auto;margin:0;height:100dvh;max-height:none;width:min(480px,100vw);box-shadow:-24px 0 64px rgba(0,0,0,.16)}
.sheet[open]{animation:slidein .32s cubic-bezier(.2,.8,.2,1)}
.sheet-in{height:100%;overflow-y:auto;padding:20px var(--gx) 0;overscroll-behavior:contain}
.sh-grab{display:none}
.sh-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sh-title{word-break:keep-all;overflow-wrap:anywhere;margin:16px 0 6px;font:var(--t3);letter-spacing:-.03em}
.sh-sum{margin:12px 0 0;font:var(--t6);font-weight:400;color:var(--sub)}
.sh-h{display:flex;align-items:center;gap:8px;margin:28px 0 4px;font:var(--t5);font-weight:700;color:var(--text)}
.sh-h b{color:var(--brand-ink)}
.badges{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 8px;border-radius:8px;font:var(--st12);font-weight:600;white-space:nowrap;background:var(--fill);color:var(--sub)}
.chip .ico{width:12px;height:12px}
.chip.gA{background:var(--ok-bg);color:var(--ok)}
.chip.hot{background:var(--hot-bg);color:var(--hot)}
.chip.urgent{background:var(--hot);color:#fff}
.kvs{margin:0}
.kv{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:12px 0;font:var(--t6)}
.kv dt{color:var(--sub);font-weight:400}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere;text-align:right;font-weight:600}
.caution{display:flex;gap:8px;margin:12px 0 0;padding:14px 16px;border-radius:14px;background:var(--cond-bg);color:var(--cond);font-size:14px;line-height:1.55;font-weight:600}
.caution .ico{width:16px;height:16px;margin-top:3px}
.fitbox{margin:20px 0 0;padding:16px;border-radius:16px;font-size:15px;line-height:1.5}
.fitbox strong{display:block;font-size:16px}
.fit-yes{display:flex;flex-wrap:wrap;gap:6px 12px;margin:8px 0 0;font-size:14px;font-weight:700}
.fit-yes span{display:inline-flex;align-items:center;gap:4px}
.fit-yes .ico{width:14px;height:14px}
.fitbox ul{margin:6px 0 0;padding-left:18px}
.fitbox p{margin:6px 0 0}
.fitbox.ok{background:var(--ok-bg);color:var(--ok)}.fitbox.check{background:var(--cond-bg);color:var(--cond)}.fitbox.no{background:var(--fill);color:var(--sub)}
.nudge{display:flex;align-items:center;gap:10px;width:100%;margin:20px 0 0;padding:16px;border:0;border-radius:16px;background:var(--brand-l);color:var(--brand-ink);font-weight:700;font-size:15px;text-align:left;cursor:pointer}
.nudge .ico:last-child{margin-left:auto}
.prep-bar{height:8px;border-radius:999px;background:var(--fill);overflow:hidden;margin:4px 0 8px}
.prep-bar i{display:block;height:100%;width:0;background:var(--brand);border-radius:999px;transition:width .35s cubic-bezier(.2,.8,.2,1)}
.check-row{display:flex;align-items:center;gap:12px;padding:12px 8px;margin:0 -8px;border-radius:12px;font-size:15px;cursor:pointer}
@media (hover:hover){.check-row:hover{background:var(--fill)}}
.check-row input{width:22px;height:22px;accent-color:var(--brand);flex:none}
.check-row input:checked+span{color:var(--muted);text-decoration:line-through}
.similar .rows{margin:0 calc(var(--gx) * -1)}
.review{margin-top:12px;background:var(--fill);border-radius:14px;padding:16px;white-space:pre-wrap;line-height:1.65;font-size:14px}
.fine{margin:24px 0 0;color:var(--muted);font-size:13px}
.sh-acts{position:sticky;bottom:0;display:grid;grid-template-columns:auto auto 1fr;gap:8px;margin:16px calc(var(--gx) * -1) 0;padding:12px var(--gx) calc(16px + env(safe-area-inset-bottom));background:var(--surface)}
.sh-acts .btn{height:56px;border-radius:16px;font:var(--t5)}
.sh-hide{display:block;margin:8px auto 0;border:0;background:none;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
@keyframes slidein{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes slideup{from{transform:translateY(80px);opacity:.4}to{transform:none;opacity:1}}

/* ── 폰: 아래 탭바 · 아래에서 올라오는 창 ── */
@media (max-width:720px){
  :root{--gx:20px}
  .wrap{padding:0 16px}
  .head{height:56px;padding:0 var(--gx)}
  .seg{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}
  .seg button{flex-direction:column;justify-content:center;gap:4px;height:52px;padding:0;font:var(--st13);border-radius:12px}
  .seg button .ico{display:block;width:24px;height:24px}
  .seg button[aria-pressed=true]{background:transparent;color:var(--text)}
  body{padding-bottom:84px}
  .toast{bottom:88px}
  .box{border-radius:22px}
  .quick{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ai-dlg,.card-dlg{position:fixed;inset:auto 0 0 0;margin:0;width:100vw;max-width:100vw;max-height:92dvh;border-radius:28px 28px 0 0}
  .ai-dlg[open]{animation:slideup .32s cubic-bezier(.2,.8,.2,1)}
  .ai-box{padding:24px 20px calc(20px + env(safe-area-inset-bottom))}
  .card-acts{margin:24px -20px calc(-20px - env(safe-area-inset-bottom));padding:16px 20px calc(20px + env(safe-area-inset-bottom))}
  .sheet{inset:auto 0 0 0;width:100vw;max-width:100vw;height:92dvh;border-radius:28px 28px 0 0;box-shadow:0 -16px 48px rgba(0,0,0,.2)}
  .sheet[open]{animation:slideup .32s cubic-bezier(.2,.8,.2,1)}
  .sheet-in{padding:8px 20px 0}
  .sh-grab{display:block;width:40px;height:5px;border-radius:999px;background:var(--fill-2);margin:0 auto 12px}
  .sh-acts{margin:16px -20px 0;padding-left:20px;padding-right:20px}
  .region-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .fields{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* 인터넷판: 서버가 필요한 단추·돈 드는 기능 숨김 */
.static #digest,.static #web,.static #upd,.static #drop,.static #scanList,.static .ai-opt[data-ai="here"],.static .card-or>span{display:none!important}
.static #scanList + .ai-foot{display:none!important}

/* ── PC: 왼쪽은 나(브리핑·조건·찾기)를 고정, 오른쪽은 공고 목록. 상세는 오른쪽에서 나오는 창 ── */
@media (min-width:1080px){
  .wrap{max-width:1240px;padding:0 32px}
  .head{height:72px}
  .seg{margin:0 auto;padding:4px;border-radius:16px;background:var(--fill-2)}
  .seg button{height:40px;padding:0 18px}
  .seg button .ico{display:block;width:18px;height:18px}
  .cols{display:grid;grid-template-columns:400px minmax(0,1fr);gap:24px;align-items:start}
  .col-side{position:sticky;top:88px;max-height:calc(100dvh - 104px);overflow-y:auto;scrollbar-width:none;padding-bottom:16px}
  .col-side::-webkit-scrollbar{display:none}
  .col-main{min-width:0}
  .foot{max-width:none;padding-left:424px}
  .sheet{width:min(560px,100vw)}
}
@media (min-width:1440px){
  .wrap{max-width:1360px}
  .cols{grid-template-columns:420px minmax(0,1fr)}
  .foot{padding-left:444px}
}

/* ── 처음 안내(3장): 옆으로 넘기기, 점은 손가락 따라 늘어나고, 그림은 글보다 천천히 밀린다 ── */
.intro{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:var(--bg);color:var(--text);overflow:hidden}
.intro[open]{display:flex;flex-direction:column;animation:fadein .3s ease}
.intro::backdrop{background:var(--bg)}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.intro-track{flex:1;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior:contain}
.intro-track::-webkit-scrollbar{display:none}
.intro-page{flex:0 0 100%;scroll-snap-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:calc(24px + env(safe-area-inset-top)) 32px 8px;text-align:center}
.intro-art{height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;will-change:transform,opacity}
.intro-t{margin:0;font:700 2rem/2.625rem var(--ff);letter-spacing:-.03em}
.intro-b{margin:0;font:var(--t4);font-weight:500;color:var(--sub)}
.intro-bottom{display:flex;flex-direction:column;gap:12px;width:100%;max-width:480px;margin:0 auto;padding:8px 24px calc(16px + env(safe-area-inset-bottom))}
.intro-dots{display:flex;justify-content:center;gap:6px;margin-bottom:4px}
.intro-dots i{display:block;height:8px;width:8px;border-radius:4px;background:var(--line)}
.intro-go{width:100%}
.intro-skip{min-height:44px;border:0;background:transparent;color:var(--muted);font:var(--t6);font-weight:600;cursor:pointer}
.big-radar{width:220px;height:220px;cursor:pointer;border-radius:50%;transition:transform .2s}
.big-radar:active{transform:scale(.96)}
.br-sweep{transform-origin:100px 100px;animation:spin 6s linear infinite}
.br-blip{opacity:0;transform-box:fill-box;transform-origin:center}
.intro .scan .br-sweep{animation-duration:1.1s}
.intro .scan .br-blip{animation:blip .5s cubic-bezier(.2,1.6,.4,1) forwards}
.intro .scan .br-blip:nth-of-type(2){animation-delay:.25s}.intro .scan .br-blip:nth-of-type(3){animation-delay:.5s}.intro .scan .br-blip:nth-of-type(4){animation-delay:.75s}.intro .scan .br-blip:nth-of-type(5){animation-delay:1s}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes blip{0%{opacity:0;transform:scale(0)}100%{opacity:1;transform:scale(1)}}
.intro-count{margin:0;min-height:2.5rem;font:var(--t1);letter-spacing:-.03em;color:var(--brand);font-variant-numeric:tabular-nums}
.mock-fit{position:relative;width:260px;padding:20px;border-radius:24px;background:var(--surface);text-align:left;box-shadow:0 12px 32px rgba(14,122,79,.12)}
.mf-h{margin:0 0 12px;font:var(--st11);font-weight:600;color:var(--muted)}
.mf-row{display:flex;align-items:center;gap:10px;margin:0;padding:8px 0;font:var(--t5);font-weight:600;opacity:0;transform:translateY(8px)}
.mf-row b{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--ok-bg);color:var(--ok);font-size:14px}
.mf-stamp{position:absolute;right:16px;bottom:14px;margin:0;padding:4px 12px;border:3px solid var(--brand);border-radius:12px;color:var(--brand);font:800 1.375rem/1.6 var(--ff);transform:rotate(-12deg) scale(2);opacity:0}
.intro .on .mf-row{animation:rowin .4s ease forwards}
.intro .on .mf-row:nth-of-type(3){animation-delay:.35s}.intro .on .mf-row:nth-of-type(4){animation-delay:.7s}
.intro .on .mf-stamp{animation:stamp .35s cubic-bezier(.2,1.4,.4,1) 1.2s forwards}
@keyframes rowin{to{opacity:1;transform:none}}
@keyframes stamp{to{opacity:1;transform:rotate(-12deg) scale(1)}}
.float-chips{position:relative;width:300px;height:260px}
.fc{position:absolute;padding:10px 16px;border-radius:999px;background:var(--surface);font:var(--t6);font-weight:700;white-space:nowrap;box-shadow:0 8px 24px rgba(0,0,0,.08);animation:bob 3.2s ease-in-out infinite}
.fc.c1{left:8px;top:18px;color:var(--brand)}
.fc.c2{right:6px;top:52px;animation-delay:-.8s}
.fc.c3{left:34px;top:112px;background:var(--brand);color:#fff;font:var(--t5);font-weight:700;animation-delay:-1.6s}
.fc.c4{right:18px;top:170px;animation-delay:-2.2s}
.fc.c5{left:6px;top:214px;background:var(--accent);color:#3A2C00;animation-delay:-.4s}
@keyframes bob{50%{transform:translateY(-8px)}}
.link-btn{padding:0;border:0;background:none;color:inherit;font:inherit;text-decoration:underline;cursor:pointer}
@media (min-width:1080px){.intro{inset:0;margin:auto;width:480px;height:min(820px,92dvh);border-radius:32px;box-shadow:0 32px 80px rgba(0,0,0,.24)}.intro::backdrop{background:rgba(10,14,12,.55)}.intro-page{padding-top:40px}}
@media (max-height:700px){.intro-art{height:220px}.big-radar{width:170px;height:170px}.intro-t{font:var(--t2)}}
@media (prefers-reduced-motion:reduce){.fc,.br-sweep{animation:none}.mf-row,.mf-stamp,.br-blip{opacity:1;transform:none}}

@media (max-width:390px){.me-main .chev{display:none}.pill-btn .ico:last-child{display:none}}
.row:active{background:var(--fill)}
