/* 自動生成: tools/build.py — 複数ページで共有 */
:root{--fs-xs:12px;--fs-sm:13px;--fs-base:15px;--fs-md:16px;--fs-lg:19px;--fs-xl:23px;--fs-2xl:28px;--lh-tight:1.28;--lh-snug:1.55;--lh-normal:1.75;--lh-loose:1.9;--tr-wide:.14em;--tr-mono:.04em}.pp-hero{padding:40px 0 30px;border-bottom:1px solid var(--line)}.pp-crumb{font-family:var(--mono);font-size:var(--fs-sm);color:var(--ink-faint);letter-spacing:.07em;margin-bottom:24px;line-height:1.6}.pp-crumb a{color:var(--ink-faint);text-decoration:none}.pp-crumb a:hover{color:var(--accent)}.pp-crumb .sep{opacity:.45;margin:0 7px}.pp-crumb .cur{color:var(--ink-dim)}.pp-top{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;align-items:start}@media(max-width:900px){.pp-top{grid-template-columns:1fr;gap:28px}}.photo{position:relative;aspect-ratio:4/3;border:1px solid var(--line-bright);border-radius:var(--radius);background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center}.photo-img{width:100%;height:100%;object-fit:contain;display:block;padding:14px}.photo-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;background:radial-gradient(120% 90% at 30% 20%,color-mix(in srgb,var(--accent) 16%,var(--panel-2)),var(--panel))}.photo .frameguide{position:absolute;inset:14px;border:1px dashed var(--line-bright);border-radius:2px;z-index:1}.photo .chip{position:relative;width:44%;aspect-ratio:1;border-radius:6px;background:linear-gradient(150deg,#20272f,#0e1319);border:1px solid var(--line-bright);box-shadow:inset 0 0 0 6px rgba(0,0,0,.35),0 8px 24px rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:2}.photo .chip .soc-tag{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--accent);text-align:center;padding:0 8px;line-height:1.5}.photo .ph-label{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:var(--tr-wide);color:var(--ink-faint);text-transform:uppercase;text-align:center;z-index:2}.cat-line{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.tag-cat{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));padding:4px 10px;border-radius:3px;line-height:1.4;white-space:nowrap}.pp-headline h1{font-size:var(--fs-2xl);line-height:var(--lh-tight);letter-spacing:-.015em;margin:0 0 10px;font-weight:700;text-wrap:balance}.pp-headline .code{font-family:var(--mono);font-size:var(--fs-sm);color:var(--ink-faint);letter-spacing:var(--tr-mono);margin-bottom:16px;line-height:1.7;overflow-wrap:anywhere}.pp-headline .code .pn{color:var(--accent);font-weight:600}.pp-headline .subtitle{color:var(--ink-dim);font-size:var(--fs-base);margin-bottom:24px;max-width:46ch;line-height:var(--lh-normal)}.keyfacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:24px}.keyfacts div{background:var(--panel);padding:14px 16px;min-width:0}.keyfacts .k{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:7px;line-height:1.4}.keyfacts .v{font-size:var(--fs-base);font-weight:600;overflow-wrap:anywhere;line-height:1.5}.keyfacts .v.mono{font-family:var(--mono);font-size:14px;letter-spacing:var(--tr-mono)}.cta-row{display:flex;gap:10px;flex-wrap:wrap}.ds{padding:30px 0;border-bottom:1px solid var(--line)}.ds h2{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:var(--tr-wide);text-transform:uppercase;color:var(--ink-faint);margin:0 0 18px;line-height:1.5;font-weight:600}.ds p{margin:0}.ds-body{color:var(--ink-dim);line-height:var(--lh-loose);font-size:var(--fs-base);max-width:76ch}.spec-list{display:grid;grid-template-columns:minmax(140px,190px) 1fr;gap:0}@media(max-width:640px){.spec-list{grid-template-columns:1fr}}.spec-list dt{font-family:var(--mono);font-size:var(--fs-sm);color:var(--ink-faint);letter-spacing:var(--tr-mono);padding:12px 20px 12px 0;border-bottom:1px solid var(--line);line-height:var(--lh-snug)}.spec-list dd{margin:0;color:var(--ink-dim);font-size:14.5px;line-height:var(--lh-normal);padding:12px 0;border-bottom:1px solid var(--line);max-width:72ch;overflow-wrap:anywhere}@media(max-width:640px){.spec-list dt{padding-bottom:4px;border-bottom:none}.spec-list dd{padding-top:0}}.tags{display:flex;flex-wrap:wrap;gap:7px}.tags .tag{font-size:var(--fs-sm);background:var(--panel-2);border:1px solid var(--line);padding:5px 12px;border-radius:20px;color:var(--ink-dim);font-family:var(--mono);letter-spacing:var(--tr-mono);line-height:1.5}.ds-note{color:var(--ink-faint);font-size:var(--fs-sm);margin-top:14px;line-height:var(--lh-normal);max-width:72ch}.btn{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:500;padding:11px 20px;border:1px solid var(--line-bright);border-radius:var(--radius);color:var(--ink);background:var(--panel-2);cursor:pointer;text-decoration:none;transition:.15s;line-height:1.4;letter-spacing:.01em}.btn:hover{border-color:var(--accent);background:var(--panel)}.btn.solid{background:var(--accent);color:#0d1117;border-color:var(--accent);font-weight:600}.btn.solid:hover{filter:brightness(1.08)}.xsell{margin-top:0}.xs-lead{color:var(--ink-dim);font-size:14.5px;line-height:var(--lh-normal);margin:0 0 18px;max-width:74ch}.rel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:12px}.rel-card{display:block;background:var(--panel);border:1px solid var(--line-bright);border-left:3px solid var(--accent);border-radius:var(--radius);padding:14px 15px;text-decoration:none;transition:.15s;min-width:0}.rel-card:hover{background:var(--panel-2);transform:translateY(-2px)}.rc-cat{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:7px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rc-name{font-size:14px;font-weight:600;color:var(--ink);line-height:1.45;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.rc-tops{font-family:var(--mono);font-size:12px;color:var(--ink-faint);letter-spacing:var(--tr-mono);line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xs-hint{color:var(--ink-faint);font-size:var(--fs-sm);line-height:var(--lh-normal);margin-top:16px}.xs-hubs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.xs-hub{font-family:var(--mono);font-size:12.5px;padding:6px 12px;border-radius:20px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink-dim);text-decoration:none;line-height:1.5;transition:.15s}.xs-hub:hover{border-color:var(--accent);color:var(--ink)}.pp-footer{padding:26px 0;border-top:1px solid var(--line);color:var(--ink-faint);font-size:var(--fs-sm);line-height:1.7}.pp-footer .fl{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:12px}.pp-footer .fl a{color:var(--ink-faint);text-decoration:none}.pp-footer .fl a:hover{color:var(--accent)}