/* 매물마켓 디자인 시스템에서 이 목업이 쓰는 원시 요소만 옮겨 온 것.
 * 출처: maemul-client/styles/design.css, overrides.css, components/ds/*.tsx
 * 값은 손으로 바꾸지 않는다. 바꿀 일이 생기면 매물마켓 쪽에서 가져온다.
 * components/ds의 Button, BottomSheet, TabBar는 인라인 스타일이라 같은 값을 클래스로 옮겼다. */

body{margin:0;font-family:'Pretendard Variable',var(--font-body);letter-spacing:-0.02em;color:var(--text-strong);background:var(--surface-page)}
:root{--font-body:'Pretendard Variable','Pretendard',-apple-system,sans-serif}
a{color:var(--primary);text-decoration:none;font-weight:600}a:hover{color:var(--primary-hover)}
button,input,select,textarea{font:inherit;letter-spacing:inherit;color:inherit}
button{appearance:none;background:none;border:none;border-radius:0;padding:0;margin:0;text-align:inherit}
button:not(:disabled){cursor:pointer}
input::placeholder,textarea::placeholder{color:var(--text-disabled)}
.ms{font-family:var(--font-icon);font-weight:normal;line-height:1;display:inline-grid;place-items:center;height:1.25em;vertical-align:middle}

/* 헤더 */
.hd{position:sticky;top:0;z-index:30;backdrop-filter:saturate(180%) blur(12px);background:rgba(255,255,255,.86);border-bottom:1px solid var(--border-subtle)}
.hd-in{height:56px;display:flex;align-items:center;gap:6px;padding:0 20px}
.backbtn{width:38px;height:38px;margin-left:-10px;border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--grey-800)}
.backbtn:hover{background:var(--grey-50)}
.hdtitle{font-size:15px;font-weight:600}
.iconbtn{position:relative;width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--grey-700)}
.iconbtn:hover{background:var(--grey-50)}

/* 카드, 안내 */
.card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:18px;padding:22px 20px;box-shadow:0 1px 3px rgba(25,31,40,.04)}
.vstack{display:flex;flex-direction:column;gap:16px}
.hrow{display:flex;align-items:center;gap:8px}
.h1{font-size:22px;font-weight:700;line-height:1.4}
.sub{font-size:14px;color:var(--text-muted);margin-top:6px;line-height:1.6}
.ctitle{font-size:15px;font-weight:600;margin-bottom:12px}
.note{font-size:12.5px;color:var(--text-muted);line-height:1.65}
.notice{background:var(--primary-bg);border-radius:14px;padding:13px 15px;font-size:13px;color:var(--blue-600);line-height:1.6;font-weight:500}
.notice b{font-weight:700}
.notice.ico{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:9px;align-items:center;text-align:left}
.notice.ico>.ms{align-self:center;display:grid;place-items:center;line-height:1;width:1.25em;height:1.25em}
.kv{display:flex;justify-content:space-between;gap:12px;padding:14px 0;font-size:14px;align-items:center;position:relative}
.kv:not(:last-child)::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--grey-100)}
.kv .k{color:var(--text-muted);font-weight:500;flex-shrink:0}
.kv .v{font-weight:500;color:var(--grey-800);text-align:right;line-height:1.5}
.lockv{display:inline-flex;align-items:center;gap:4px;color:var(--text-disabled);font-weight:600}

/* 태그 */
.tg{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:22px;line-height:1;font-size:11.5px;font-weight:600;padding:0 11px;border-radius:100px;background:var(--grey-100);color:var(--grey-700);flex:none;white-space:nowrap;vertical-align:middle}
.tg>.ms{display:grid;place-items:center;width:1.25em;height:1.25em;margin:0!important;flex:none;overflow:visible}
.tg.b{background:var(--primary-bg);color:var(--primary)}
.tg.w{background:#FFF4E0;color:#B26A00}
.tg.d{background:var(--grey-800);color:#fff}
.tg.g{background:#E6F7EE;color:#0F7B4F}
.tg.r{background:#FFEBEC;color:#D0323E}
.tg.sq{border-radius:5px;height:24px;min-height:24px;padding:0 8px;font-size:12.5px;gap:3px}
.tg.sq>.ms{width:1.25em;height:1.25em;font-size:13px}

/* 고르는 칩 */
.picks{display:flex;gap:8px;flex-wrap:wrap}
.pk{height:40px;padding:0 15px;border-radius:100px;background:var(--surface-card);border:1.5px solid var(--border);font-size:13px;font-weight:500;color:var(--text-body);display:inline-flex;align-items:center;justify-content:center;gap:5px;line-height:1;cursor:pointer;transition:.12s;white-space:nowrap}
.pk.on{background:var(--primary-bg);border-color:var(--primary);color:var(--primary)}
.pk.sm{height:36px;padding:0 13px;font-size:12.5px;flex-shrink:0}
.pk .ms{line-height:1;margin:0 !important;flex-shrink:0}
.chiprow{display:flex;gap:7px;overflow-x:auto;padding:2px 0;margin:12px 0 8px;scrollbar-width:none;align-items:center;min-height:40px}
.chiprow::-webkit-scrollbar{display:none}
.rchip{display:inline-flex;align-items:center;gap:6px;padding:11px 15px;border-radius:100px;background:var(--grey-100);color:var(--grey-700);font-size:13.5px;font-weight:600;cursor:pointer;border:1.5px solid transparent;min-height:44px;box-sizing:border-box}
.rchip:hover{background:var(--grey-200)}
.rchip.on{background:var(--primary-bg);color:var(--primary);border-color:var(--primary)}
.seg2{display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--grey-100)}
.seg2i{flex:1 1 0;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--text-muted);cursor:pointer;box-sizing:border-box}
.seg2i:hover{color:var(--text-strong)}
.seg2i.on{background:#fff;color:var(--primary);box-shadow:0 1px 3px rgba(25,31,40,.08)}
.selrow{display:flex;align-items:center;gap:13px;border:1.5px solid var(--border);border-radius:16px;padding:16px;cursor:pointer;background:#fff;transition:.15s}
.selrow.on{border-color:var(--primary);background:var(--primary-bg)}
.selrow .tt{flex:1;min-width:0}
.selrow .tt b{font-size:14px;font-weight:600}
.selrow .tt small{display:block;font-size:12px;color:var(--text-muted);margin-top:3px;line-height:1.5}
.selrow .rd{width:22px;height:22px;border-radius:50%;border:2px solid var(--grey-300);flex-shrink:0}
.selrow.on .rd{border-color:var(--primary);background:radial-gradient(circle,var(--primary) 42%,#fff 46%)}

/* 입력 */
.field{margin-bottom:24px}
.field label{display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--text-body);margin-bottom:9px;line-height:1.4}
.req{color:var(--primary)}
.inp{display:flex;align-items:center;gap:8px;min-height:50px;border:1.5px solid var(--border);border-radius:14px;background:#fff;padding:0 15px;font-size:15px;transition:border-color .15s}
.inp:focus-within{border-color:var(--primary)}
.inp input,.inp select{border:none;outline:none;flex:1;font:inherit;letter-spacing:inherit;background:transparent;min-width:0;color:var(--text-strong)}
.inp .unit{color:var(--text-muted);font-size:13px;flex-shrink:0}
.searchbar{display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid var(--border);border-radius:14px;height:48px;padding:0 15px}
.searchbar:focus-within{border-color:var(--primary)}
.searchbar input{border:none;outline:none;flex:1;font:inherit;letter-spacing:inherit;font-size:14.5px;background:none;min-width:0}
.searchbar.filled{background:var(--grey-50);border-color:transparent}
.searchbar.filled:focus-within{border-color:var(--primary);background:#fff}
.upbox{border:1.5px dashed var(--grey-300);border-radius:14px;padding:16px;display:flex;align-items:center;gap:12px;cursor:pointer;background:var(--surface-sunken);transition:.15s}
.upbox.done{border-style:solid;border-color:var(--primary);background:var(--primary-bg)}
.upbox .ut b{font-size:14px;font-weight:600;display:block}
.upbox .ut small{font-size:12px;color:var(--text-muted)}
.sw{width:50px;height:30px;border-radius:100px;background:var(--grey-200);position:relative;cursor:pointer;transition:.2s;flex-shrink:0}
.sw.on{background:var(--primary)}
.sw i{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(25,31,40,.2)}
.sw.on i{left:23px}

/* 버튼 (components/ds/button.tsx) */
.btn{font-family:inherit;font-weight:600;letter-spacing:-0.02em;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;line-height:1;white-space:nowrap;transition:background .15s;font-size:16px;height:48px;padding:0 20px;border-radius:14px}
.btn.sm{font-size:14px;height:40px;padding:0 16px;border-radius:12px}
.btn.lg{font-size:15px;height:48px;padding:0 24px;border-radius:14px}
.btn.primary{background:var(--primary);color:#fff;border:none;box-shadow:var(--shadow-primary-btn)}
.btn.primary:hover{background:var(--primary-hover)}
.btn.secondary{background:var(--primary-bg);color:var(--primary);border:none}
.btn.outline{background:var(--surface-card);color:var(--grey-800);border:1.5px solid var(--border)}
.btn:disabled{background:var(--grey-200);color:var(--grey-500);border:1px solid var(--grey-300);box-shadow:none;cursor:not-allowed}
.btn .ms{font-size:1.2em;font-variation-settings:'FILL' 1;width:1em;height:1em}
.btn.full{width:100%}
.linkbtn{background:none;border:none;padding:0;color:var(--primary);font-weight:600;cursor:pointer}

/* 아래 고정 버튼 */
.dock{padding:14px 20px 16px;background:linear-gradient(180deg,rgba(242,244,246,0),var(--surface-page) 32%)}
.dock-in{display:flex;flex-direction:column;gap:8px}
.dock .hint{text-align:center;font-size:12px;color:var(--text-muted)}

/* 탭바 (components/ds/tab-bar.tsx) */
.tabbar{display:flex;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-top:1px solid var(--border-subtle);padding:10px 0 14px;box-shadow:0 -4px 20px rgba(0,0,0,.05)}
.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px}
.tabbar .ms{font-size:24px;color:var(--text-disabled);font-variation-settings:'FILL' 0}
.tabbar small{font-size:10px;font-weight:700;color:var(--text-disabled)}
.tabbar .on .ms{color:var(--primary);font-variation-settings:'FILL' 1}
.tabbar .on small{color:var(--primary)}

/* 바텀 시트 (components/ds/bottom-sheet.tsx) */
.sheetdim{background:var(--dim);z-index:100;display:flex;align-items:flex-end;justify-content:center}
.sheetpanel{width:100%;max-width:440px;background:#fff;border-radius:24px 24px 0 0;padding:12px 24px 32px;box-shadow:0 -20px 60px rgba(0,0,0,.3);letter-spacing:-0.02em;animation:shUp .3s var(--ease-sheet)}
.sheetgrab{padding:2px 0 14px}
.sheetgrab i{display:block;width:40px;height:4px;border-radius:100px;background:var(--border);margin:0 auto}
.sheettitle{font-weight:800;font-size:20px;margin-bottom:6px}
.sheetsub{color:var(--text-muted);font-size:14px;font-weight:500;margin-bottom:22px;line-height:1.55}
@keyframes shUp{from{transform:translateY(100%)}to{transform:none}}

/* 지도 핀, 칩 */
.mapchips{position:absolute;left:14px;top:14px;right:14px;display:flex;gap:7px;z-index:4;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.mapchips::-webkit-scrollbar{display:none}
.mapchips>*{flex:none}
.mchip{background:rgba(255,255,255,.97);border-radius:100px;height:34px;padding:0 13px;font-size:12.5px;font-weight:600;box-shadow:0 4px 14px rgba(25,31,40,.12);cursor:pointer;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.mchip b{color:var(--primary)}
.mchip.on{background:var(--primary);color:#fff}
.mchip.on b{color:#fff}
.pinin{position:absolute;transform:translate(-50%,calc(-100% - 7px));cursor:pointer;display:block;width:max-content}
.pinin .lab{position:relative;background:#fff;color:var(--text-strong);border:1.5px solid var(--grey-300);font-size:13px;font-weight:700;letter-spacing:-.01em;padding:0 11px;height:30px;border-radius:8px;box-shadow:0 3px 10px rgba(25,31,40,.22);display:inline-flex;align-items:center;justify-content:center;gap:3px;line-height:1}
.pinin .lab::after{content:'';position:absolute;left:50%;bottom:-6px;transform:translateX(-50%) rotate(45deg);width:9px;height:9px;background:#fff;border:1.5px solid var(--grey-300);border-top:0;border-left:0;border-bottom-right-radius:2px;box-shadow:2px 2px 6px rgba(25,31,40,.10)}
.pinin.on .lab,.pinin:hover .lab{background:var(--text-strong);color:#fff;border-color:var(--text-strong);box-shadow:0 4px 14px rgba(25,31,40,.28)}
.pinin.on .lab::after,.pinin:hover .lab::after{background:var(--text-strong);border-color:var(--text-strong)}
.pinin.cl{transform:translate(-50%,-50%)}
.pinin.cl .lab{width:44px;height:44px;padding:0;border-radius:100px;font-size:15px;background:var(--primary);border-color:#fff;color:#fff;box-shadow:0 3px 12px rgba(49,130,246,.32)}
.pinin.cl .lab::after{display:none}

/* 목록 카드 */
.fcard{background:#fff;border:none;border-radius:16px;padding:16px;box-shadow:none;cursor:pointer;transition:background .15s ease}
.fcard:hover .fname{color:var(--primary)}

.toastbox{background:var(--black);color:#fff;font-size:13px;font-weight:600;padding:12px 18px;border-radius:100px;box-shadow:0 8px 24px rgba(25,31,40,.25);text-align:center}
