:root{
  --bg:#F6F4EE;--surface:#FFFFFF;--surface-soft:#FBF9F3;--border:#E6E1D3;
  --ink:#15171C;--ink-soft:#5C5F66;--ink-dim:#98999C;
  --accent:#2E5CFF;--accent-soft:#DEE6FF;--free:#178A5F;--free-soft:#DBF2E8;--ribbon:#FF5A3C;
  --display:'Sora', sans-serif;--body:'Inter', sans-serif;--radius:14px;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{background:var(--bg);color:var(--ink);font-family:var(--body);line-height:1.55;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
img{display:block;max-width:100%;}

header{position:sticky;top:0;z-index:30;background:rgba(246,244,238,0.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);}
.nav{max-width:1180px;margin:0 auto;padding:18px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px;}
.logo{font-family:var(--display);font-weight:800;font-size:20px;letter-spacing:-0.01em;display:flex;align-items:center;gap:10px;}
.logo-mark{width:30px;height:30px;border-radius:8px;background:var(--ink);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.logo-mark svg{width:16px;height:16px;}
.nav-links{display:flex;gap:30px;font-size:13px;font-weight:600;letter-spacing:0.04em;color:var(--ink-soft);}
.nav-links a:hover{color:var(--ink);}
.nav-cta{font-weight:600;font-size:14px;background:var(--ink);color:var(--bg);padding:10px 20px;border-radius:100px;}

.hero{max-width:1180px;margin:0 auto;padding:72px 28px 40px;}
.hero-top{max-width:640px;}
h1{font-family:var(--display);font-weight:800;font-size:clamp(34px,5vw,54px);letter-spacing:-0.03em;line-height:1.05;margin-bottom:18px;}
.hero-sub{font-size:17px;color:var(--ink-soft);max-width:480px;margin-bottom:36px;}

.flow{display:flex;align-items:center;gap:0;flex-wrap:wrap;margin-bottom:40px;}
.flow-step{display:flex;align-items:center;gap:10px;}
.flow-icon{width:38px;height:38px;border-radius:50%;background:var(--surface);border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.flow-icon svg{width:18px;height:18px;stroke:var(--ink);}
.flow-label{font-weight:600;font-size:14.5px;}
.flow-arrow{color:var(--ink-dim);margin:0 18px;font-size:16px;}

.hero-ctas{display:flex;gap:12px;flex-wrap:wrap;}
.btn-primary{background:var(--accent);color:#fff;font-weight:600;font-size:14.5px;padding:14px 26px;border-radius:100px;display:inline-block;border:none;cursor:pointer;font-family:var(--body);}
.btn-primary:hover{opacity:0.92;}
.btn-secondary{background:transparent;color:var(--ink);font-weight:600;font-size:14.5px;padding:14px 26px;border-radius:100px;border:1.5px solid var(--border);display:inline-block;}
.btn-secondary:hover{border-color:var(--ink);}

.tiles{max-width:1180px;margin:0 auto;padding:8px 28px 64px;}
.tiles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.tile{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3.1;cursor:pointer;border:1px solid var(--border);}
.tile-art{position:absolute;inset:0;}
.tile-scrim{position:absolute;left:0;right:0;bottom:0;padding:18px 18px 16px;background:linear-gradient(180deg, transparent, rgba(0,0,0,0.55) 60%, rgba(0,0,0,0.72));}
.tile-title{font-family:var(--display);font-weight:700;font-size:19px;color:#fff;letter-spacing:-0.01em;}
.tile-count{font-size:12.5px;color:rgba(255,255,255,0.75);margin-top:2px;}
.ribbon{position:absolute;top:14px;right:-30px;background:var(--ribbon);color:#fff;font-size:11px;font-weight:700;padding:5px 34px;transform:rotate(38deg);letter-spacing:0.03em;}

.catalog{max-width:1180px;margin:0 auto;padding:8px 28px 100px;}
.catalog-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:20px;margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid var(--border);}
.catalog-head h2{font-family:var(--display);font-size:26px;font-weight:700;letter-spacing:-0.02em;}
.catalog-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.search-box{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:100px;padding:9px 16px;min-width:220px;}
.search-box svg{width:15px;height:15px;stroke:var(--ink-dim);flex-shrink:0;}
.search-box input{border:none;outline:none;background:transparent;font-size:13.5px;font-family:var(--body);color:var(--ink);width:100%;}
.search-box input::placeholder{color:var(--ink-dim);}
.tabs{display:flex;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:100px;padding:4px;}
.tab{font-weight:600;font-size:13px;padding:8px 16px;border-radius:100px;color:var(--ink-soft);cursor:pointer;background:transparent;border:none;font-family:var(--body);}
.tab.active{background:var(--ink);color:var(--bg);}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px;}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:transform .15s, box-shadow .15s;position:relative;}
.card:hover{transform:translateY(-3px);box-shadow:0 14px 30px -18px rgba(20,20,20,0.25);}
.card-art{position:relative;aspect-ratio:16/10;background-size:cover;background-position:center;}
.card-badge{position:absolute;top:12px;left:12px;font-size:11px;font-weight:700;background:rgba(255,255,255,0.9);color:var(--ink);padding:4px 9px;border-radius:6px;letter-spacing:0.02em;text-transform:uppercase;}
.card-price{position:absolute;top:12px;right:12px;font-size:12.5px;font-weight:700;background:var(--ink);color:#fff;padding:5px 11px;border-radius:100px;}
.card-price.free{background:var(--free);}
.wishlist-btn{position:absolute;bottom:12px;right:12px;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,0.92);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.wishlist-btn svg{width:16px;height:16px;stroke:var(--ink);fill:none;}
.wishlist-btn.saved svg{fill:var(--ribbon);stroke:var(--ribbon);}
.card-body{padding:16px 17px 18px;}
.card-name{font-family:var(--display);font-weight:700;font-size:16px;margin-bottom:5px;letter-spacing:-0.01em;}
.card-desc{font-size:13px;color:var(--ink-soft);line-height:1.5;}
.empty{grid-column:1/-1;text-align:center;padding:60px 20px;color:var(--ink-dim);font-size:14px;}
footer{border-top:1px solid var(--border);padding:36px 28px;text-align:center;font-size:13px;color:var(--ink-dim);}

/* product detail page */
.product-page{max-width:960px;margin:0 auto;padding:48px 28px 100px;}
.product-hero{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:flex-start;}
.product-art{aspect-ratio:4/3;border-radius:var(--radius);background-size:cover;background-position:center;border:1px solid var(--border);}
.product-cat{font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:10px;}
.product-title{font-family:var(--display);font-size:32px;font-weight:800;letter-spacing:-0.02em;margin-bottom:14px;}
.product-desc{font-size:15px;color:var(--ink-soft);margin-bottom:26px;line-height:1.6;}
.product-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.back-link{font-size:13.5px;font-weight:600;color:var(--ink-soft);margin-bottom:24px;display:inline-block;}
.back-link:hover{color:var(--ink);}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 22px;border-radius:100px;font-size:13.5px;font-weight:600;opacity:0;pointer-events:none;transition:all .25s;z-index:50;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

@media (max-width:820px){
  .tiles-grid{grid-template-columns:1fr;}
  .nav-links{display:none;}
  .flow-arrow{margin:0 10px;}
  .product-hero{grid-template-columns:1fr;}
}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
