:root{
  --ink:#111827;
  --sub:#6b7280;
  --line:#e5e7eb;
  --line-strong:#cbd0d6;
  --field:#f3f4f6;
  --green:#00a35c;
  --green-soft:#e7f6ee;
  --white:#ffffff;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:#fff;
  color:var(--ink);
  font-family:-apple-system,"Meiryo","Yu Gothic UI","Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:900px;margin:0 auto;padding:40px 20px 80px;}

h1{
  font-size:clamp(26px,5vw,34px);
  font-weight:800;
  letter-spacing:-.02em;
  margin:0 0 10px;
}
.lead{
  font-size:14px;
  color:var(--sub);
  margin:0 0 26px;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.lead .credit{color:var(--green);font-weight:600;}

.card{
  background:var(--white);
  border:1px solid var(--line);
  border-radius:16px;
  padding:26px;
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.05);
}

/* currency selector row */
.selectors{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}
.cur{position:relative;}
.cur-btn{
  width:100%;
  display:flex;align-items:center;gap:12px;
  background:#fff;
  border:1.5px solid var(--line-strong);
  border-radius:11px;
  padding:12px 14px;
  cursor:pointer;
  text-align:left;
  transition:border-color .15s;
}
.cur-btn:hover{border-color:#9aa1aa;}
.cur-btn:focus-visible{outline:2px solid var(--green);outline-offset:2px;}
.cur.active .cur-btn{border-color:var(--ink);}
.flag{width:30px;height:21px;border-radius:3px;flex:none;overflow:hidden;box-shadow:0 0 0 1px rgba(0,0,0,.06);}
.flag svg{display:block;width:100%;height:100%;}
.cur-name{font-weight:700;font-size:17px;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cur-code{color:var(--sub);font-size:13px;font-weight:600;flex:none;}
.cur-btn .spacer{flex:1;}
.chev{flex:none;color:#9aa1aa;transition:transform .18s;}
.cur.open .chev{transform:rotate(180deg);}

/* dropdown panel */
.panel{
  position:absolute;z-index:20;top:calc(100% + 8px);left:0;right:0;
  background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 12px 32px rgba(16,24,40,.14);
  padding:8px;display:none;
}
.cur.open .panel{display:block;}
.search{
  width:100%;border:1px solid var(--line);border-radius:8px;
  padding:9px 11px;font-size:14px;margin-bottom:6px;font-family:inherit;
}
.search:focus{outline:none;border-color:var(--green);}
.list{max-height:230px;overflow:auto;}


.opt{
  display:flex;flex-direction:column;gap:3px;
  padding:8px 10px;border-radius:8px;cursor:pointer;
}
.opt:hover{background:var(--field);}
.opt.sel{background:var(--green-soft);}

.opt-top{display:flex;align-items:center;gap:8px;}
.opt-code{font-size:14px;font-weight:800;color:var(--ink);}
.opt-name{
  font-size:14px;font-weight:500;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* amount row */
.amounts{
  display:grid;grid-template-columns:1fr auto 1fr;
  align-items:center;gap:14px;margin-top:16px;
}
.field{position:relative;}
.field input{
  width:100%;border:none;background:var(--field);
  border-radius:9px;padding:15px 46px 15px 16px;
  font-size:23px;font-weight:500;color:var(--ink);font-family:inherit;
  border-bottom:2px solid transparent;
}
.field input:focus{outline:none;}
.field.live input{
  background:#fff;
  border-bottom:2px solid var(--green);
  border-radius:9px 9px 0 0;
}
.copy{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  border:none;background:none;cursor:pointer;color:#9aa1aa;padding:4px;
  display:flex;border-radius:6px;
}
.copy:hover{color:var(--ink);}
.copy.done{color:var(--green);}

.swap{
  width:42px;height:42px;border-radius:50%;
  border:1.5px solid var(--line);background:#fff;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--green);flex:none;
  transition:transform .3s,box-shadow .15s;
}
.swap:hover{box-shadow:0 2px 10px rgba(0,163,92,.25);}
.swap:active{transform:rotate(180deg);}
.swap:focus-visible{outline:2px solid var(--green);outline-offset:2px;}

.rate-line{
  margin-top:20px;font-size:14px;color:var(--sub);
  display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;
}
.rate-line b{color:var(--ink);font-weight:700;}

@media(max-width:620px){
  .selectors{grid-template-columns:1fr;}
  .amounts{grid-template-columns:1fr;}
  .swap{margin:0 auto;transform:rotate(90deg);}
  .swap:active{transform:rotate(270deg);}
}
@media(prefers-reduced-motion:reduce){
  *{transition:none!important;}
}

/* --- 地域グループ＋複数列ドロップダウン --- */
.panel{width:580px;max-width:92vw;}
#curFrom .panel{left:auto;right:0;}   /* 左の通貨：右端基準 → 左へ広がる */
#curTo   .panel{left:0;right:auto;}   /* 右の通貨：左端基準 → 右へ広がる */
.list{max-height:340px;}

.group-label{
  font-size:12px;font-weight:700;color:var(--sub);
  padding:10px 8px 4px;letter-spacing:.02em;
}
.group + .group .group-label{border-top:1px solid var(--line);margin-top:4px;}

.group-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  gap:2px;
}


/* --- クイック金額ボタン --- */
.quick{
  display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;
}
.quick-btn{
  border:1px solid var(--line-strong);
  background:#fff;color:var(--ink);
  border-radius:8px;padding:7px 14px;
  font-size:14px;font-weight:600;cursor:pointer;
  font-family:inherit;
  transition:border-color .15s,background .15s;
}
.quick-btn:hover{border-color:var(--green);background:var(--green-soft);}
.quick-btn:focus-visible{outline:2px solid var(--green);outline-offset:2px;}
.quick-break{flex-basis:100%;height:0;}

/* --- ペアページの早見表 --- */
.rate-table-wrap{
  max-width:480px;margin:30px auto 0;
}
.rate-table-wrap h2{
  font-size:18px;font-weight:700;margin:0 0 12px;
}
.pair-table{
  width:100%;border-collapse:collapse;font-size:15px;
}
.pair-table td{
  padding:9px 12px;border-bottom:1px solid var(--line);
}
.pair-table td:last-child{
  text-align:right;font-weight:600;color:var(--ink);
}
.pair-table td:first-child{
  color:var(--sub);
}