/* 펜싱 장비 나눔터 · 공통 스타일
   Layout: 피스트(경기대) 띠의 어두운 첫 화면 + 점수판 램프 색(초록=나눔, 빨강=필요)으로 구분한 카드 */
:root{
  --bg:#f1f4f6; --surface:#ffffff; --fg:#16202a; --muted:#56636f; --line:#d5dce3; --soft:#e8edf1;
  --piste:#1f2c3a; --piste-2:#2a3a4b; --piste-fg:#eef2f6; --piste-muted:#a6b4c2;
  --give:#13824a; --give-soft:#e0f2e7; --need:#c42f2b; --need-soft:#fbe4e2;
  --accent:#2c5a86; --warn:#946000; --warn-soft:#fff1d4;
  --suit:#f4f7fa; --suit-shade:#c3cfdb; --mesh:#121b24; --blade:#dbe3ea; --shoe:#8d9eae; --strip:#3a4c5f; --give-hi:#5fd393; --need-hi:#ff8a80;
  --display:"Black Han Sans","Noto Sans KR",system-ui,sans-serif;
  --body:"Noto Sans KR",system-ui,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --r:10px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#10151b; --surface:#19212a; --fg:#e7edf2; --muted:#9aa8b5; --line:#2b3642; --soft:#222c37;
  --piste:#0a1016; --piste-2:#16212c; --piste-fg:#eef2f6; --piste-muted:#9aa9b8;
  --give:#40bf78; --give-soft:#16301f; --need:#ff6c64; --need-soft:#3a1c1b;
  --accent:#86b5e2; --warn:#f0b54a; --warn-soft:#382a10; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#10151b; --surface:#19212a; --fg:#e7edf2; --muted:#9aa8b5; --line:#2b3642; --soft:#222c37;
  --piste:#0a1016; --piste-2:#16212c; --piste-fg:#eef2f6; --piste-muted:#9aa9b8;
  --give:#40bf78; --give-soft:#16301f; --need:#ff6c64; --need-soft:#3a1c1b;
  --accent:#86b5e2; --warn:#f0b54a; --warn-soft:#382a10; color-scheme:dark}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:15px;line-height:1.6}
.wrap{max-width:1080px;margin:0 auto;padding-inline:16px}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
h1,h2,h3{text-wrap:balance}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* 버튼 */
.btn{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:8px;padding:9px 14px;cursor:pointer;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;gap:8px;justify-content:center}
.btn:hover{border-color:var(--muted)}
.btn.give{background:var(--give);border-color:var(--give);color:#fff}
.btn.need{background:var(--need);border-color:var(--need);color:#fff}
.btn.dark{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.btn.ghost{background:transparent}
.btn.small{padding:4px 10px;font-size:13px}
.btn.big{padding:12px 18px;font-size:16px;font-weight:700}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn.danger{color:var(--need);border-color:color-mix(in srgb,var(--need) 45%,var(--line))}
.lamp{width:10px;height:10px;border-radius:50%;background:currentColor;flex:none}
.btn.big .lamp{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.28)}

/* 첫 화면: 피스트 */
.top{background:var(--piste);color:var(--piste-fg);position:relative;overflow:hidden}
.top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:6px;
  background:linear-gradient(90deg,var(--need) 0 12%,var(--piste-2) 12% 49.7%,#fff 49.7% 50.3%,var(--piste-2) 50.3% 88%,var(--give) 88% 100%)}
.nav{display:flex;align-items:center;gap:14px;padding-block:14px;flex-wrap:wrap}
.nav .logo{font-family:var(--display);font-size:19px;color:var(--piste-fg);text-decoration:none;display:inline-flex;align-items:center;gap:8px;margin-right:auto}
.nav .logo .dots{display:inline-flex;gap:4px}
.nav .logo .dots i{width:8px;height:8px;border-radius:50%;display:block}
.nav a.l{color:var(--piste-muted);text-decoration:none;font-size:14px}
.nav a.l:hover{color:var(--piste-fg)}
@media (max-width:560px){.nav{gap:6px 16px}.nav .logo{flex-basis:100%}.nav a.l{font-size:13px}}

.hero{display:grid;grid-template-columns:1fr;gap:20px;padding-block:18px 40px;align-items:center}
@media (min-width:860px){.hero{grid-template-columns:1.05fr 1fr;gap:36px;padding-block:28px 56px}}
.hero>*{min-width:0}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--piste-muted);margin:0 0 10px;text-transform:uppercase}
.hero h1{font-family:var(--display);font-weight:400;font-size:clamp(32px,6.4vw,54px);line-height:1.12;margin:0 0 16px;letter-spacing:-.005em}
.hero h1 .g{color:var(--give-hi)} .hero h1 .n{color:var(--need-hi)}
.hero .lead{color:color-mix(in srgb,var(--piste-fg) 82%,transparent);margin:0 0 22px;max-width:56ch;font-size:16px}
.cta{display:flex;gap:10px;flex-wrap:wrap}
.trust{display:flex;gap:6px 16px;flex-wrap:wrap;margin:18px 0 0;padding:0;list-style:none;color:var(--piste-muted);font-size:13px}
.trust li{display:flex;align-items:center;gap:6px}
.trust li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--piste-muted)}

.art{margin:0;position:relative;border-radius:14px;overflow:hidden;background:var(--piste-2);aspect-ratio:480/300;max-width:100%}
.art svg{display:block;width:100%;height:100%}
.art .photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 40%;z-index:1}
.art figcaption{position:absolute;left:12px;bottom:10px;z-index:2;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--piste-muted)}
.art .photo ~ figcaption{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.lit{animation:glow 2.6s ease-in-out infinite}
@keyframes glow{0%,100%{opacity:1}50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.lit{animation:none}}

/* 섹션 */
section.blk{padding-block:44px 8px}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.sec-head h2{font-family:var(--display);font-weight:400;font-size:clamp(24px,4vw,32px);margin:0;line-height:1.2}
.sec-head p{margin:4px 0 0;color:var(--muted);max-width:60ch}
.kicker{font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;margin:0 0 4px}

.why{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px}
.why>div{min-width:0;border-top:3px solid var(--line);padding-top:14px}
.why>div.g{border-color:var(--give)} .why>div.n{border-color:var(--need)} .why>div.a{border-color:var(--fg)}
.why h3{margin:0 0 6px;font-size:17px}
.why p{margin:0;color:var(--muted);font-size:15px}

.gear{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media (min-width:720px){.gear{grid-template-columns:repeat(6,1fr)}}
.gear button{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 8px 12px;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;color:var(--fg);min-width:0}
.gear button:hover{border-color:var(--muted)}
.gear svg{width:44px;height:44px;color:var(--fg)}
.gear span{font-size:14px;font-weight:500}
.gear small{font-size:12px;color:var(--muted);font-family:var(--mono)}

.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;counter-reset:s}
.steps li{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;counter-increment:s;min-width:0}
.steps li::before{content:counter(s);font-family:var(--mono);font-size:13px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--fg);color:var(--bg);margin-bottom:10px}
.steps b{display:block;margin-bottom:4px}
.steps span{color:var(--muted);font-size:14px}

.notice{background:var(--warn-soft);border-radius:var(--r);padding:12px 14px;font-size:14px;display:flex;flex-direction:column;gap:4px}
.notice b{color:var(--warn);margin-right:6px}
.demo{background:var(--soft);border:1px dashed var(--muted);border-radius:var(--r);padding:10px 14px;font-size:13px;color:var(--fg);margin-top:16px}

/* 목록 필터 */
.bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding-block:4px 12px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface)}
.seg button{border:0;background:transparent;padding:8px 13px;cursor:pointer;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--fg);color:var(--bg);font-weight:700}
.bar select{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 10px;min-width:0;max-width:100%}
.chk{display:inline-flex;gap:6px;align-items:center;color:var(--muted);font-size:14px}
.count{margin-left:auto;color:var(--muted);font-size:14px}

/* 카드 */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;min-width:0}
.card .ph{aspect-ratio:4/3;background:var(--soft);display:grid;place-items:center;color:var(--muted);max-width:100%;position:relative;border:0;padding:0;width:100%}
.card .ph.btnlike{cursor:zoom-in}
.card .ph img{width:100%;height:100%;object-fit:cover;display:block}
.card .ph svg{width:64px;height:64px;opacity:.75}
.card .ph .n{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.6);color:#fff;border-radius:6px;padding:1px 7px;font-size:12px}
.card .ph .noimg{position:absolute;left:10px;bottom:8px;font-size:12px}
.card .body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}
.tagrow{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tag{font-size:12px;border-radius:999px;padding:2px 9px;font-weight:700;display:inline-flex;gap:6px;align-items:center}
.tag.give{background:var(--give-soft);color:var(--give)}
.tag.need{background:var(--need-soft);color:var(--need)}
.tag.plain{background:var(--bg);color:var(--fg);font-weight:500;border:1px solid var(--line)}
.tag .lamp{width:7px;height:7px}
.status{margin-left:auto;font-size:12px;color:var(--muted)}
.status.matching{color:var(--warn);font-weight:700}
.status.done,.status.closed{text-decoration:line-through}
.card h3{margin:0;font-size:17px;line-height:1.35;overflow-wrap:anywhere}
.spec{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;font-size:14px;margin:0}
.spec dt{color:var(--muted)} .spec dd{margin:0;overflow-wrap:anywhere}
.desc{font-size:14px;margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.meta{font-size:12px;color:var(--muted);margin-top:auto}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.card.closed{opacity:.62}
.empty{grid-column:1/-1;border:1px dashed var(--line);border-radius:var(--r);padding:36px 20px;text-align:center;color:var(--muted)}
.empty strong{display:block;color:var(--fg);font-size:17px;margin-bottom:6px}

/* 후기 */
.reviews{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rv{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px;min-width:0;position:relative}
.rv::before{content:"“";font-family:var(--display);font-size:46px;line-height:.6;color:var(--line);height:18px}
.rv p{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}
.rv .meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.more{display:flex;justify-content:center;padding-top:14px}

/* 바닥 */
footer.foot{margin-top:56px;background:var(--piste);color:var(--piste-muted);font-size:13px}
footer.foot .wrap{padding-block:26px;display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center}
footer.foot a{color:var(--piste-fg)}
footer.foot .name{font-family:var(--display);color:var(--piste-fg);font-size:16px;margin-right:auto}

/* 시트(입력창) */
.sheet{position:fixed;inset:0;background:rgba(8,12,18,.58);display:flex;align-items:flex-end;justify-content:center;z-index:20;padding-top:env(safe-area-inset-top,0px)}
@media (min-width:640px){.sheet{align-items:center;padding:20px}}
.panel{background:var(--surface);color:var(--fg);width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:14px 14px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom,0px))}
@media (min-width:640px){.panel{border-radius:14px}}
.panel h2{margin:0 0 4px;font-family:var(--display);font-weight:400;font-size:24px}
.panel .sub{color:var(--muted);font-size:14px;margin:0 0 14px}
.form{display:flex;flex-direction:column;gap:12px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:420px){.row2{grid-template-columns:1fr}}
.row2>*{min-width:0}
label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);min-width:0}
label.f input,label.f select,label.f textarea{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:9px 10px;color:var(--fg);font-size:16px;width:100%}
label.f textarea{min-height:84px;resize:vertical}
.hint{font-size:12px;color:var(--muted)}
.private{background:var(--bg);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:10px;border:1px solid var(--line)}
.private .hint{color:var(--fg)}
.radios{display:flex;gap:8px;flex-wrap:wrap}
.radios label{border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer;color:var(--fg);font-size:14px;display:inline-flex;gap:6px;align-items:center;background:var(--surface)}
.radios label:has(input:checked){border-color:var(--fg);font-weight:700}
.radios input{accent-color:var(--accent)}
.consent{border:1px solid var(--line);border-radius:8px;padding:12px;font-size:13px;display:flex;flex-direction:column;gap:6px}
.consent .ct{font-weight:700;margin:0}
.consent ul{margin:0;padding-left:18px;color:var(--muted)}
.consent ul b{color:var(--fg);font-weight:500;margin-right:4px}
.agree{display:flex;gap:8px;align-items:center;font-size:14px;font-weight:700;cursor:pointer}
.agree input{width:18px;height:18px;accent-color:var(--give)}
.thumbs{display:flex;gap:8px;flex-wrap:wrap}
.thumbs div{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.thumbs img{width:100%;height:100%;object-fit:cover}
.thumbs button{position:absolute;top:2px;right:2px;border:0;border-radius:50%;width:22px;height:22px;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;line-height:1}
.err{color:var(--need);font-size:14px;margin:0;min-height:1em}
.btnrow{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:4px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(18px + env(safe-area-inset-bottom,0px));background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:8px;z-index:30;font-size:14px;max-width:calc(100% - 32px)}

/* 문서(처리방침) */
.doc{max-width:760px;padding-block:28px 10px}
.doc h1{font-family:var(--display);font-weight:400;font-size:clamp(26px,5vw,36px);margin:0 0 6px}
.doc h2{font-size:18px;margin:28px 0 8px}
.doc p,.doc li{color:var(--fg)}
.doc .tbl{overflow-x:auto}
.doc table{border-collapse:collapse;width:100%;font-size:14px}
.doc th,.doc td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.doc th{background:var(--soft);font-weight:700}
