:root{
  --black:#000; --white:#fff; --red:#bb0019; --bar:#aaa;
  --bg:#fff; --text:#222; --muted:#666; --line:#d9d9d9; --pale:#f4f4f4; --card:#fff;
  --sans:"Noto Sans JP","Hiragino Kaku Gothic ProN","Hiragino Sans",Meiryo,sans-serif;
  --latin:"Saira","Arial Narrow","Helvetica Neue",Arial,sans-serif;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--bg:#111;--text:#eee;--muted:#aaa;--line:#333;--pale:#1c1c1c;--card:#161616;--bar:#555}
}
:root[data-theme="dark"]{--bg:#111;--text:#eee;--muted:#aaa;--line:#333;--pale:#1c1c1c;--card:#161616;--bar:#555}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.8}
a{color:inherit}
:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.wrap{max-width:1000px;margin:0 auto;padding:0 20px}
[hidden]{display:none!important}

/* header */
.site-head{background:var(--black);color:#fff}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:14px;padding-bottom:14px}
.logo{text-decoration:none;color:#fff;line-height:1.05}
.logo .l1{font:700 13px/1 var(--latin);letter-spacing:.06em;text-transform:uppercase;display:block}
.logo .l2{font:700 22px/1.1 var(--latin);letter-spacing:.04em;text-transform:uppercase;display:block}
.logo .l3{font-size:11px;letter-spacing:.12em;display:block;margin-top:3px}
.logo{display:block;flex:0 1 300px;min-width:0}
.logo img{display:block;height:56px;width:auto;max-width:100%}
.head-btn{flex:none;background:var(--red);color:#fff;border:2px solid #fff;font:500 15px/1 var(--sans);letter-spacing:.04em;width:58px;height:58px;padding:0;cursor:pointer}
.site-menu{background:#111;border-top:1px solid #333}
.site-menu ul{list-style:none;margin:0;padding:8px 0 16px;display:grid;gap:0}
@media (min-width:600px){.site-menu ul{grid-template-columns:repeat(3,1fr)}}
.site-menu a{display:block;color:#fff;text-decoration:none;padding:12px 4px;border-bottom:1px solid #2a2a2a;font-size:14px;font-weight:700;letter-spacing:.06em}
.site-menu a:hover{color:#ff2a40}

/* hero */
.hero{background:var(--black);color:#fff;padding:20px 0 24px;border-top:1px solid #222}
.eyebrow{display:inline-block;background:var(--red);color:#fff;font-size:12px;font-weight:700;letter-spacing:.06em;padding:3px 10px;margin:0 0 10px}
.hero h1{font-size:clamp(26px,7vw,48px);line-height:1.35;font-weight:900;letter-spacing:.04em;margin:0 0 10px}
.hero h1 em{font-style:normal;color:#ff2a40}
.lead{font-size:14px;line-height:1.7;color:#ddd;margin:0;max-width:40em}
.beginner{margin:10px 0 0;font-size:13px}
.beginner a{color:#fff;font-weight:700;text-underline-offset:3px}
.beginner a::after{content:" ＞"}
.sec-tool{padding-top:20px}
.sec-tool .sec-title{margin-bottom:20px;padding:8px 10px;border-width:4px;font-size:clamp(19px,4.6vw,28px)}
.steps{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px;counter-reset:st}
.steps li{background:var(--card);border:1px solid var(--line);padding:12px 14px 14px;font-size:13px;color:var(--muted);line-height:1.6;counter-increment:st}
.steps li::before{content:"0" counter(st);display:block;font:700 22px/1 var(--latin);color:var(--red);margin-bottom:6px}
.steps b{display:block;color:var(--text);font-size:14px;margin-bottom:2px}
@media (min-width:700px){.steps{grid-template-columns:repeat(4,1fr)}}

/* section heading (site style) */
.sec{padding:48px 0}
.sec-title{max-width:780px;margin:0 auto 32px;border-top:6px solid var(--bar);border-bottom:6px solid var(--bar);text-align:center;padding:14px 10px;font-size:clamp(22px,4.6vw,30px);font-weight:900;letter-spacing:.12em;line-height:1.5}
.sec-title span{color:var(--red)}

/* form */
.form{max-width:780px;margin:0 auto}
.field{margin:0 0 26px}
.field>.label{display:block;font-weight:700;font-size:16px;margin:0 0 10px;letter-spacing:.04em}
.hint{font-size:13px;color:var(--muted);margin:6px 0 0;line-height:1.7}
.seg{display:grid;gap:8px}
.seg2{grid-template-columns:1fr 1fr}
.seg3{grid-template-columns:repeat(3,1fr)}
.seg4{grid-template-columns:repeat(2,1fr)}
@media (min-width:600px){.seg4{grid-template-columns:repeat(4,1fr)}}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label{display:block;text-align:center;border:1px solid var(--text);padding:12px 6px;font-weight:700;cursor:pointer;letter-spacing:.06em;line-height:1.4}
.seg input:checked+label{background:var(--red);border-color:var(--red);color:#fff}
.seg input:focus-visible+label{outline:3px solid var(--red);outline-offset:2px}
.avgs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media (min-width:600px){.avgs{grid-template-columns:repeat(4,1fr)}}
.avg label{display:block;font-size:13px;color:var(--muted);margin:0 0 2px}
.avg input{width:100%;font:700 26px/1 var(--latin);padding:10px 12px;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:0}
.avg input:focus{border-color:var(--text);outline:none}
.avg input[aria-invalid="true"]{border-color:var(--red)}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.chk{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);padding:8px 14px;cursor:pointer;font-size:14px;letter-spacing:.04em}
.chk input{accent-color:var(--red);width:16px;height:16px;margin:0}
.error{color:var(--red);font-size:14px;font-weight:700;margin:0 0 12px}
.error:empty{display:none}
.btn-main{position:relative;display:block;width:100%;border:0;background:var(--red);color:#fff;font:700 18px/1 var(--sans);letter-spacing:.1em;padding:22px 44px;cursor:pointer;border-radius:4px}
.btn-main::after,.cat-btn::after{content:"";position:absolute;right:20px;top:50%;width:10px;height:10px;border-top:2px solid #fff;border-right:2px solid #fff;transform:translateY(-50%) rotate(45deg)}
.btn-main:hover,.cat-btn:hover{filter:brightness(1.12)}

/* result */
.board{max-width:780px;margin:0 auto;background:var(--black);color:#fff;display:grid;grid-template-columns:auto 1fr;gap:10px 24px;align-items:center;padding:24px}
.board .cap{grid-column:1/-1;margin:0;font-size:14px;font-weight:700;letter-spacing:.1em;color:#ccc}
.plate{background:#fff;min-width:130px;text-align:center;padding:6px 16px 2px}
.plate .n{font:700 84px/1 var(--latin);color:#000;display:block}
.plate .n.under{color:var(--red)}
.plate small{display:block;font-size:11px;color:#666;letter-spacing:.1em;padding-bottom:6px}
.side .rk-cap{font-size:13px;color:#aaa;letter-spacing:.1em;display:block}
.side .rk-name{font-size:32px;font-weight:900;letter-spacing:.1em;line-height:1.3;display:block}
.side .concept{font-size:14px;color:#ddd;display:block}
.range-line{grid-column:1/-1;margin:4px 0 0;border-top:1px solid #333;padding-top:12px;font-size:14px;color:#ddd}
.range-line b{font:700 22px/1 var(--latin);color:#fff}
.explain{max-width:780px;margin:16px auto 0;font-size:14px;background:var(--pale);padding:14px 16px}
.note{max-width:780px;margin:10px auto 0;font-size:12px;color:var(--muted)}
.summary{max-width:780px;margin:18px auto 0;display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0}
.summary a{display:inline-block;text-decoration:none;border:1px solid var(--text);padding:6px 14px;font-size:14px;font-weight:700}
.summary b{font:700 18px/1 var(--latin);color:var(--red);margin-left:6px}

/* list */
.fit{max-width:780px;margin:0 auto 8px;font-size:14px;color:var(--muted);text-align:center}
.group{margin:40px 0 0}
.group-title{font-size:20px;font-weight:900;letter-spacing:.08em;margin:0 0 4px;padding-left:12px;border-left:6px solid var(--red);line-height:1.4}
.group-desc{margin:0 0 8px;font-size:14px;color:var(--muted)}
.tour{border-bottom:1px solid var(--line);padding:24px 0}
.tour h3{font-size:clamp(18px,3.6vw,24px);font-weight:900;letter-spacing:.06em;margin:0 0 6px;line-height:1.5}
.tour h3 a{text-decoration:none}
.tour h3 a:hover{text-decoration:underline}
.sched{font-size:15px;margin:0 0 10px;letter-spacing:.04em}
.tagrow{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.tagrow .lab{background:#777;color:#fff;font-weight:700;font-size:13px;letter-spacing:.2em;padding:5px 14px}
.tagrow .val{border:1px solid #999;font-size:13px;letter-spacing:.1em;padding:4px 14px}
.cats{display:grid;grid-template-columns:1fr;gap:10px;width:100%}
@media (min-width:600px){.cats{grid-template-columns:repeat(2,1fr)}}
@media (min-width:900px){.cats{grid-template-columns:repeat(3,1fr)}}
.cat-btn{position:relative;display:block;background:var(--red);color:#fff;text-decoration:none;border-radius:4px;padding:14px 44px 14px 18px;font-size:15px;letter-spacing:.08em;line-height:1.5;min-height:60px}
.cat-btn small{display:block;font-size:12px;opacity:.85;letter-spacing:.04em}
.cat-off{display:block;border:1px solid var(--line);color:var(--muted);border-radius:4px;padding:14px 18px;font-size:15px;letter-spacing:.06em;line-height:1.5}
.cat-off small{display:block;font-size:12px}
.over-note{margin:10px 0 0;font-size:13px;font-weight:700}
.empty{background:var(--pale);padding:16px 18px;font-size:14px;margin:12px 0 0}
details.more{margin:36px 0 0;border-top:1px solid var(--line)}
details.more summary{cursor:pointer;font-weight:700;padding:16px 0;letter-spacing:.06em}
details.more .group-desc{margin-top:0}
.more-body{display:block;width:100%}
.cat-btn,.cat-off{width:100%;box-sizing:border-box}

/* guide */
.guide{background:var(--pale)}
.guide h3{font-size:18px;font-weight:900;letter-spacing:.06em;margin:32px 0 8px;padding-left:12px;border-left:6px solid var(--red)}
.guide p{margin:0 0 10px}
.guide .inner{max-width:780px;margin:0 auto}
.flow{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
@media (min-width:600px){.flow{grid-template-columns:repeat(3,1fr)}}
.flow li{background:var(--card);border:1px solid var(--line);padding:12px 14px;font-size:14px}
.flow b{display:block;color:var(--red)}
.ladder{list-style:none;margin:10px 0 0;padding:0;background:var(--card);border:1px solid var(--line)}
.ladder li{display:grid;grid-template-columns:110px 1fr;gap:2px 14px;padding:12px 14px;border-bottom:1px solid var(--line)}
.ladder li:last-child{border-bottom:0}
.ladder .rk{grid-row:1/3;align-self:center;text-align:center;background:var(--black);color:#fff;font-weight:900;letter-spacing:.1em;padding:6px 4px;font-size:14px}
.ladder li:first-child .rk{background:var(--red)}
.ladder b{font-size:15px}
.ladder span{font-size:13px;color:var(--muted)}
.terms dt{font-weight:700;margin-top:12px}
.terms dd{margin:2px 0 0;color:var(--muted);font-size:15px}
.links{list-style:none;padding:0;margin:10px 0 0}
.links a{position:relative;display:block;background:var(--card);border:1px solid var(--line);padding:12px 40px 12px 14px;margin-bottom:8px;text-decoration:none;font-size:14px;font-weight:700}
.links a::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-top:2px solid var(--red);border-right:2px solid var(--red);transform:translateY(-50%) rotate(45deg)}

/* footer */
.site-foot{background:var(--black);color:#ccc;padding:32px 0 40px;font-size:13px}
.site-foot ul{list-style:none;padding:0;margin:0 0 18px;display:flex;flex-wrap:wrap;gap:6px 18px}
.site-foot a{color:#fff;text-decoration:none}
.site-foot p{margin:4px 0}
@media (prefers-reduced-motion:no-preference){
  .board.reveal .plate{animation:flip .5s ease-out}
  @keyframes flip{from{transform:rotateX(90deg)}to{transform:none}}
}

@media (max-width:599px){
  .site-head .wrap{padding-top:10px;padding-bottom:10px}
  .logo img{height:40px}
  .head-btn{width:48px;height:48px;font-size:13px}
}

.filters{border:1px solid var(--text);margin:0 0 24px}
.filters summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:14px 44px 14px 16px;position:relative;font-weight:700;letter-spacing:.06em}
.filters summary::-webkit-details-marker{display:none}
.filters summary::after{content:"";position:absolute;right:20px;top:50%;width:9px;height:9px;border-right:2px solid var(--red);border-bottom:2px solid var(--red);transform:translateY(-70%) rotate(45deg);transition:transform .2s}
.filters[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.f-state{font-size:13px;font-weight:500;color:var(--muted);letter-spacing:.02em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.f-body{padding:4px 16px 0;border-top:1px solid var(--line)}
.f-body .field{margin:16px 0 20px}

/* ---- 仲間に送る ---- */
.btn-line,.btn-copy,.st-line,.st-other{font-family:var(--sans);cursor:pointer;font-weight:700;letter-spacing:.06em;border-radius:4px}
.btn-line{background:#06c755;color:#fff;border:0;padding:14px 16px;font-size:15px}
.btn-copy{background:var(--card);color:var(--text);border:1px solid var(--text);padding:13px 16px;font-size:15px}
.share{padding-top:8px}
.share-box{max-width:780px;margin:0 auto;border:1px solid var(--line);background:var(--card);text-align:center;padding:28px 20px}
.share-lead{margin:0;color:var(--red);font-weight:900;letter-spacing:.1em}
.share-title{margin:0 0 10px;font-size:clamp(20px,4.6vw,26px);font-weight:900;letter-spacing:.08em;line-height:1.5}
.share-text{margin:0 auto 18px;font-size:14px;color:var(--muted);max-width:34em;text-align:left}
.share-btns{display:grid;gap:10px;max-width:420px;margin:0 auto}
.share-mini{max-width:780px;margin:14px auto 0;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:6px 8px}
.share-mini span{grid-column:1/-1;font-size:13px;font-weight:700}
@media (min-width:600px){.share-mini{grid-template-columns:auto 160px 160px;justify-content:start}.share-mini span{grid-column:auto;margin-right:6px}}
.share-mini .btn-line,.share-mini .btn-copy{padding:8px 14px;font-size:13px}
.tour-lp{position:relative;display:block;background:var(--black);color:#fff;text-decoration:none;padding:16px 44px 16px 18px;margin:0 0 8px;font-weight:900;letter-spacing:.08em;border-left:6px solid var(--red)}
.tour-lp small{display:block;font-weight:500;font-size:12px;color:#ccc;letter-spacing:.02em;margin-top:2px}
.tour-lp::after{content:"";position:absolute;right:20px;top:50%;width:9px;height:9px;border-top:2px solid #fff;border-right:2px solid #fff;transform:translateY(-50%) rotate(45deg)}
/* 追従ボタン */
.sticky{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;align-items:stretch;gap:10px;background:rgba(0,0,0,.92);padding:10px 12px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));transform:translateY(110%);transition:transform .25s ease;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.sticky.show{transform:none}
.st-share{flex:1 1 auto;display:grid;grid-template-columns:1fr 1fr;gap:6px;min-width:0}
.st-cap{grid-column:1/-1;color:#ccc;font-size:11px;font-weight:700;letter-spacing:.1em;line-height:1.2}
.st-line{background:#06c755;color:#fff;border:0;font-size:13px;padding:12px 4px}
.st-other{background:transparent;color:#fff;border:1px solid #777;font-size:13px;padding:12px 4px}
.st-main{flex:0 0 42%;display:flex;align-items:center;justify-content:center;background:var(--red);color:#fff;text-decoration:none;font-weight:900;letter-spacing:.1em;border-radius:4px;font-size:15px}
body.has-sticky{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
@media (min-width:700px){
  .sticky{justify-content:center}
  .st-share{flex:0 1 360px}
  .st-main{flex:0 0 220px}
}
.toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:#222;color:#fff;font-size:14px;padding:10px 18px;border-radius:4px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:60}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){.sticky,.toast{transition:none}}
