.so-eyebrow { margin: 0 0 14px; font-size: 13px; font-weight: 500; color: #8E1B4B; letter-spacing: 0.02em; }
.so-section { margin: 0 auto; padding: 88px var(--gutter); }
.so-section-tight { padding-top: 24px; }
.so-section h2 { font-size: clamp(28px, 3.4vw, 40px); line-height: 1.12; letter-spacing: -0.015em; margin: 0 0 18px; max-width: 640px; }
.so-hero h1 { font-size: clamp(34px, 4.6vw, 56px); line-height: 1.06; letter-spacing: -0.015em; margin: 0 0 20px; max-width: 760px; }
.so-lead { margin: 0; font-size: 17px; line-height: 1.6; color: var(--text-body); max-width: 600px; }
.so-lead-gap { margin-bottom: 36px; }
.so-note { margin: 14px 0 0; font-size: 14px; line-height: 1.5; color: var(--text-2); max-width: 600px; }
.so-custom { margin: 24px 0 0; font-size: 15px; line-height: 1.55; color: var(--text-2); max-width: 600px; }
.so-custom a, .so-q a { color: var(--text); }
.so-buttons { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }

.so-browser { margin-top: 48px; border-radius: 14px; overflow: hidden; background: var(--surface); box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--line), 0 24px 48px -24px rgba(24,32,42,.25); }
.so-browser-flat { margin-top: 0; }
.so-bar { display: flex; align-items: center; gap: 8px; padding: 10px 14px; background: var(--surface-2); border-bottom: 1px solid var(--line); }
.so-dots { display: flex; gap: 6px; width: 42px; }
.so-dots i { display: block; width: 9px; height: 9px; border-radius: 50%; background: #CDD4DD; }
.so-url { flex: 1; max-width: 280px; margin: 0 auto; padding: 4px 10px; border: 1px solid var(--line); border-radius: 7px; background: #FFFFFF; font-size: 12px; color: var(--text-2); text-align: center; }
.so-bar-end { width: 42px; }
.so-browser img, .so-shot img, .so-phone img { display: block; width: 100%; height: auto; }

.so-scroll { aspect-ratio: 1280 / 1000; overflow-y: auto; overscroll-behavior: contain; container-type: size; }
.so-scroll:focus-visible { outline: 3px solid var(--text); outline-offset: -3px; }
.so-scroll img { animation: so-glide 56s ease-in-out infinite alternate; }
.so-scroll:hover img, .so-scroll:focus img, .so-scroll:focus-within img { animation: none; }
@keyframes so-glide {
  0%, 8% { transform: translateY(0); }
  86%, 100% { transform: translateY(calc(-100% + 100cqh)); }
}
@media (max-width: 900px), (pointer: coarse) {
  .so-scroll { aspect-ratio: 390 / 600; overflow: hidden; overscroll-behavior: auto; }
  .so-scroll:hover img, .so-scroll:focus img, .so-scroll:focus-within img { animation: so-glide 56s ease-in-out infinite alternate; }
}
@media (prefers-reduced-motion: reduce) { .so-scroll img, .so-scroll:hover img, .so-scroll:focus img, .so-scroll:focus-within img { animation: none; } }

.so-templates { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.so-templates figure { margin: 0; }
.so-shot { overflow: hidden; border-radius: 10px; aspect-ratio: 16 / 10; box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--line); }
.so-shot img { height: 100%; object-fit: cover; object-position: top; }
.so-templates figcaption { margin-top: 12px; font-size: 15px; color: var(--text-2); }
.so-templates figcaption b { display: block; font-size: 17px; font-weight: 600; color: var(--text); }

.so-shop { display: grid; grid-template-columns: 1fr 250px 250px; gap: 32px; align-items: center; }
.so-steps { list-style: none; margin: 24px 0 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.so-steps li { display: grid; grid-template-columns: 36px 1fr; gap: 14px; align-items: start; font-size: 16px; line-height: 1.5; color: var(--text-body); }
.so-steps li b { display: block; font-weight: 600; color: var(--text); }
.so-n { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--line); background: #FFFFFF; font-size: 14px; font-weight: 600; }
.so-phone { margin: 0; }
.so-phone-frame { padding: 9px; border-radius: 34px; background: #0E0A0B; box-shadow: 0 24px 48px -20px rgba(24,32,42,.35); }
.so-phone-screen { overflow: hidden; border-radius: 26px; }
.so-phone figcaption { margin-top: 12px; font-size: 13px; color: var(--text-2); text-align: center; }

.so-feats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 28px; }
.so-faq { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 28px; }
.so-f, .so-q { padding: 22px; border-radius: 14px; background: var(--surface); box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--line); }
.so-f h3, .so-q h3 { margin: 0 0 8px; font-size: 16px; font-weight: 500; }
.so-f p { margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--text-body); }
.so-q p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--text-body); }

.so-all { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; padding: 40px; border-radius: 18px; background: var(--text); color: #FFFFFF; }
.so-all p { margin: 0; max-width: 720px; font-size: 24px; line-height: 1.3; font-weight: 500; letter-spacing: -0.01em; }
.so-all p span { color: #AEB8C4; }
.so-all .button { background: #FFFFFF; color: var(--text); white-space: nowrap; }
.so-fine { margin: 16px 0 0; font-size: 13px; line-height: 1.55; color: var(--text-2); }

.so-browser-fit { width: min(100%, calc((100vh - 190px) * 1.28)); }

.so-hero { display: grid; grid-template-columns: minmax(320px, 1fr) min(calc((100vh - 190px) * 1.28), calc(100% - 368px));
  gap: 48px; align-items: start; padding-top: 32px; }
.so-hero .so-browser { margin-top: 0; width: 100%; }

.so-front { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 48px; align-items: start; }

.so-line { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 24px; margin-top: 8px; padding: 22px 26px; border-radius: 14px; background: var(--surface); box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--line); }
.so-line p { margin: 0; font-size: 17px; line-height: 1.5; }
.so-line a { display: inline-flex; align-items: center; min-height: 44px; font-size: 15px; font-weight: 500; color: var(--text); }

.nf-top { display: grid; grid-template-columns: 1.1fr .9fr; gap: 56px; align-items: center; }
.nf-top h1 { font-size: clamp(34px, 4.6vw, 54px); line-height: 1.06; letter-spacing: -0.015em; margin: 0 0 18px; }
.nf-lead { margin: 0 0 28px; font-size: 17px; line-height: 1.6; color: var(--text-body); max-width: 520px; }
.nf-salon { padding: 26px; border-radius: 16px; background: var(--surface); box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--line); }
.nf-salon h2 { margin: 0 0 8px; font-size: 18px; font-weight: 500; letter-spacing: -0.015em; }
.nf-salon p { margin: 0 0 12px; font-size: 15px; line-height: 1.55; color: var(--text-body); }
.nf-salon .nf-example { margin: 4px 0 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); font-size: 14px; color: var(--text-2); }
.nf-example b { font-weight: 500; color: var(--text); }
.nf-salon .nf-last { margin: 0; }
.nf-links { margin-top: 72px; }
.nf-links h2 { margin: 0 0 16px; font-size: 15px; font-weight: 500; letter-spacing: -0.015em; color: var(--text-2); }
.nf-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; list-style: none; margin: 0; padding: 0; }
.nf-grid a { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 88px; padding: 20px 22px; border-radius: 14px; background: var(--surface); box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--line); text-decoration: none; }
.nf-grid a:hover { box-shadow: 0 1px 2px rgba(24,32,42,.05), 0 0 0 1px var(--text-2); }
.nf-grid b { display: block; margin-bottom: 2px; font-size: 16px; font-weight: 600; color: var(--text); }
.nf-grid span { font-size: 14px; line-height: 1.45; color: var(--text-2); }
.nf-grid i { font-style: normal; font-size: 18px; color: var(--text-2); }

@media (max-width: 900px) {
  .so-section { padding: 56px 20px; }
  .so-section-tight { padding-top: 24px; }
  .so-templates, .so-faq, .so-feats, .so-front, .so-hero { grid-template-columns: 1fr; }
    .so-browser-fit, .so-hero .so-browser { width: 100%; }
  .so-hero { gap: 32px; padding-top: 32px; }
  .so-front { gap: 28px; }
  .so-shop { grid-template-columns: 1fr; }
  .so-shop .so-phone { max-width: 260px; margin: 0 auto; }
  .so-shop .so-phone-second { display: none; }
  .so-all { padding: 28px; }
  .so-all p { font-size: 20px; }
  .nf-top { grid-template-columns: 1fr; gap: 28px; }
  .nf-grid { grid-template-columns: 1fr; }
  .nf-links { margin-top: 48px; }
}
.so-eyebrow-chip { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.so-hero-lead { margin-top: 18px; }
