:focus-visible{outline-offset:4px;outline:3px solid #563398}.skip-link{color:#30213f;z-index:100;background:#fff;padding:18px;position:fixed;top:-100px;left:16px}.skip-link:focus{top:12px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root{--canvas:#faf9f6;--ink:#24211d;--muted:#625d57;--line:#d5d2cc;--accent:#305cff;--link:#2149d8;--warm-accent:#f1745c;--serif:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;color:var(--ink);background:var(--canvas);font-synthesis:none;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{-webkit-text-size-adjust:100%;min-width:320px;margin:0;font-size:16px}a{color:inherit}.site-header,.site-footer,main{width:min(1320px,100% - 96px);margin-inline:auto}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;min-height:76px;display:flex}.wordmark{min-height:44px;font-family:var(--serif);letter-spacing:-1.4px;white-space:nowrap;align-items:baseline;padding-block:5px;font-size:32px;font-weight:700;line-height:1.1;text-decoration:none;display:inline-flex}.brand-dot{color:var(--warm-accent)}.site-header nav{align-items:center;gap:20px;display:flex}.site-header nav a{text-underline-offset:5px;white-space:nowrap;align-items:center;gap:18px;min-height:44px;padding-inline:8px;font-size:16px;text-decoration:none;display:flex}.site-header nav a:hover{text-decoration:underline}.site-header a:focus-visible,.site-footer a:focus-visible{outline:3px solid var(--link);outline-offset:5px}main:focus{outline:none}.intro{grid-template-columns:1.35fr 1fr;align-items:center;gap:56px;padding:34px 16px 28px;display:grid}.intro h1{font-family:var(--serif);letter-spacing:-.052em;margin:0;font-size:clamp(48px,5.15vw,74px);font-weight:500;line-height:1.035}.hero-accent{white-space:nowrap;position:relative}.hero-accent:after{content:"";background:var(--warm-accent);border-radius:55% 50% 40% 45%;height:.065em;min-height:3px;position:absolute;bottom:-.055em;left:-3%;right:-3%;transform:rotate(-3deg)}.intro-copy{letter-spacing:-.022em;border-left:1px solid #aaa69e;max-width:460px;margin:0;padding:14px 0 14px 40px;font-size:clamp(18px,1.55vw,22px);line-height:1.5}.labs{scroll-margin-top:20px}.library-heading{justify-content:space-between;align-items:baseline;gap:24px;padding:10px 16px 18px;display:flex}.library-instruction{letter-spacing:-.025em;margin:0;font-size:18px;line-height:1.5}.library-note{color:var(--muted);letter-spacing:.11em;flex-shrink:0;font-family:ui-monospace,monospace;font-size:10px}.bookcase{--stage-height:clamp(410px, 42vh, 460px);--frame:22px;padding:var(--frame) var(--frame) 18px;background-color:#2854ec;background-image:url(/assets/home/shelf-grain.svg),linear-gradient(90deg,#1b42d6,#416dff 1.1%,#2c57ef 2.4%,#305cff 97.5%,#183dc6);border-radius:3px 5px 2px 3px;position:relative;box-shadow:inset 0 1px #a7beff,inset 3px 0 #6685fa,inset -3px 0 #1d40bd,0 5px 13px #1a2f4b12}.bookcase:before{content:"";height:var(--frame);pointer-events:none;z-index:2;background-image:url(/assets/home/shelf-grain.svg),linear-gradient(#4977ff,#305cff 65%,#2147d5);border-radius:3px 5px 0 0;position:absolute;inset:0 0 auto;box-shadow:inset 0 2px #97b1ff77,0 6px 10px #04175435}.lab-shelf{background-color:#123595;background-image:url(/assets/home/shelf-grain.svg);flex-wrap:wrap;align-items:flex-end;margin:0;padding:0;list-style:none;display:flex;position:relative;box-shadow:inset 0 18px 16px -12px #05154199}.lab-shelf:after{content:"";pointer-events:none;z-index:4;background-image:url(/assets/home/shelf-grain.svg),linear-gradient(#4878ff,#305cff 34%,#264ce0 90%,#193cc2);flex:0 0 100%;height:24px;margin-top:-24px;box-shadow:inset 0 3px #95b3ff80,inset 0 -2px #173dad}.lab-entry{--paper:#f1e9d8;--spine-ink:#252435;--ribbon:#c4b095;--book-width:86px;--book-gap:98px;display:contents}.book-control{flex:0 0 calc(var(--book-width) + 6px);width:calc(var(--book-width) + 6px);height:var(--stage-height);min-height:44px;color:var(--ink);-webkit-tap-highlight-color:#c5d1ff88;text-decoration:none;display:block;position:relative}a.book-control{cursor:pointer}.book-control.is-planned{cursor:default}.book-stage{height:var(--stage-height);justify-content:center;align-items:flex-end;padding:30px 3px 24px;display:flex;position:relative}.book-stage:after{content:"";pointer-events:none;z-index:4;background-image:url(/assets/home/shelf-grain.svg),linear-gradient(#4878ff,#305cff 34%,#264ce0 90%,#193cc2);height:24px;position:absolute;inset:auto 0 0;box-shadow:inset 0 3px #95b3ff80,inset 0 -2px #173dad,0 -5px 9px #061e6929}.book-spine{width:var(--book-width);height:calc(var(--stage-height) - var(--book-gap));color:var(--spine-ink);background-color:var(--paper);transform-origin:bottom;outline-offset:5px;z-index:3;background-image:linear-gradient(90deg,#00000012,#0000 8%,#ffffff20 19%,#0000 54%,#0000000a 85%,#fff5 91%,#00000025);border:1px solid #f8f1e1bb;border-radius:4px 8px 5px 3px;outline:3px solid #0000;flex:none;transition:transform .18s,box-shadow .18s,outline-color .18s;position:relative;box-shadow:9px 3px 0 -3px #ded5c1,12px 5px 0 -3px #a3967d,17px 9px 14px #03143755,0 7px 6px #02174888,inset 2px 0 2px #ffffff70,inset -4px 0 5px #0000000c}.book-spine:after{content:"";pointer-events:none;border-radius:inherit;opacity:.8;mix-blend-mode:multiply;background-image:url(/assets/home/shelf-grain.svg);position:absolute;inset:0}.lab-entry:has(.book-spine--course){--paper:#ec9576;--spine-ink:#3a231e;--ribbon:#f4bb9d;--book-width:94px;--book-gap:90px}.lab-entry:has(.book-spine--wendy){--paper:#f3ede4;--ribbon:#bfb0d1;--book-width:82px;--book-gap:108px}.lab-entry:has(.book-spine--viete){--paper:#f8eedb;--ribbon:#d99b88;--book-width:76px;--book-gap:116px}.lab-entry:has(.book-spine--absolute){--paper:#e7e5dc;--ribbon:#b0ada4;--book-width:90px;--book-gap:102px}.book-number{letter-spacing:.12em;text-align:center;z-index:1;width:100%;font-family:ui-monospace,monospace;font-size:13px;font-weight:600;line-height:1;position:absolute;top:58px;left:0}.book-title{writing-mode:vertical-rl;text-orientation:sideways;max-width:calc(100% - 20px);font-family:var(--serif);letter-spacing:-.025em;text-align:center;overflow-wrap:normal;z-index:1;font-size:25px;font-weight:600;line-height:1.08;position:absolute;top:94px;bottom:54px;left:50%;transform:translate(-50%)}.book-word{white-space:nowrap}.book-imprint{letter-spacing:.08em;text-align:center;white-space:nowrap;z-index:1;width:100%;font-family:ui-monospace,monospace;font-size:8px;font-weight:600;line-height:1;position:absolute;bottom:15px;left:0}.book-rib{border-top:2px solid var(--ribbon);z-index:1;border-bottom:1px solid #fff8;height:5px;position:absolute;left:11px;right:10px;box-shadow:0 1px 1px #00000013}.book-rib--top{top:34px}.book-rib--bottom{bottom:38px}.book-caption{border-bottom:1px solid var(--line);width:100%;min-width:0;color:var(--ink);background:var(--canvas);flex:0 0 100%;order:1;grid-template-columns:minmax(240px,1fr) minmax(0,1.6fr) minmax(148px,auto);align-items:center;gap:4px 24px;padding:12px 25px;text-decoration:none;transition:background-color .18s,box-shadow .18s;display:grid;position:relative}a.book-caption{cursor:pointer}.lab-category{grid-area:1/1}.lab-title{grid-area:2/1}.lab-description{grid-area:1/2/3}.lab-action,.lab-status{grid-area:1/3/3;justify-self:end}.lab-category{color:var(--muted);letter-spacing:.035em;margin:0;font-family:ui-monospace,monospace;font-size:11px;line-height:1.45}.lab-title{font-family:var(--serif);letter-spacing:-.035em;overflow-wrap:anywhere;text-underline-offset:5px;margin:0;font-size:clamp(20px,1.7vw,25px);font-weight:600;line-height:1.18;text-decoration-thickness:1px}.lab-description{color:var(--muted);letter-spacing:-.015em;overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.45}.lab-action,.lab-status{align-items:center;min-height:44px;font-size:16px;line-height:1.35;display:inline-flex}.lab-action{color:var(--link);text-underline-offset:5px;gap:13px;text-decoration:underline;text-decoration-thickness:1px}.lab-action span{font-size:22px;line-height:1}.lab-status{color:var(--muted)}.shelf-plant{top:calc(var(--frame) + var(--stage-height) - 24px);pointer-events:none;z-index:2;width:100px;height:auto;position:absolute;right:22px;transform:translateY(-100%)}.shelf-empty{display:none}.lab-shelf:not(:has(a.book-control[href]))~.shelf-empty{background:var(--canvas);color:var(--ink);font-family:var(--serif);text-align:center;margin:0;padding:80px 24px;font-size:26px;line-height:1.35;display:block}.lab-shelf:not(:has(.lab-entry))~.shelf-plant{display:none}.book-control:focus-visible{z-index:5;outline:none}.book-control:focus-visible .book-stage{box-shadow:inset 0 0 0 3px #fff5d9}.book-caption:focus-visible{outline:3px solid var(--link);outline-offset:-3px}.lab-entry:has(.book-control:focus-visible,.book-caption:focus-visible) .book-caption{box-shadow:inset 3px 0 0 var(--link);background:#eef1fc}.lab-entry:has(.book-control:focus-visible,.book-caption:focus-visible) .book-control{z-index:5}.lab-entry:has(.book-control:focus-visible,.book-caption:focus-visible) .book-spine{outline-color:#fff8e1;transform:translateY(-32px)scale(1.055);box-shadow:9px 3px 0 -3px #ded5c1,12px 5px 0 -3px #a3967d,22px 22px 18px #02124077,0 16px 10px #02124077,inset 2px 0 2px #ffffff70,inset -4px 0 5px #0000000c}.lab-entry:has(a.book-control):has(.book-control:focus-visible,.book-caption:focus-visible) .lab-title{color:var(--link);text-decoration:underline}@media (hover:hover){.lab-entry:has(.book-control:hover,.book-caption:hover) .book-control{z-index:5}.lab-entry:has(.book-control:hover,.book-caption:hover) .book-spine{outline-color:#fff8e1;transform:translateY(-32px)scale(1.055);box-shadow:9px 3px 0 -3px #ded5c1,12px 5px 0 -3px #a3967d,22px 22px 18px #02124077,0 16px 10px #02124077,inset 2px 0 2px #ffffff70,inset -4px 0 5px #0000000c}.lab-entry:has(.book-control:hover,.book-caption:hover) .book-caption{box-shadow:inset 3px 0 0 var(--link);background:#eef1fc}.lab-entry:has(a.book-control):has(.book-control:hover,.book-caption:hover) .lab-title{color:var(--link);text-decoration:underline}}.book-caption:active{background:#e1e8fc}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:baseline;gap:20px;margin-top:36px;padding:23px 0 28px;font-size:13px;line-height:1.5;display:flex}@media (width<=1200px){.site-header,.site-footer,main{width:calc(100% - 64px)}.intro{gap:32px;padding-inline:8px}.intro-copy{padding-left:28px}.book-caption{padding-inline:20px}.shelf-plant{display:none}}@media (width<=900px){.site-header,.site-footer,main{width:calc(100% - 40px)}.intro{grid-template-columns:1fr;gap:22px;padding:34px 4px 28px}.intro h1{font-size:clamp(44px,7.9vw,65px)}.intro-copy{border:0;max-width:620px;padding:0;font-size:18px}.library-heading{padding-inline:4px}.library-note{display:none}.bookcase{--stage-height:390px;--frame:16px;padding-bottom:14px}.book-caption{grid-template-columns:minmax(200px,1fr) minmax(0,1.4fr) minmax(124px,auto);gap:4px 16px;padding:12px 20px}.lab-title{font-size:24px}.book-title{font-size:23px;top:85px;bottom:48px}.lab-entry:has(.book-spine--course){--book-gap:74px}.lab-entry:has(.book-spine--wendy){--book-gap:90px}.lab-entry:has(.book-spine--viete){--book-gap:98px}.lab-entry:has(.book-spine--absolute){--book-gap:84px}}@media (width<=560px){.site-header,.site-footer,main{width:calc(100% - 32px)}.site-header{gap:8px;min-height:68px}.wordmark{font-size:24px}.site-header nav{gap:8px}.site-header nav a{gap:8px;padding-inline:4px}.intro{gap:18px;padding:27px 0 23px}.intro h1{letter-spacing:-.047em;font-size:clamp(36px,9.25vw,44px);line-height:1.08}.intro-copy,.library-instruction{font-size:16px;line-height:1.5}.library-heading{padding:6px 0 16px}.bookcase{--stage-height:350px;--frame:11px;padding-bottom:10px}.book-stage{padding-inline:3px}.lab-entry:has(.book-spine--course){--book-width:82px;--book-gap:72px}.lab-entry:has(.book-spine--wendy){--book-width:74px;--book-gap:86px}.lab-entry:has(.book-spine--viete){--book-width:68px;--book-gap:92px}.lab-entry:has(.book-spine--absolute){--book-width:78px;--book-gap:82px}.book-title{font-size:21px;top:82px;bottom:40px}.book-number{font-size:12px;top:55px}.book-rib--top{top:32px}.book-rib--bottom{bottom:30px}.book-imprint{font-size:7px;bottom:12px}.book-caption{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:14px 13px}.lab-description{grid-area:3/1/auto/-1;padding-top:6px}.lab-action,.lab-status{text-align:right;grid-area:1/2/3;max-width:116px}.lab-category{letter-spacing:0;font-size:10px;line-height:1.5}.lab-title{font-size:21px;line-height:1.2}.lab-description{font-size:16px;line-height:1.45}.lab-status,.lab-action{font-size:16px}.site-footer{align-items:flex-start;margin-top:28px;font-size:12px}}@media (width<=370px){.bookcase{--stage-height:355px}.book-caption{padding-inline:13px}.lab-title{font-size:24px}.lab-category{font-size:11px}.site-footer{flex-direction:column;gap:8px}}@media (prefers-reduced-motion:reduce){.book-spine,.book-caption{transition:none}.book-control .book-spine{transform:none!important}}@media (forced-colors:active){.book-control:focus-visible{outline-offset:-3px;outline:3px solid highlight}.book-control:focus-visible .book-spine{outline-color:highlight}.book-spine{border:2px solid canvastext}.lab-entry:has(.book-control:focus-visible,.book-caption:focus-visible) .lab-title{color:linktext}}
