/* 口コミ帳：案C「1問ずつスタンプ」 */
:root{
  --bg:#F2F6F5; --card:#FFFFFF; --ink:#14213D; --sub:#56627A; --line:#D7E0DE;
  --mint:#22B892; --mint-soft:#DDF5EE; --low:#E5484D; --low-soft:#FDE4E4;
  --disp:"Dela Gothic One","Hiragino Sans",system-ui,sans-serif;
  --body:"M PLUS 1p","Hiragino Sans","Yu Gothic",system-ui,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.7;overflow-x:clip;min-height:100vh}
[hidden]{display:none!important}
button,input,textarea,select{font:inherit;color:inherit}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid var(--mint);outline-offset:2px}
a{color:var(--ink)}
.wrap{max-width:460px;margin:0 auto;padding-block:16px 110px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.disp{font-family:var(--disp);font-weight:400}

/* 共通部品 */
.box{background:var(--card);border:2px solid var(--ink);border-radius:22px;padding:22px 20px;box-shadow:6px 6px 0 var(--ink)}
.card{background:var(--card);border:2px solid var(--ink);border-radius:18px;padding:14px 16px;margin-top:12px}
.card h3{margin:0 0 8px;font-size:14px;font-weight:800;display:flex;justify-content:space-between;align-items:center;gap:8px}
.btn{border:2px solid var(--ink);border-radius:14px;padding:12px 16px;font-weight:800;font-size:15px;background:var(--card);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;transition:transform .08s,box-shadow .08s}
.btn.pri{background:var(--mint);box-shadow:0 4px 0 var(--ink)}
.btn.pri:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.btn.dark{background:var(--ink);color:#fff}
.btn.wide{width:100%}
.btn.sm{padding:6px 12px;font-size:13px;border-radius:10px}
.btn:disabled{opacity:.35;cursor:default}
.field{display:grid;gap:4px;margin-bottom:14px}
.field label{font-size:13px;font-weight:800}
.field .hint{font-size:12px;color:var(--sub)}
input[type=text],input[type=email],input[type=password],input[type=url],textarea,select{width:100%;font-size:15px;border:2px solid var(--ink);border-radius:12px;padding:10px 12px;background:var(--card)}
textarea{min-height:120px;resize:vertical}
.msg{font-size:13px;min-height:20px;margin:8px 0 0;color:var(--sub)}
.msg.err{color:var(--low)}
.msg.ok{color:#0F7A5E}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);opacity:0;background:var(--ink);color:#fff;font-weight:800;font-size:13px;padding:10px 16px;border-radius:12px;transition:.3s;pointer-events:none;z-index:60;max-width:calc(100% - 32px);text-align:center}
.toast.show{transform:translate(-50%,0);opacity:1}

/* アンケート（お客さん） */
.q{min-height:440px;display:flex;flex-direction:column;overflow:hidden}
.dots{display:flex;gap:6px;margin-bottom:18px}
.dots i{height:6px;flex:1;border-radius:3px;background:var(--line);transition:background .3s}
.dots i.on{background:var(--mint)}
.step{animation:slide .35s cubic-bezier(.2,.9,.3,1)}
.q .shop{font-size:12px;font-weight:800;color:var(--sub)}
.q h1{font-family:var(--disp);font-weight:400;font-size:26px;line-height:1.35;margin:4px 0 22px}
.stamps{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.stamps button{aspect-ratio:1;border-radius:50%;border:2px dashed var(--line);background:var(--card);font-family:var(--disp);font-size:20px;color:var(--sub);cursor:pointer;max-width:100%}
.stamps button.on{border:3px solid var(--mint);background:var(--mint-soft);color:var(--ink);animation:thump .35s cubic-bezier(.3,1.6,.5,1)}
.ends{display:flex;justify-content:space-between;font-size:12px;color:var(--sub);margin-top:6px}
.chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.chip{border:2px solid var(--ink);border-radius:14px;padding:12px;font-weight:800;background:var(--card);cursor:pointer;text-align:left;transition:transform .1s}
.chip[aria-pressed="true"]{background:var(--ink);color:#fff}
.chip[aria-pressed="true"]::after{content:" ✓";color:var(--mint)}
.chip:active{transform:scale(.96)}
.nav{margin-top:auto;padding-top:18px;display:flex;gap:10px}
.nav .btn{flex:1;padding:14px;font-size:16px}
.nav .prev{flex:0 0 auto}
.fin{text-align:center;justify-content:center}
.fin p{color:var(--sub);margin:0}
.bigstamp{width:140px;height:140px;margin:0 auto 14px;border-radius:50%;border:6px solid var(--mint);color:var(--mint);display:grid;place-items:center;font-family:var(--disp);font-size:30px;line-height:1.1;transform:rotate(-10deg);animation:land .55s cubic-bezier(.3,1.5,.5,1) both}
.trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.foot-note{font-size:11px;color:var(--sub);text-align:center;margin-top:14px}

/* ログイン */
.login{min-height:100vh;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px))}
.login .box{width:min(420px,100%)}
.login h1{font-family:var(--disp);font-weight:400;font-size:34px;margin:0;line-height:1.3}
.login .lead{color:var(--sub);margin:6px 0 20px}

/* 店主：計器盤 */
.hd{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.hd h2{font-family:var(--disp);font-weight:400;font-size:20px;margin:0;min-width:0;overflow-wrap:anywhere}
.badge{font-size:11px;font-weight:800;border:2px solid var(--ink);border-radius:99px;padding:1px 10px;background:var(--card);cursor:pointer;white-space:nowrap}
.badge.pro{background:var(--mint)}
.gauge{background:var(--ink);color:#fff;border-radius:22px;padding:18px;display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center}
.ring{position:relative;width:120px;height:120px}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:12}
.ring .tr{stroke:rgba(255,255,255,.15)}
.ring .pg{stroke:var(--mint);stroke-linecap:round;transition:stroke-dashoffset 1s cubic-bezier(.2,.9,.3,1)}
.ring b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--disp);font-size:30px;font-weight:400}
.ring small{position:absolute;bottom:24px;left:0;right:0;text-align:center;font-size:10px;opacity:.7}
.gauge dl{margin:0;display:grid;gap:8px}
.gauge dt{font-size:11px;opacity:.7}
.gauge dd{margin:0;font-family:var(--disp);font-size:22px;line-height:1.2;font-variant-numeric:tabular-nums}
.gauge dd em{font-style:normal;font-family:var(--body);font-size:12px;margin-left:2px}
.bars{display:grid;grid-template-columns:repeat(7,1fr);align-items:end;gap:8px;height:100px}
.bars div{display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}
.bars i{display:block;width:100%;background:var(--ink);border-radius:6px 6px 3px 3px;height:0;min-height:2px;transition:height .7s cubic-bezier(.2,.9,.3,1)}
.bars div:last-child i{background:var(--mint)}
.bars span{font-size:11px;color:var(--sub);font-variant-numeric:tabular-nums}
.ai .one{font-weight:800;margin:0 0 8px}
.ai p.i{margin:0 0 6px;padding-left:22px;position:relative}
.ai p.i::before{content:"";position:absolute;left:4px;top:.6em;width:10px;height:10px;border-radius:50%;background:var(--mint)}
.ai p.h::before{background:var(--low)}
.ai .when{font-size:11px;color:var(--sub);margin:8px 0 0}
.ai .s{animation:ink .6s ease both}
.empty{color:var(--sub);font-size:13px;margin:0}
.feed .v{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;padding:10px 0;border-top:1px solid var(--line);align-items:start}
.feed .v:first-of-type{border-top:0}
.feed .n{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-family:var(--disp);font-size:16px;background:var(--mint-soft)}
.feed .n.l{background:var(--low-soft);color:var(--low)}
.feed p{margin:0;overflow-wrap:anywhere}
.feed small{color:var(--sub);font-size:12px}
.feed .g{font-size:11px;font-weight:800;color:#0F7A5E}
.feed .del{border:0;background:none;color:var(--sub);font-size:12px;cursor:pointer;padding:2px 4px}
.filters{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}
.filters button{flex:none;border:2px solid var(--ink);border-radius:99px;padding:4px 12px;font-size:13px;font-weight:800;background:var(--card);cursor:pointer}
.filters button[aria-pressed="true"]{background:var(--ink);color:#fff}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row select{width:auto;padding:6px 10px}
.lock{font-size:12px;color:var(--sub);margin:8px 0 0}

/* PR欄 */
.offers .pr{font-size:11px;font-weight:800;border:1px solid var(--sub);color:var(--sub);border-radius:4px;padding:0 6px}
.offer{border-top:1px dashed var(--line);padding:12px 0}
.offer:first-of-type{border-top:0;padding-top:4px}
.offer b{display:block;font-size:15px}
.offer .why{display:inline-block;font-size:11px;font-weight:800;background:var(--low-soft);color:var(--low);border-radius:99px;padding:0 8px;margin:2px 0}
.offer p{margin:4px 0 8px;font-size:13px;color:var(--sub)}

/* QRポスター */
.poster{background:#fff;border:2px solid var(--ink);border-radius:18px;padding:24px 20px;text-align:center;margin-top:12px}
.poster .pshop{font-weight:800;color:var(--sub);font-size:14px}
.poster h3{font-family:var(--disp);font-weight:400;font-size:26px;line-height:1.35;margin:6px 0 4px}
.poster .psub{color:var(--sub);margin:0 0 14px}
.poster .qr{width:200px;height:200px;margin:0 auto;display:grid;place-items:center;border:3px solid var(--mint);border-radius:16px;padding:8px;background:#fff}
.poster .qr svg,.poster .qr img{width:100%;height:100%}
.poster .pfoot{font-size:12px;color:var(--sub);margin-top:12px}
.url{font-size:12px;word-break:break-all;background:var(--bg);border-radius:10px;padding:8px 10px;margin:10px 0 0}

/* 設定・プラン */
.plans{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 12px}
.plan{border:2px solid var(--line);border-radius:14px;padding:12px}
.plan.pro{border-color:var(--ink);background:var(--mint-soft)}
.plan h4{margin:0;font-size:14px}
.plan .price{font-family:var(--disp);font-size:20px;margin:2px 0}
.plan .price small{font-family:var(--body);font-size:11px;color:var(--sub)}
.plan ul{margin:4px 0 0;padding-left:1.1em;font-size:12px;color:var(--sub)}
.trial{background:#FFF4D6;border-radius:12px;padding:8px 12px;font-size:13px;margin:0 0 10px}
.links{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;margin-top:14px}
.links button{border:0;background:none;padding:0;text-decoration:underline;cursor:pointer;color:var(--sub)}
.links a{color:var(--sub)}

/* 下のタブ */
.tabbar{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:2px solid var(--ink);display:flex;justify-content:center;padding:8px max(16px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));z-index:20}
.tabbar div{display:flex;gap:4px;max-width:460px;width:100%}
.tabbar button{flex:1;border:0;background:none;font-weight:800;font-size:12px;color:var(--sub);padding:8px 4px;border-radius:10px;cursor:pointer}
.tabbar button[aria-current="page"]{background:var(--mint-soft);color:var(--ink)}
.view{animation:slide .3s cubic-bezier(.2,.9,.3,1)}

@keyframes slide{from{transform:translateX(24px);opacity:0}}
@keyframes thump{0%{transform:scale(.6)}100%{transform:scale(1)}}
@keyframes land{0%{transform:scale(2.4) rotate(-40deg);opacity:0}70%{opacity:1}100%{transform:scale(1) rotate(-10deg)}}
@keyframes ink{from{opacity:0;filter:blur(3px)}}
@media (max-width:380px){.gauge{grid-template-columns:100px 1fr}.ring{width:100px;height:100px}.plans{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{
  body{background:#fff}
  body *{visibility:hidden}
  #printArea,#printArea *{visibility:visible}
  #printArea{position:absolute;left:0;top:0;width:100%;border:0;margin:0;padding-top:40px}
  #printArea h3{font-size:40px}
  #printArea .qr{width:320px;height:320px}
}
/* ログイン：ログイン／新規登録の切りかえ・パスワード */
.seg{display:flex;gap:6px;background:var(--card);border:2px solid var(--ink);border-radius:14px;padding:4px;margin-bottom:16px}
.seg button{flex:1;border:0;background:none;border-radius:10px;padding:10px 4px;font:inherit;font-weight:800;font-size:14px;color:var(--sub);cursor:pointer;transition:background .2s,color .2s}
.seg button[aria-selected="true"]{background:var(--ink);color:#fff}
.pwbox{position:relative}
.pwbox input{width:100%;padding-right:64px}
.pwbox .eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:var(--mint-soft);border-radius:8px;padding:6px 10px;font:inherit;font-size:12px;font-weight:800;color:var(--ink);cursor:pointer}
.sublinks{margin:6px 0 0}
.linkish{border:0;background:none;padding:0;font:inherit;font-size:13px;color:var(--ink);text-decoration:underline;cursor:pointer}
