:root{--washi:#fffef2;--washi-2:#f3f0e2;--ink:#2b2a26;--moss:#5f5b50;--mist:#8a857a;--hair:#dedacb;--seal:#8a6431;--night:#252420;--on-night:#f6f4e8;--serif:"Source Serif 4","Iowan Old Style",Georgia,serif;--sans:"Hanken Grotesk","Helvetica Neue",system-ui,sans-serif;--ease:cubic-bezier(.16,1,.3,1);color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--washi);color:var(--ink);font:400 17px/1.7 var(--sans);-webkit-font-smoothing:antialiased;margin:0}::selection{background:var(--ink);color:var(--washi)}a{color:inherit;text-underline-offset:.25em;text-decoration-thickness:1px}:focus-visible{outline:2px solid var(--seal);outline-offset:4px}h1,h2{font-family:var(--serif);text-wrap:balance;letter-spacing:-.005em;font-variation-settings:"opsz" 60;margin:0;font-weight:300}h1{font-size:clamp(2.3rem,5.6vw,4.6rem);line-height:1.25}h2{font-size:clamp(1.7rem,3vw,2.5rem);line-height:1.3}p{margin:0}.skip{background:var(--ink);color:var(--washi);z-index:10;padding:10px 14px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.col{max-width:640px;margin:0 auto;padding-inline:24px}.lead{color:var(--moss);max-width:44ch;font-size:1.12rem}.small{color:var(--moss);font-size:14px}html,body{height:100%;overflow:hidden}.app{grid-template-rows:auto minmax(0,1fr) auto;height:100dvh;display:grid}.top{justify-content:space-between;align-items:center;gap:16px;padding:clamp(14px,2.4vh,26px) clamp(20px,5vw,64px);display:flex}.mark{font:400 1.35rem/1 var(--serif);letter-spacing:-.01em;text-decoration:none}.tabs{flex-wrap:wrap;justify-content:center;gap:4px clamp(14px,3vw,36px);display:flex}.tabs button{font:500 14px var(--sans);letter-spacing:.02em;color:var(--moss);cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;padding:6px 0;transition:color .3s,border-color .3s}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--ink);border-bottom-color:var(--seal)}.where{letter-spacing:.02em;color:var(--mist);font-variant-numeric:tabular-nums;font-size:13px}.stage{min-height:0;position:relative}.screen{opacity:0;visibility:hidden;transition:opacity .7s var(--ease),transform .7s var(--ease),visibility 0s .7s;align-items:center;padding:0 clamp(20px,6vw,96px);display:grid;position:absolute;inset:0;overflow:auto;transform:translateY(10px)}.screen.active{opacity:1;visibility:visible;transition-delay:0s;transform:none}.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:center;gap:clamp(24px,6vw,110px)}.two .l{justify-self:end;max-width:34rem}.two .r{max-width:34rem}@media (width<=820px){.two{grid-template-columns:1fr;align-content:start;gap:20px;padding-top:8px;padding-bottom:24px}.two .l,.two .r{justify-self:stretch;max-width:none}}.intro{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:32px}@media (width<=820px){.intro{grid-template-columns:1fr;align-content:center}.intro-fig{display:none}}.intro-fig{justify-self:center;width:auto;height:min(62vh,520px)}.intro-in{justify-items:start;display:grid}.intro .lead{margin-top:clamp(14px,3vh,28px)}.go{font:500 15px var(--sans);letter-spacing:.02em;color:var(--ink);border:0;border-bottom:1px solid var(--ink);cursor:pointer;background:0 0;margin-top:clamp(20px,5vh,44px);padding:6px 0}.go span{transition:transform .4s var(--ease);display:inline-block}.go:hover span{transform:translate(5px)}.three{gap:clamp(16px,4vh,34px);margin:0;padding:0;list-style:none;display:grid}.three li{border-left:1px solid var(--seal);color:var(--moss);padding-left:24px}.three b{font:500 1.15rem/1.5 var(--serif);color:var(--ink);margin-bottom:4px;display:block}.count{letter-spacing:.02em;color:var(--mist);margin-bottom:12px;font-size:13px}.step h2{margin-bottom:clamp(12px,2.6vh,22px)}.text{max-width:52ch}.note{color:var(--seal);border-left:1px solid var(--seal);margin-top:clamp(14px,3vh,28px);padding-left:16px;font-size:15px}.bignum{font:400 clamp(8rem,38vh,20rem)/1 var(--serif);color:var(--ink);opacity:.9;text-align:center}@media (width<=820px){.bignum{display:none}}.fig{margin:0}.fig svg{width:100%;max-width:460px;height:auto;max-height:42vh;display:block;overflow:visible}.fig figcaption{color:var(--moss);margin-top:14px;font-size:14px}.wood{fill:var(--washi-2)}.cut{fill:var(--washi)}.line{fill:none;stroke:var(--ink);stroke-width:1.5px}.dim{fill:none;stroke:var(--mist);stroke-width:1px}.fig text{font:400 8px var(--sans);fill:var(--moss);letter-spacing:.02em}.fig text.in{fill:var(--ink);font-size:9px}.fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;display:grid}.calc label{color:var(--moss);gap:2px;font-size:13px;display:grid}.u{border-bottom:1px solid var(--ink);color:var(--moss);align-items:baseline;gap:8px;display:flex}.calc input{width:100%;min-width:0;font:400 1.4rem/1.4 var(--serif);color:var(--ink);font-variant-numeric:tabular-nums;background:0 0;border:0;padding:0}.calc input:focus-visible{outline:none}.u:focus-within{border-color:var(--seal)}.out{grid-template-columns:minmax(0,min(150px,22vh)) minmax(0,1fr);align-items:center;gap:20px;margin-top:clamp(14px,3vh,28px);display:grid}#plan,#pplan{background:var(--washi-2);width:100%;height:auto}.p-o{fill:var(--ink)}.p-i{fill:var(--washi)}.p-m{stroke:var(--washi);stroke-width:1px;fill:none;opacity:.7}dl{gap:8px;margin:0;display:grid}dl div{border-bottom:1px solid var(--hair);justify-content:space-between;gap:12px;padding-bottom:6px;display:flex}dt{color:var(--moss);font-size:13px}dd{font:400 1.05rem/1.4 var(--serif);font-variant-numeric:tabular-nums;text-align:right;margin:0}.calc .small{margin-top:12px}.list{margin:clamp(14px,3vh,28px) 0 0;padding:0;list-style:none}.list li{border-top:1px solid var(--hair);gap:0;padding:clamp(8px,1.6vh,14px) 0;line-height:1.5;display:grid}.list li:last-child{border-bottom:1px solid var(--hair)}.list b{font:500 1.05rem/1.5 var(--serif)}.list span{color:var(--moss);font-size:14.5px}.mat .list{margin:0}#pcalc{max-width:34rem}#p-verdict{margin-top:clamp(14px,3vh,28px)}.list em{font:400 12.5px var(--sans);color:var(--seal);letter-spacing:.04em;margin-top:2px;font-style:normal}.mat .list li{padding:clamp(7px,1.4vh,12px) 0}.mat .list span{font-size:14px;line-height:1.5}.list a{border-bottom:1px solid var(--hair-line,#bdb9aa);text-decoration:none}.list a:hover{border-bottom-color:var(--seal)}.list a:after{content:" ↗";color:var(--mist);font-size:.8em}.vids{grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;gap:clamp(10px,2.4vh,22px) 20px;display:grid;max-width:none!important}.vid{margin:0;position:relative}.vplay{aspect-ratio:16/9;background:var(--night);cursor:pointer;border:0;width:100%;padding:0;display:block;position:relative;overflow:hidden}.vplay img{object-fit:cover;opacity:.88;width:100%;height:100%;transition:opacity .5s,transform .8s var(--ease);display:block}.vplay:hover img{opacity:1;transform:scale(1.03)}.tri{border:1px solid var(--on-night);background:#1c211e8c;border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px;position:absolute;top:50%;left:50%}.tri:after{content:"";border-left:12px solid var(--on-night);border-top:8px solid #0000;border-bottom:8px solid #0000;position:absolute;top:13px;left:17px}.vid iframe{aspect-ratio:16/9;z-index:2;border:0;width:100%;position:absolute;top:0;left:0}.vid.playing .vplay{visibility:hidden}.vid figcaption{margin-top:6px;line-height:1.4;display:grid}.vid figcaption b{font:500 .95rem/1.35 var(--serif)}.vid figcaption span{color:var(--moss);font-size:12.5px}.vnote{margin-top:clamp(14px,3vh,28px)}@media (width<=820px){.vids{grid-template-columns:1fr 1fr}}@media (width<=480px){.vids{grid-template-columns:1fr}}.close{text-align:center;justify-items:center;gap:8px;display:grid}.closing{font:400 clamp(1.5rem,3vw,2.3rem)/1.3 var(--serif)}.credit{margin-top:clamp(16px,5vh,48px)}.bar{border-top:1px solid var(--hair);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(12px,3vw,40px);padding:clamp(12px,2vh,22px) clamp(20px,5vw,64px);display:grid}.nb{font:500 15px var(--sans);letter-spacing:.02em;color:var(--ink);cursor:pointer;background:0 0;border:0;min-width:84px;padding:10px 4px}.nb:first-child{text-align:left}.nb:last-child{text-align:right}.nb:hover:not(:disabled){text-underline-offset:.3em;text-decoration:underline}.nb:disabled{opacity:.3;cursor:default}.prog{align-items:center;gap:4px;display:flex}.prog i{background:var(--hair);cursor:pointer;flex:1;height:2px;transition:background .5s;position:relative}.prog i:after{content:"";position:absolute;inset:-10px 0}.prog i.done{background:var(--ink)}@media (width<=700px){.top{flex-wrap:wrap;row-gap:6px}.tabs{order:3;justify-content:space-between;width:100%}.where{margin-left:auto}}@media (prefers-reduced-motion:reduce){.screen{transition:none}}.assemble .r{justify-self:center;place-items:center;max-width:none;display:grid}.asm{--gap:40px;--ease2:cubic-bezier(.16,1,.3,1);width:100%;max-width:500px;height:auto;max-height:calc(100dvh - 240px);overflow:visible}.asm[data-stage="1"]{--gap:14px}.asm[data-stage="2"],.asm[data-stage="3"],.asm[data-stage="4"],.asm[data-stage="5"],.asm[data-stage="6"]{--gap:0px}.asm path,.asm rect,.asm circle,.asm g{transition:transform 1.3s var(--ease2),opacity .9s ease}.a-top,.a-bot,.a-left,.a-right{fill:#cbb38c;stroke:var(--ink);stroke-width:1.4px;stroke-linejoin:round}.a-bot{fill:#bfa67e}.a-left{fill:#c4ab83}.a-right{fill:#b8a078}.a-top{transform:translateY(calc(var(--gap) * -1))}.a-bot{transform:translateY(var(--gap))}.a-left{transform:translateX(calc(var(--gap) * -1))}.a-right{transform:translateX(var(--gap))}.a-glue circle{fill:var(--seal);opacity:0}.asm[data-stage="1"] .a-glue circle{opacity:1}.a-clamp{fill:none;stroke:#3c4a42;stroke-width:5px;opacity:0}.a-buckle{fill:#3c4a42;opacity:0}.asm[data-stage="2"] .a-clamp,.asm[data-stage="2"] .a-buckle{opacity:1}.a-glass{fill:#82aab238;stroke:#6e8b90;stroke-width:1.2px;opacity:0;transform:translateY(-70px)}.asm[data-stage="3"] .a-glass,.asm[data-stage="4"] .a-glass,.asm[data-stage="5"] .a-glass,.asm[data-stage="6"] .a-glass{opacity:1;transform:none}.a-pic{fill:#dad3bc;opacity:0;transform:translate(90px)}.a-pic-art{opacity:0;transform:translate(90px)}.a-pic-art circle{fill:var(--seal)}.a-pic-art path{fill:none;stroke:var(--ink);stroke-width:1.4px}.asm[data-stage="4"] .a-pic,.asm[data-stage="5"] .a-pic,.asm[data-stage="6"] .a-pic,.asm[data-stage="4"] .a-pic-art,.asm[data-stage="5"] .a-pic-art,.asm[data-stage="6"] .a-pic-art{opacity:1;transform:none}.a-back rect{fill:#b89f78;stroke:var(--ink);stroke-width:1.2px}.a-pts{fill:none;stroke:var(--ink);stroke-width:3px;stroke-linecap:round}.a-back{opacity:0;transition:opacity 10ms}.asm[data-stage="5"] .a-back,.asm[data-stage="6"] .a-back{opacity:1;transition:opacity 10ms .5s}.a-wire{opacity:0}.a-wire circle{fill:none;stroke:var(--ink);stroke-width:2px}.a-wire path{fill:none;stroke:var(--ink);stroke-width:1.4px}.asm[data-stage="6"] .a-wire{opacity:1;transition:opacity 1s .6s}.obj{transform-origin:155px 160px;transform-box:view-box}.asm[data-stage="5"] .obj{animation:flip 1s var(--ease2)}@keyframes flip{0%{transform:scaleX(1)}50%{transform:scaleX(.02)}to{transform:scaleX(1)}}.acap{border-left:1px solid var(--seal);gap:6px;min-height:6.2rem;margin-top:clamp(14px,3vh,28px);padding-left:16px;display:grid}.acap b{font:500 1.2rem/1.4 var(--serif)}.acap span{color:var(--moss);max-width:40ch}.actl{flex-wrap:wrap;align-items:center;gap:6px 20px;margin-top:clamp(12px,2.4vh,22px);display:flex}.adots{gap:6px;display:flex}.adot{cursor:pointer;background:0 0;border:0;width:22px;height:22px;padding:0;position:relative}.adot:after{content:"";background:var(--hair);width:16px;height:2px;transition:background .4s;position:absolute;top:10px;left:3px}.adot.past:after{background:var(--moss)}.adot.on:after{background:var(--seal)}.alink{font:500 14px var(--sans);letter-spacing:.02em;border:0;border-bottom:1px solid var(--ink);color:var(--ink);cursor:pointer;background:0 0;padding:4px 0}@media (prefers-reduced-motion:reduce){.asm *{transition:none!important;animation:none!important}}.pl-rail rect{fill:#d8cbb0;stroke:var(--ink);stroke-width:1.2px}.pl-corner path{fill:#8f7b58;stroke:var(--ink);stroke-width:1.2px}.pl-dowel{fill:none;stroke:var(--seal);stroke-width:2.4px;stroke-linecap:round}.pl-pic{fill:var(--washi-2);stroke:var(--hair)}.fig svg text{font-size:12px}.asm2{--gap:55px;max-width:420px;max-height:calc(100dvh - 190px)}.asm2[data-stage="1"]{--gap:20px}.asm2[data-stage="2"],.asm2[data-stage="3"],.asm2[data-stage="4"],.asm2[data-stage="5"],.asm2[data-stage="6"],.asm2[data-stage="7"]{--gap:0px}.m-rails rect,.m-corners path{stroke:var(--ink);stroke-width:1.4px}.m-rails rect{fill:#d8cbb0}.m-corners path{fill:#8f7b58}.m-top{transform:translateY(calc(var(--gap) * -1))}.m-bot{transform:translateY(var(--gap))}.m-left{transform:translateX(calc(var(--gap) * -1))}.m-right{transform:translateX(var(--gap))}.m-dowel{fill:none;stroke:var(--seal);stroke-width:3px;stroke-linecap:round;opacity:0}.asm2[data-stage="1"] .m-dowel{opacity:1}.asm2[data-stage="2"] .m-dowel{opacity:.35}.m-glue circle{fill:var(--seal);opacity:0}.asm2[data-stage="1"] .m-glue circle{opacity:1}.m-diag{fill:none;stroke:var(--moss);stroke-width:1.4px;stroke-dasharray:6 6;opacity:0}.asm2[data-stage="2"] .m-diag{opacity:1}.m-glass{fill:#82aab240;stroke:#6e8b90;stroke-width:1.4px;opacity:0;transform:translateY(-90px)}.m-pic{opacity:0;transform:translate(100px)}.m-pic rect{fill:#dad3bc;stroke:var(--ink);stroke-width:1px}.m-pic circle{fill:var(--seal)}.m-pic path{fill:none;stroke:var(--ink);stroke-width:1.4px}.m-back rect{fill:#9ca48f;stroke:var(--ink);stroke-width:1px;opacity:0;transform:translateY(70px)}.asm2[data-stage="3"] .m-glass,.asm2[data-stage="4"] .m-glass,.asm2[data-stage="5"] .m-glass,.asm2[data-stage="6"] .m-glass,.asm2[data-stage="7"] .m-glass,.asm2[data-stage="4"] .m-pic,.asm2[data-stage="5"] .m-pic,.asm2[data-stage="6"] .m-pic,.asm2[data-stage="7"] .m-pic{opacity:1;transform:none}.asm2[data-stage="5"] .m-back rect,.asm2[data-stage="6"] .m-back rect,.asm2[data-stage="7"] .m-back rect{opacity:1;transition-delay:var(--d);transform:none}.m-btns{opacity:0}.asm2[data-stage="6"] .m-btns,.asm2[data-stage="7"] .m-btns{opacity:1}.m-btn{transform-box:fill-box;transform-origin:50%;transform:rotate(var(--rest))}.asm2[data-stage="6"] .m-btn,.asm2[data-stage="7"] .m-btn{transform:rotate(var(--act));transition-delay:.5s}.m-btn rect{fill:var(--seal);stroke:none}.m-btn circle{fill:var(--washi)}.m-wire{opacity:0}.m-wire circle,.m-wire path{fill:none;stroke:var(--ink);stroke-width:2px}.asm2[data-stage="7"] .m-wire{opacity:1;transition:opacity 1s .5s}.plates li{grid-template-columns:72px 1fr;align-items:center;gap:0 16px}.plates img{border:1px solid var(--hair);width:72px;height:72px;display:block}.plates li>div{gap:0;display:grid}.plates em a{color:var(--seal);border-bottom:1px solid;text-decoration:none}.plates em a:after{content:none}.routes em button{font:500 14px var(--sans);color:var(--ink);border:0;border-bottom:1px solid var(--ink);cursor:pointer;background:0 0;padding:2px 0}.routes em button:hover{color:var(--seal);border-color:var(--seal)}.routes li{padding-block:clamp(12px,2.4vh,20px)}.orn{opacity:0;transition:opacity .6s}.has-orn .orn{opacity:1}.orn-body{fill:#3f4a52;stroke:var(--ink);stroke-width:.8px}.orn-hole{fill:var(--washi-2);stroke:none}.fig .alink{margin-top:14px}.routes em a,.note a{color:var(--ink);border-bottom:1px solid var(--ink);text-decoration:none}.routes em a:hover,.note a:hover{color:var(--seal);border-color:var(--seal)}.project{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.project .r{max-width:none}.trip{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:clamp(8px,1.6vw,18px);display:grid}.trip img{aspect-ratio:297/420;object-fit:cover;border:1px solid var(--hair);background:var(--sand);width:100%;height:auto;display:block}.actions{flex-wrap:wrap;gap:10px 22px;margin-top:clamp(12px,2.4vh,22px);display:flex}.actions .alink{text-decoration:none;display:inline-block}@media (width<=820px){.project{grid-template-columns:1fr}}.terms{margin:0;display:grid}.terms div{border-top:1px solid var(--hair);grid-template-columns:minmax(0,9rem) minmax(0,1fr);gap:4px 20px;padding:clamp(7px,1.5vh,13px) 0;display:grid}.terms div:last-child{border-bottom:1px solid var(--hair)}.terms dt{font:500 1.05rem/1.5 var(--serif)}.terms dd{color:var(--moss);margin:0;font-size:15px;line-height:1.55}@media (width<=560px){.terms div{grid-template-columns:1fr}}
