:root{
  --bg:#fff7f8;
  --ink:#4a3a44; --sub:#9a8792; --line:#f3e3e8;
  --pink:#ff8fb1; --pink-d:#ef6f97; --peach:#ffc6a8; --lav:#b9a3ff;
  --pink-soft:#ffeef3; --lav-soft:#f3efff; --peach-soft:#fff3ec;
  --grad:linear-gradient(120deg,#ff8fb1 0%,#ffa9a0 45%,#c4a8ff 100%);
  --shadow:0 10px 30px rgba(239,111,151,.14);
  --round:"Zen Maru Gothic","Noto Sans JP",system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:"Noto Sans JP",system-ui,sans-serif;-webkit-text-size-adjust:100%}
body{min-height:100dvh;position:relative;overflow-x:hidden}
img{max-width:100%}
.bg-blobs{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.bg-blobs i{position:absolute;border-radius:50%;filter:blur(50px);opacity:.55}
.bg-blobs i:nth-child(1){width:320px;height:320px;background:#ffd3df;top:-120px;left:-100px}
.bg-blobs i:nth-child(2){width:280px;height:280px;background:#e6dcff;top:180px;right:-140px}
.bg-blobs i:nth-child(3){width:260px;height:260px;background:#ffe2cf;bottom:-120px;left:10%}

.top{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:rgba(255,247,248,.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.brand{display:flex;align-items:center;gap:8px;font-family:var(--round);font-weight:900;font-size:18px;color:var(--ink);text-decoration:none;letter-spacing:.04em}
.brand-mark{width:22px;height:22px;border-radius:50% 50% 50% 12%;background:var(--grad);box-shadow:0 3px 10px rgba(255,143,177,.45)}
.top-link{font-size:12px;font-weight:700;color:var(--pink-d);text-decoration:none;padding:6px 12px;border-radius:99px;background:#fff;box-shadow:0 2px 8px rgba(239,111,151,.12)}
main{max-width:520px;margin:0 auto}
.view{display:none}
.view.active{display:block;animation:fade .45s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* はじめ */
.hero{padding:8px 20px 44px;text-align:center}
.hero-visual{position:relative;width:220px;height:220px;margin:8px auto 4px}
.hv-ring{position:absolute;inset:14px;border-radius:50%;background:conic-gradient(from 0deg,#ffd0dd,#ffe4d4,#e7ddff,#ffd0dd);animation:spin 14s linear infinite}
.hv-ring::after{content:"";position:absolute;inset:10px;border-radius:50%;background:#fffafb}
.hv-face{position:absolute;inset:44px 52px;color:#e7869f}
.hv-face svg{width:100%;height:100%}
@keyframes spin{to{transform:rotate(360deg)}}
.spark{position:absolute;width:14px;height:14px;background:var(--grad);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation:twinkle 2.4s ease-in-out infinite}
.s1{top:18px;right:30px}.s2{bottom:34px;left:18px;width:10px;height:10px;animation-delay:.8s}.s3{top:70px;left:8px;width:8px;height:8px;animation-delay:1.5s}
@keyframes twinkle{0%,100%{transform:scale(.6);opacity:.5}50%{transform:scale(1.1);opacity:1}}
.chip{position:absolute;font-size:11px;font-weight:700;padding:5px 10px;border-radius:99px;background:#fff;box-shadow:0 4px 14px rgba(185,163,255,.25);animation:float 4s ease-in-out infinite}
.c1{top:30px;left:-6px;color:#5aa9d6}.c2{top:120px;right:-14px;color:#e98aa7;animation-delay:1s}.c3{bottom:12px;right:34px;color:#a28be8;animation-delay:2s}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.eyebrow{display:inline-block;margin:6px 0 0;font-size:12px;font-weight:700;color:var(--pink-d);background:#fff;padding:6px 14px;border-radius:99px;box-shadow:0 3px 12px rgba(239,111,151,.12)}
h1{font-family:var(--round);font-weight:900;font-size:28px;line-height:1.5;margin:16px 0 12px;letter-spacing:.02em}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{color:var(--sub);font-size:14px;line-height:1.9;margin:0 auto 26px;max-width:340px}

.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:0;border-radius:99px;padding:17px 20px;font:inherit;font-family:var(--round);font-weight:700;font-size:16px;cursor:pointer;text-decoration:none;transition:transform .15s,box-shadow .15s}
.btn:active{transform:scale(.97)}
.btn svg{width:22px;height:22px}
.btn.primary{background:var(--grad);color:#fff;box-shadow:0 10px 24px rgba(239,111,151,.35);letter-spacing:.04em}
.btn.soft{background:#fff;color:var(--pink-d);margin-top:12px;box-shadow:0 4px 14px rgba(239,111,151,.12)}
.btn.small{display:inline-flex;width:auto;padding:10px 18px;font-size:13px;margin:0}

.steps{display:flex;gap:10px;list-style:none;padding:0;margin:30px 0 0}
.steps li{flex:1;background:#fff;border-radius:20px;padding:14px 6px;box-shadow:0 4px 16px rgba(239,111,151,.08)}
.steps b{display:block;font-family:var(--round);font-size:18px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.steps span{display:block;font-size:12px;line-height:1.6;margin-top:4px;font-weight:500}
.notes{margin:22px 0 0;text-align:left;background:rgba(255,255,255,.7);border-radius:20px;padding:14px 18px}
.notes p{margin:4px 0;font-size:12.5px;color:var(--sub);line-height:1.8;display:flex;gap:8px;align-items:baseline}
.dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--pink);transform:translateY(-2px)}

/* カメラ */
.cam-wrap{position:relative;width:100%;height:calc(100dvh - 128px);min-height:440px;background:#2a2228;overflow:hidden;border-radius:0 0 28px 28px}
#video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}
.mask{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.oval{position:absolute;pointer-events:none}
.oval svg{width:100%;height:100%;overflow:visible}
.ring-base{fill:none;stroke:rgba(255,255,255,.9);stroke-width:3px;vector-effect:non-scaling-stroke;stroke-dasharray:2 3}
#ring{fill:none;stroke:url(#rg);stroke-width:6px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-dasharray:0 100;transition:stroke-dasharray .1s}
.oval.counting #ring{stroke-dasharray:var(--p,0) 100}
.oval.ready .ring-base{stroke:#fff;stroke-dasharray:none}
.cam-msg{position:absolute;left:50%;transform:translateX(-50%);bottom:22px;width:max-content;max-width:calc(100% - 40px);text-align:center;color:var(--ink);font-family:var(--round);font-weight:700;font-size:15px;background:rgba(255,255,255,.92);padding:11px 20px;border-radius:99px;box-shadow:0 6px 20px rgba(0,0,0,.15)}
.cam-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.85);color:var(--ink);cursor:pointer;display:grid;place-items:center}
.cam-close svg{width:18px;height:18px}
.cam-foot{text-align:center;padding:16px}

/* 解析中 */
.loading{text-align:center;padding:36px 20px 50px}
.shot-frame{position:relative;width:210px;height:210px;margin:0 auto 26px}
.shot-ring{position:absolute;inset:0;border-radius:50%;background:conic-gradient(#ff8fb1,#ffc6a8,#c4a8ff,#ff8fb1);animation:spin 2.2s linear infinite}
.shot-frame img{position:absolute;inset:7px;width:calc(100% - 14px);height:calc(100% - 14px);object-fit:cover;border-radius:50%;border:4px solid #fff}
.scan{position:absolute;left:18px;right:18px;height:2px;background:linear-gradient(90deg,transparent,#fff,transparent);box-shadow:0 0 12px #fff;animation:scan 1.8s ease-in-out infinite}
@keyframes scan{0%{top:18%}50%{top:80%}100%{top:18%}}
.loading-title{font-family:var(--round);font-weight:700;font-size:19px;margin:0 0 18px}
.load-steps{list-style:none;padding:0;margin:0 auto;max-width:260px;text-align:left}
.load-steps li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:#cbbcc4;padding:7px 0;transition:color .3s}
.load-steps li::before{content:"";flex:none;width:18px;height:18px;border-radius:50%;border:2px solid #f0dde4;transition:all .3s}
.load-steps li.now{color:var(--ink);font-weight:500}
.load-steps li.now::before{border-color:var(--pink);border-top-color:transparent;animation:spin .8s linear infinite}
.load-steps li.done{color:var(--sub)}
.load-steps li.done::before{border-color:transparent;background:var(--pink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-9' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}

/* 結果 */
#result{padding:12px 16px 0}
.card{background:#fff;border-radius:26px;padding:22px 20px;margin-bottom:16px;box-shadow:var(--shadow)}
.res-hero{position:relative;overflow:hidden;text-align:center;background:linear-gradient(160deg,#fff 0%,#fff1f5 55%,#f3edff 100%)}
.res-photo{width:84px;height:84px;border-radius:50%;object-fit:cover;border:4px solid #fff;box-shadow:0 6px 18px rgba(239,111,151,.25);margin:0 auto 10px;display:block}
.label{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--pink-d);background:var(--pink-soft);padding:4px 12px;border-radius:99px;margin:0 0 8px}
.skin-type{font-family:var(--round);font-weight:900;font-size:28px;margin:2px 0 6px}
.score{display:flex;justify-content:center;align-items:baseline;gap:6px;margin:4px 0 14px;color:var(--sub);font-size:12px}
.score b{font-family:var(--round);font-size:34px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.summary{font-size:14.5px;line-height:2;margin:0;text-align:left}

.radar{display:block;width:100%;max-width:320px;margin:0 auto}
.radar text{font-size:11px;font-weight:700;fill:var(--ink);font-family:"Noto Sans JP",sans-serif}
.legend{text-align:center;font-size:11px;color:var(--sub);margin:4px 0 14px}
.mlist{display:grid;gap:10px}
.mrow{border-radius:18px;padding:12px 14px;background:#fffafb;border:1px solid var(--line)}
.mrow-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.mrow-head b{font-size:14px}
.lv{font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;white-space:nowrap}
.lv.l0{background:#e9f7f0;color:#3f9a74}.lv.l1{background:var(--peach-soft);color:#d9824e}.lv.l2{background:var(--pink-soft);color:var(--pink-d)}
.mrow p{font-size:12.5px;color:var(--sub);line-height:1.7;margin:6px 0 0}

.sec-title{font-family:var(--round);font-weight:900;font-size:21px;margin:34px 4px 4px;text-align:center}
.sec-sub{text-align:center;font-size:12.5px;color:var(--sub);margin:0 0 16px}
.ing{position:relative;padding-top:26px}
.ing-no{position:absolute;top:-1px;left:20px;font-family:var(--round);font-weight:900;font-size:12px;color:#fff;background:var(--grad);padding:5px 12px;border-radius:0 0 12px 12px;letter-spacing:.08em}
.ing-name{font-family:var(--round);font-size:21px;font-weight:900;margin:8px 0 6px}
.tag{display:inline-block;font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;margin:0 6px 6px 0;background:var(--lav-soft);color:#8a6fe0}
.ing:nth-of-type(3n+1) .tag{background:var(--pink-soft);color:var(--pink-d)}
.ing:nth-of-type(3n+2) .tag{background:var(--peach-soft);color:#d9824e}
.ing-why{font-size:14px;line-height:1.95;margin:6px 0 16px}
.prods{display:grid;gap:12px}
.prod{display:flex;gap:14px;align-items:stretch;border-radius:20px;padding:12px;text-decoration:none;color:inherit;background:linear-gradient(135deg,#fffafb,#fff6f2)}
.prod-img{flex:none;width:92px;height:108px;border-radius:16px;background:#fff;display:grid;place-items:center;box-shadow:0 4px 14px rgba(0,0,0,.05)}
.prod-img img{max-width:80px;max-height:96px;object-fit:contain}
.prod-body{display:flex;flex-direction:column;min-width:0}
.prod-name{font-size:13.5px;line-height:1.55;font-weight:700;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.prod-meta{font-size:12px;color:var(--sub);margin-top:4px}
.prod-price{font-family:var(--round);font-weight:900;font-size:15px;color:var(--ink);margin-right:8px}
.stars{color:#f5a623}
.prod-reason{font-size:12px;color:var(--sub);margin-top:5px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.prod-cta{align-self:flex-start;margin-top:auto;padding-top:8px}
.prod-cta span{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:#fff;background:var(--ink);padding:7px 14px;border-radius:99px}

.routine{padding:22px 20px 10px}
.tl{list-style:none;margin:0;padding:0}
.tl li{position:relative;padding:0 0 18px 34px;font-size:13.5px;line-height:1.85}
.tl li::before{content:attr(data-n);position:absolute;left:0;top:1px;width:24px;height:24px;border-radius:50%;background:var(--grad);color:#fff;font-family:var(--round);font-weight:700;font-size:12px;display:grid;place-items:center}
.tl li:not(:last-child)::after{content:"";position:absolute;left:11px;top:28px;bottom:2px;width:2px;background:var(--line)}

.result-foot{padding:6px 16px 44px}
.disclaimer{font-size:11px;color:var(--sub);line-height:1.8;margin-top:18px}
.err{color:var(--pink-d);font-size:14px;line-height:1.8;text-align:center}

.consent{display:flex;gap:10px;align-items:flex-start;text-align:left;margin:16px 4px 0;font-size:11.5px;line-height:1.7;color:var(--sub);cursor:pointer}
.consent input{flex:none;width:18px;height:18px;margin:2px 0 0;accent-color:var(--pink-d)}
