:root{--purple:#68517e}.vibration{max-width:1320px;margin:auto;padding:0 48px}.breadcrumbs{font-size:.8rem;padding-top:25px;color:var(--muted)}.project-hero{display:grid;grid-template-columns:1fr 1fr;gap:58px;align-items:center;padding:45px 0 55px}.project-hero h1{font-size:clamp(2.5rem,4.8vw,4.4rem);line-height:1.07;letter-spacing:-2.7px;margin:20px 0 26px}.project-hero h1 em{color:var(--purple)}.project-hero figure{background:#e5e0ec;padding:14px;border-radius:12px}.project-hero img{height:485px;width:100%;object-fit:cover;object-position:center 62%}.project-hero figcaption{font-size:.78rem;line-height:1.55;padding:14px 8px 4px}.project-hero figcaption b{font-size:.65rem;letter-spacing:1.6px}.tags{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}.tags span{border:1px solid #d4cbdc;border-radius:30px;padding:4px 12px;font-size:.72rem;font-weight:bold}.plain{display:inline-block;font-size:.85rem;margin-left:14px}.meta{font-size:.78rem;color:var(--muted);margin-top:20px}.intro-band{border-block:1px solid var(--line);display:flex;justify-content:space-between;gap:14px;padding:22px 0;font-size:.85rem}.intro-band b{color:var(--purple)}.article-grid{display:grid;grid-template-columns:225px minmax(0,1fr);gap:65px;padding:55px 0}.contents{position:sticky;top:25px;align-self:start}.contents nav{display:flex;flex-direction:column;gap:0}.contents nav a{font-size:.78rem;line-height:1.5;padding:10px 0;border-bottom:1px solid var(--line);font-weight:500}.article-body{max-width:845px;min-width:0}.article-body section{padding:0 0 48px;scroll-margin-top:25px}.article-body h2{font-size:2rem;border-top:1px solid var(--line);padding-top:28px;letter-spacing:-.7px}.article-body h3{margin-top:34px}.article-body p,.article-body li{overflow-wrap:anywhere}.article-body li{margin-bottom:12px}.article-body code{font-size:.9em}.article-body pre{max-width:100%}.chain{display:flex;align-items:center;gap:8px;background:#e8eddf;border-radius:10px;padding:22px;margin:25px 0;justify-content:space-between}.chain div{min-width:0}.chain small{display:block;font-size:.7rem}.chain>span{font-size:.65rem;white-space:nowrap}.branch{border-left:3px solid var(--purple);padding-left:18px}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}.photo-pair img{height:235px;width:100%;object-fit:cover;object-position:center 65%}.photo-pair figcaption,.phone figcaption{font-size:.78rem;color:var(--muted);line-height:1.6;margin-top:12px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;padding:22px 0;margin:20px 0;border-block:1px solid var(--line)}.metrics b{display:block;font-size:2rem;color:var(--purple);line-height:1.4}.metrics span{font-size:.75rem}.code-map{border-left:3px solid var(--purple);padding:8px 22px;background:#eeebf1}.code-map p{margin:8px 0;font-size:.86rem}.app-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:32px}.phone{margin:0}.phone img{border:7px solid #173b33;border-radius:24px;width:100%;height:auto}.formula{padding:24px;background:#e9e3f0;color:#49385d;border-radius:8px;font-weight:bold;margin:24px 0}.downloads{display:flex;flex-wrap:wrap;gap:12px}.secondary{background:var(--purple)}details{border:1px solid var(--line);border-radius:8px;padding:18px;margin:25px 0}summary{cursor:pointer;font-weight:bold}details pre{font-size:.73rem}.next{border-top:1px solid var(--line);text-align:center;padding:45px 0 60px}.next h2{font-family:Georgia,serif;font-weight:400}.table-wrap{max-width:100%;overflow:auto}figure img{background:#e9e3f0}@media(max-width:1050px){.project-hero{gap:30px}.article-grid{grid-template-columns:180px minmax(0,1fr);gap:32px}.app-layout{grid-template-columns:1fr}.phone{max-width:340px;margin:15px auto}.intro-band span{display:none}}@media(max-width:760px){.vibration{padding:0 22px}.project-hero{grid-template-columns:1fr;padding-top:30px}.project-hero h1{letter-spacing:-1.5px}.project-hero img{height:360px}.article-grid{display:block;padding-top:30px}.contents{position:static;margin-bottom:35px;background:#e8eddf;padding:20px;border-radius:8px}.contents nav{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.article-body h2{font-size:1.65rem}.photo-pair{gap:12px}.photo-pair img{height:175px}.chain{flex-wrap:wrap;gap:14px}.metrics{gap:10px}.metrics b{font-size:1.5rem}.plain{margin-left:0}.article-body section{padding-bottom:28px}.intro-band{font-size:.8rem}}@media print{header,.contents,.downloads,footer,.next{display:none}.vibration{padding:0}.article-grid{display:block}.project-hero img{height:260px}details{display:none}}
