/* CoComedix Sora ストアフロント 共通モダンテーマ（空色）。ec_top / ec_store / ec_item で共有。 */
:root{
  --bg:#f5f7f9; --card:#fff; --ink:#0f1419; --muted:#6b7280; --line:#ecedf1; --line2:#f2f3f6;
  --accent:#0a86c9; --accent2:#34b7f1; --accent-soft:#e6f4fc; --navy:#0f2c44; --navy2:#1f5f86;
  --r:16px; --r-sm:12px; --maxw:1600px;
  --sh:0 1px 2px rgba(16,24,40,.04),0 2px 6px rgba(16,24,40,.05);
  --sh-lg:0 14px 34px rgba(16,24,40,.12);
}
*{ box-sizing:border-box; }
body{ margin:0; font-family:"Inter",system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif; color:var(--ink); background:var(--bg); -webkit-font-smoothing:antialiased; }
a{ color:inherit; text-decoration:none; }
img{ display:block; }

/* ---- header ---- */
header.top{ background:rgba(255,255,255,.82); backdrop-filter:saturate(180%) blur(12px); -webkit-backdrop-filter:saturate(180%) blur(12px); position:sticky; top:0; z-index:30; border-bottom:1px solid var(--line); }
.topin{ max-width:var(--maxw); margin:0 auto; display:flex; align-items:center; gap:18px; padding:13px 20px; }
.brand{ font-size:20px; font-weight:800; letter-spacing:-.02em; white-space:nowrap; color:var(--ink); display:flex; align-items:center; gap:9px; }
.brand::before{ content:""; width:11px; height:11px; border-radius:50%; background:linear-gradient(135deg,var(--accent2),var(--accent)); box-shadow:0 0 0 4px var(--accent-soft); }
.brand small{ font-weight:500; color:var(--muted); font-size:11px; letter-spacing:0; }
.brand b{ color:var(--accent); font-weight:800; }
form.search{ flex:1; display:flex; max-width:620px; background:#f1f3f5; border:1px solid transparent; border-radius:999px; padding:4px 4px 4px 8px; transition:.15s; }
form.search:focus-within{ background:#fff; border-color:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); }
form.search input{ flex:1; border:0; background:transparent; padding:9px 12px; font-size:15px; outline:none; color:var(--ink); }
form.search button{ border:0; background:var(--accent); color:#fff; padding:0 22px; border-radius:999px; font-size:14px; cursor:pointer; font-weight:700; transition:.15s; }
form.search button:hover{ background:var(--accent2); }
.hnav{ display:flex; align-items:center; gap:6px; }
.hlink{ font-size:13px; font-weight:600; color:var(--ink); padding:9px 13px; border-radius:10px; white-space:nowrap; transition:.14s; }
.hlink:hover{ background:#f1f3f5; color:var(--accent); }
.hbtn{ font-size:13px; font-weight:700; color:#fff; background:var(--accent); padding:9px 16px; border-radius:10px; white-space:nowrap; transition:.15s; }
.hbtn:hover{ background:var(--accent2); }
.nav{ background:transparent; }
.navin{ max-width:var(--maxw); margin:0 auto; padding:10px 20px 2px; display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; }
.navin::-webkit-scrollbar{ display:none; }
.navin a{ font-size:13px; color:var(--ink); white-space:nowrap; padding:7px 15px; background:var(--card); border:1px solid var(--line); border-radius:999px; transition:.14s; font-weight:500; }
.navin a:hover{ background:var(--accent); color:#fff; border-color:var(--accent); }

/* ---- buttons ---- */
.btn-pri{ background:var(--accent); color:#fff; font-weight:700; padding:13px 24px; border-radius:12px; font-size:14px; transition:.16s; white-space:nowrap; box-shadow:0 6px 16px rgba(10,134,201,.26); cursor:pointer; border:0; }
.btn-pri:hover{ background:var(--accent2); transform:translateY(-1px); box-shadow:0 10px 22px rgba(10,134,201,.32); }
.btn-sec{ background:#fff; color:var(--ink); border:1px solid var(--line); font-weight:600; padding:13px 22px; border-radius:12px; font-size:14px; transition:.16s; white-space:nowrap; cursor:pointer; }
.btn-sec:hover{ border-color:var(--accent); color:var(--accent); }

/* ---- layout / sections ---- */
.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 20px; }
section{ margin:42px auto; }
.shead{ display:flex; align-items:baseline; justify-content:space-between; margin:0 0 18px; gap:10px; flex-wrap:wrap; }
.shead h2{ font-size:21px; margin:0; font-weight:800; letter-spacing:-.02em; display:flex; align-items:center; gap:11px; }
.shead h2::before{ content:""; width:9px; height:9px; border-radius:50%; background:var(--accent); }
.shead .more{ font-size:13px; color:var(--accent); font-weight:700; }
.shead .more:hover{ text-decoration:underline; }

/* ---- product card / grid (top・store 共通) ---- */
.grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(184px,1fr)); gap:16px; }
.card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; cursor:pointer; transition:.2s cubic-bezier(.2,.7,.3,1); display:flex; flex-direction:column; position:relative; box-shadow:var(--sh); }
.card:hover{ box-shadow:var(--sh-lg); transform:translateY(-4px); }
.thumb{ position:relative; aspect-ratio:1/1; background:#f8fafb; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.thumb img{ width:100%; height:100%; object-fit:contain; mix-blend-mode:multiply; transition:.28s; }
.card:hover .thumb img{ transform:scale(1.04); }
.noimg{ color:#cfd6dd; font-size:12px; }
.rank{ position:absolute; top:10px; left:10px; background:rgba(15,20,25,.85); color:#fff; font-weight:800; font-size:12px; min-width:26px; height:26px; display:flex; align-items:center; justify-content:center; border-radius:8px; }
.rank.r1{ background:linear-gradient(135deg,#f5c542,#d4a017); } .rank.r2{ background:linear-gradient(135deg,#cdd3da,#9aa3ad); } .rank.r3{ background:linear-gradient(135deg,#d68a4e,#b87333); }
.vbadge{ position:absolute; top:10px; right:10px; background:var(--accent); color:#fff; font-size:11px; font-weight:700; padding:3px 9px; border-radius:999px; box-shadow:0 2px 6px rgba(10,134,201,.35); }
.cbody{ padding:12px 13px 14px; display:flex; flex-direction:column; gap:5px; flex:1; }
.cbrand{ font-size:11px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-weight:500; }
.cname{ font-size:13px; line-height:1.45; height:3.7em; overflow:hidden; color:var(--ink); }
.cvar{ font-size:10.5px; color:var(--accent); font-weight:600; }
.cprice{ margin-top:auto; font-size:18px; font-weight:800; color:var(--ink); letter-spacing:-.02em; }
.cprice small{ font-size:11px; font-weight:500; color:var(--muted); }

.loading,.empty{ color:var(--muted); padding:34px; text-align:center; grid-column:1/-1; font-size:14px; }

/* ---- footer ---- */
footer{ background:#0f1822; color:#9aa6b2; margin-top:52px; }
.footin{ max-width:var(--maxw); margin:0 auto; padding:36px 20px; font-size:12.5px; line-height:2; }
.footin .fb{ font-size:17px; font-weight:800; color:#fff; margin-bottom:8px; letter-spacing:-.02em; }
.footin a:hover{ color:#fff; }
.footin .note{ opacity:.55; margin-top:14px; }

@media(max-width:760px){ .hnav .hlink{ display:none; } .topin{ flex-wrap:wrap; } form.search{ order:3; max-width:none; width:100%; } }
@media(max-width:680px){ .grid{ grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:11px; } }
