@font-face{font-family:"IBM Plex Mono";src:url('/assets/IBMPlexMono-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url('/assets/IBMPlexMono-Medium.otf') format('opentype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url('/assets/IBMPlexMono-Bold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap}
:root{--paper:#f7f7f4;--white:#fff;--ink:#111316;--muted:#5a5f68;--faint:#8b8f97;--line:#d9dce0;--soft:#eceef0;--blue:#0f62fe;--blue-dark:#054ada;--blue-soft:#edf5ff;--green:#146c3a;--red:#b4232f;--serif:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;--mono:"IBM Plex Mono","SFMono-Regular",Consolas,monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--blue);text-underline-offset:3px}a:hover{color:var(--blue-dark)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(15,98,254,.3);outline-offset:3px}.skip{position:fixed;left:1rem;top:-5rem;z-index:100;background:var(--ink);color:white;padding:.6rem 1rem}.skip:focus{top:1rem}.shell{width:min(1120px,calc(100% - 48px));margin-inline:auto}.site-header{position:sticky;top:0;z-index:20;background:rgba(247,247,244,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.header-inner{height:72px;display:flex;align-items:center;justify-content:space-between;gap:32px}.brand,.eyebrow,.nav,.meta,.tag,.button,.label,.status,.footer,.notice{font-family:var(--mono);text-transform:uppercase;letter-spacing:.09em}.brand{font-size:13px;color:var(--ink);text-decoration:none}.nav{display:flex;gap:28px;font-size:12px}.nav a{color:var(--muted);text-decoration:none;padding:25px 0 21px;border-bottom:2px solid transparent}.nav a[aria-current=page]{color:var(--blue);border-bottom-color:var(--blue)}.hero{padding:96px 0 72px}.eyebrow{font-size:11px;color:var(--muted);margin:0 0 22px}.hero h1,.article-hero h1{font-weight:500;font-size:clamp(2.5rem,6vw,5.25rem);letter-spacing:-.035em;line-height:1.02;max-width:960px;margin:0}.lede{font-size:clamp(1.15rem,2.1vw,1.45rem);color:var(--muted);max-width:720px;margin:30px 0 0}.availability{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--blue);font-size:12px;margin-top:24px}.rule{border:0;border-top:1px solid var(--line);margin:0}.section{padding:64px 0}.section-title{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px}.section-title h2{font-size:clamp(1.7rem,3vw,2.35rem);font-weight:500;margin:0}.section-index{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.card-grid{display:grid;grid-template-columns:repeat(12,1fr);border:1px solid var(--line);border-right:0;border-bottom:0}.card{grid-column:span 4;min-height:330px;display:flex;flex-direction:column;background:var(--white);padding:28px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;transition:background .15s ease,transform .15s ease}.card:nth-child(-n+2){grid-column:span 6}.card:hover{background:var(--blue-soft);color:var(--ink)}.card:active{transform:translateY(1px)}.card .meta{font-size:10px;color:var(--muted);display:flex;justify-content:space-between;gap:12px}.card h3{font-size:clamp(1.35rem,2.3vw,1.8rem);font-weight:500;line-height:1.2;margin:42px 0 18px}.card p{color:var(--muted);font-size:15px;margin:0 0 24px}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto}.tag{font-size:9px;color:var(--muted);border:1px solid var(--line);padding:5px 8px;background:var(--paper)}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.project{background:var(--paper);padding:28px;min-height:260px;display:flex;flex-direction:column}.project h3{font-size:1.45rem;line-height:1.2;margin:28px 0 12px;font-weight:500}.project p{font-size:15px;color:var(--muted)}.project .tags{margin-top:auto}.article-hero{padding:72px 0 48px}.back{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;text-decoration:none;display:inline-block;margin-bottom:42px}.status{font-size:10px;color:var(--blue);border:1px solid var(--blue);padding:4px 7px;display:inline-block}.article-info{display:flex;align-items:center;gap:12px;margin-bottom:20px}.meta{font-size:11px;color:var(--faint)}.article-body{max-width:760px;padding:48px 0 96px}.article-body p{margin:0 0 26px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:44px 0;padding:34px 0;border-block:1px solid var(--line)}.metric{border-top:2px solid var(--ink);padding-top:10px}.metric b{display:block;font:700 1.65rem var(--mono)}.metric span{font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.method{border:1px solid var(--line);padding:22px 24px;margin-top:42px;color:var(--muted);font-size:15px}.method strong{display:block;font:10px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink);margin-bottom:7px}.timeline{border-top:1px solid var(--ink)}.timeline-row{display:grid;grid-template-columns:190px 1fr auto;gap:28px;padding:25px 0;border-bottom:1px solid var(--line)}.timeline-row h3{font-size:1.15rem;line-height:1.3;margin:0}.timeline-row h4{font:11px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:5px 0 0}.timeline-row p,.timeline-row li{font-size:15px;color:var(--muted)}.timeline-row ul{margin:12px 0 0;padding-left:18px}.current{font:9px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--blue);border:1px solid var(--blue);padding:4px 6px;height:max-content}.skills{display:grid;grid-template-columns:repeat(2,1fr);gap:36px 48px}.skill{border-top:1px solid var(--ink);padding-top:15px}.skill h3{font:10px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.contact-list{border-top:1px solid var(--ink)}.contact-row{display:grid;grid-template-columns:190px 1fr;gap:28px;padding:24px 0;border-bottom:1px solid var(--line)}.contact-row dt{font:10px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.contact-row dd{margin:0;font-size:1.18rem;overflow-wrap:anywhere}.site-footer{border-top:1px solid var(--line);padding:30px 0}.footer{font-size:10px;color:var(--faint);display:flex;justify-content:space-between;gap:24px}.footer a{color:inherit}.auth-wrap{min-height:calc(100vh - 145px);display:grid;place-items:center;padding:64px 0}.auth-card{background:var(--white);border:1px solid var(--line);padding:42px;max-width:520px}.auth-card h1{font-weight:500;line-height:1.15;margin:8px 0 16px}.auth-card p{color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--ink);background:var(--ink);color:white;text-decoration:none;padding:11px 17px;font-size:11px;cursor:pointer}.button:hover{background:var(--blue);border-color:var(--blue);color:white}.button.secondary{background:transparent;color:var(--ink)}.button.danger{background:transparent;color:var(--red);border-color:var(--red)}.admin-head{padding:42px 0 30px;display:flex;justify-content:space-between;align-items:end;gap:24px}.admin-head h1{font-size:2.3rem;line-height:1;margin:7px 0 0}.admin-user{font:11px var(--mono);color:var(--muted);text-align:right}.admin-nav{display:flex;gap:24px;border-bottom:1px solid var(--line);font:11px var(--mono);text-transform:uppercase;letter-spacing:.08em;overflow-x:auto}.admin-nav a{padding:12px 0 10px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}.admin-nav a[aria-current=page]{color:var(--blue);border-color:var(--blue)}.admin-main{padding:42px 0 90px}.admin-actions{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.admin-actions h2{font-weight:500;margin:0}.notice{font-size:10px;color:var(--green);background:#e8f5ec;border:1px solid #b9dfc5;padding:10px 12px;margin-bottom:24px}.admin-list{border-top:1px solid var(--ink)}.admin-row{display:grid;grid-template-columns:1fr auto;gap:24px;padding:19px 0;border-bottom:1px solid var(--line);align-items:center}.admin-row h3{font-size:1.08rem;line-height:1.3;margin:0}.admin-row p{font:10px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin:5px 0 0}.row-actions{display:flex;gap:8px;align-items:center}.row-actions form{margin:0}.link-button{border:0;background:none;color:var(--blue);font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:5px}.link-button.danger{color:var(--red)}.editor{border:1px solid var(--line);background:var(--white);padding:30px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px 24px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.label{font-size:10px;color:var(--muted)}input,textarea,select{width:100%;border:1px solid #c7cbd0;background:white;color:var(--ink);border-radius:0;padding:11px 12px;font:14px var(--mono)}textarea{font-family:var(--serif);font-size:16px;line-height:1.5;resize:vertical}.checkbox{flex-direction:row;align-items:center}.checkbox input{width:17px;height:17px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:26px}.empty{border:1px dashed var(--line);padding:36px;color:var(--muted)}.error-page{padding:100px 0;max-width:680px}.error-page h1{font-size:3rem;font-weight:500;margin:0 0 16px}.muted{color:var(--muted)}
@media (max-width:780px){.shell{width:min(100% - 28px,1120px)}.header-inner{height:auto;min-height:66px;align-items:flex-start;padding:18px 0;flex-direction:column;gap:10px}.site-header{position:relative}.nav{width:100%;gap:18px;overflow-x:auto}.nav a{padding:6px 0 10px}.hero{padding:64px 0 50px}.section{padding:48px 0}.card,.card:nth-child(-n+2){grid-column:span 12;min-height:250px}.project-grid{grid-template-columns:1fr}.timeline-row{grid-template-columns:1fr}.timeline-row>div:first-child{display:flex;gap:12px}.skills{grid-template-columns:1fr}.contact-row{grid-template-columns:1fr;gap:5px}.footer{flex-direction:column}.metrics{grid-template-columns:1fr}.admin-head{align-items:start;flex-direction:column}.admin-user{text-align:left}.admin-actions{align-items:flex-start;flex-direction:column}.admin-row{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.editor{padding:20px}.backup-panel{grid-template-columns:1fr}.backup-actions{min-width:0}.form-actions{justify-content:flex-start;flex-wrap:wrap}}

.article-embed{display:block;width:100%;border:1px solid var(--line);background:white;margin:32px 0}.article-custom-page{width:min(100% - 48px,1120px);margin:48px auto 96px}.article-custom-page .article-embed{margin:0;min-height:720px}.code-panel{border-top:2px solid var(--ink);padding-top:22px;margin-top:12px}.code-panel textarea{font-family:var(--mono);font-size:13px;line-height:1.5;background:#fcfcfc}.backup-panel{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:start;margin-top:32px;padding:30px;border:1px solid var(--line);background:var(--white)}.backup-panel h2{font-size:1.3rem;font-weight:500;line-height:1.2;margin:0 0 10px}.backup-panel .eyebrow{margin-bottom:10px}.backup-actions{display:flex;flex-direction:column;gap:16px;min-width:270px}.backup-actions form{display:flex;flex-direction:column;gap:12px}.file-field{display:flex;flex-direction:column;gap:7px;font:11px var(--mono)}.file-field input{padding:8px;font-size:12px}
.article-image{margin:32px 0}.article-image img{display:block;max-width:100%;height:auto;border:1px solid var(--line);background:var(--white)}.article-image figcaption{margin-top:8px;color:var(--muted);font-size:14px}.media-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:32px;margin-top:32px;padding:30px;border:1px solid var(--line);background:var(--white)}.media-panel h2{font-size:1.3rem;font-weight:500;line-height:1.2;margin:0 0 10px}.media-panel .eyebrow{margin-bottom:10px}.media-panel code{font-family:var(--mono);font-size:.84em;overflow-wrap:anywhere}.media-upload{display:grid;grid-template-columns:1fr 1fr auto;gap:14px;margin-top:22px;align-items:end}.media-library{display:grid;gap:12px;max-height:640px;overflow:auto}.media-item{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:10px;border:1px solid var(--line)}.media-item img{width:96px;height:72px;object-fit:cover;border:1px solid var(--line);background:var(--paper)}.media-item strong,.media-item code{display:block;font-size:11px;line-height:1.45}.media-item strong{font-family:var(--serif);font-size:15px;margin-bottom:5px}
.article-downloads{margin:42px 0;border-top:1px solid var(--ink);padding-top:20px}.article-downloads .eyebrow{margin-bottom:7px}.article-downloads h2{font-size:1.35rem;font-weight:500;line-height:1.2;margin:0 0 14px}.article-downloads ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.article-downloads li{border-bottom:1px solid var(--line)}.article-downloads a,.attachment-item{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 0;text-decoration:none}.article-downloads a span,.attachment-item span{color:var(--muted);font:10px var(--mono);letter-spacing:.07em;white-space:nowrap}.attachment-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:32px;margin-top:32px;padding:30px;border:1px solid var(--line);background:var(--white)}.attachment-panel h2{font-size:1.3rem;font-weight:500;line-height:1.2;margin:0 0 10px}.attachment-panel .eyebrow{margin-bottom:10px}.attachment-list{display:grid;align-content:start;border-top:1px solid var(--line)}.attachment-item{border-bottom:1px solid var(--line);padding:13px 0}
.field-help{color:var(--muted);font-size:13px;line-height:1.35}.card-media{height:210px;margin:-28px -28px 24px;overflow:hidden;background:var(--soft);border-bottom:1px solid var(--line)}.card-media img{display:block;width:100%;height:100%;object-fit:cover}.card--media{padding-top:28px}.card--media h3{margin-top:22px}
.rich-text-panel{border-top:2px solid var(--ink);padding-top:22px;margin-top:12px}.tiptap-shell{border:1px solid var(--line);background:var(--white)}.tiptap-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:5px;padding:10px;border-bottom:1px solid var(--line);background:var(--paper)}.tiptap-toolbar button{min-height:32px;border:1px solid transparent;background:transparent;color:var(--ink);font:11px var(--mono);cursor:pointer;padding:5px 8px}.tiptap-toolbar button:hover,.tiptap-toolbar button.is-active{background:var(--blue);border-color:var(--blue);color:white}.tiptap-toolbar button:disabled{color:var(--faint);cursor:not-allowed}.tiptap-toolbar button:disabled:hover{background:transparent;border-color:transparent}.tiptap-toolbar select{width:auto;min-width:190px;padding:6px 8px;font-size:11px}.toolbar-divider{width:1px;height:25px;background:var(--line);margin:0 3px}.tiptap-content{min-height:360px;padding:22px 24px;outline:none}.tiptap-content .tiptap{outline:none}.tiptap-content .tiptap>*:first-child{margin-top:0}.tiptap-content .tiptap p{margin:0 0 18px}.tiptap-content .tiptap h2,.tiptap-content .tiptap h3,.tiptap-content .tiptap h4{line-height:1.2;margin:34px 0 14px}.tiptap-content .tiptap h2{font-size:1.65rem}.tiptap-content .tiptap h3{font-size:1.3rem}.tiptap-content .tiptap ul,.tiptap-content .tiptap ol{margin:0 0 18px;padding-left:27px}.tiptap-content .tiptap blockquote{border-left:3px solid var(--blue);color:var(--muted);margin:24px 0;padding:4px 0 4px 18px}.tiptap-content .tiptap pre{background:var(--ink);color:white;margin:24px 0;overflow:auto;padding:16px}.tiptap-content .tiptap pre code,.tiptap-content .tiptap code{font-family:var(--mono);font-size:.88em}.tiptap-content .tiptap :not(pre)>code{background:var(--soft);padding:2px 4px}.tiptap-content .tiptap .article-editor-image{display:block;height:auto;max-width:100%;margin:24px 0}.tiptap-content .tiptap p.is-editor-empty:first-child::before{color:var(--faint);content:attr(data-placeholder);float:left;height:0;pointer-events:none}.tiptap-status{display:flex;justify-content:space-between;gap:16px;padding:9px 12px;border-top:1px solid var(--line);color:var(--muted);font:10px var(--mono)}
.article-math{margin:30px 0;overflow-x:auto;padding:12px 0;text-align:center}.tiptap-mathematics-render{margin:20px 0;overflow-x:auto;padding:10px;text-align:center}.tiptap-mathematics-render--editable{background:var(--blue-soft);cursor:pointer}
.article-inline-math{display:inline-block;max-width:100%;vertical-align:-.08em;white-space:nowrap}.tiptap-content .tiptap [data-type=inline-math]{display:inline-block;margin-inline:.08em;vertical-align:-.08em}
@media (max-width:780px){.backup-panel{grid-template-columns:1fr}.backup-actions{min-width:0}}
@media (max-width:780px){.media-panel,.attachment-panel{grid-template-columns:1fr}.media-upload{grid-template-columns:1fr}.article-custom-page{width:min(100% - 28px,1120px)}.article-downloads a,.attachment-item{align-items:flex-start;flex-direction:column;gap:3px}.tiptap-toolbar{align-items:stretch}.tiptap-toolbar select{min-width:0;width:100%}.toolbar-divider{display:none}.tiptap-content{padding:18px}}

/* Svelte publishing studio and first-class interactive figures */
.admin-shell{width:min(1380px,calc(100% - 48px))}.article-editor-form{padding:0;border:0;background:transparent}.article-basics{border:1px solid var(--line);background:var(--white);padding:30px}.article-basics>.eyebrow{margin-bottom:18px}.editor-section-heading{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;margin-bottom:18px}.editor-section-heading .eyebrow{margin-bottom:7px}.editor-section-heading h2{font-size:1.35rem;font-weight:500;margin:0 0 5px}.editor-section-heading p{margin:0}.figure-button{white-space:nowrap}.sticky-save{position:sticky;bottom:0;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 18px;margin-top:22px;border:1px solid var(--line);background:rgba(247,247,244,.96);backdrop-filter:blur(12px);box-shadow:0 -10px 30px rgba(17,19,22,.07)}.sticky-save>span{font:10px var(--mono);text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.sticky-save>div{display:flex;gap:9px}.notice--error,.figure-error{color:var(--red);background:#fff1f1;border-color:#efb8bd}.figure-node{position:relative;display:grid;gap:5px;margin:26px 0;padding:22px 24px 22px 58px;border:1px solid var(--blue);background:var(--blue-soft);cursor:pointer;user-select:none}.figure-node::before{content:"↕";position:absolute;left:20px;top:50%;transform:translateY(-50%);font:18px var(--mono);color:var(--blue)}.figure-node-kicker,.figure-node-hint{font:9px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--blue)}.figure-node strong{font-size:1rem}.figure-node-hint{color:var(--muted)}.figure-node.ProseMirror-selectednode{outline:3px solid rgba(15,98,254,.28);outline-offset:2px}.figure-library{display:grid;grid-template-columns:minmax(180px,280px) 1fr;gap:28px;margin-top:20px;padding:22px;border:1px solid var(--line);background:var(--paper)}.figure-library .eyebrow{margin-bottom:7px}.figure-library p{font-size:13px;margin:0}.figure-library-list{display:grid;gap:8px}.figure-library-list article{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px;border:1px solid var(--line);background:white}.figure-library-list article>div:first-child{display:grid;gap:2px}.figure-library-list strong{font-size:14px}.figure-library-list span{font:9px var(--mono);text-transform:uppercase;color:var(--faint)}.figure-library-list button,.figure-template-row button,.code-workspace nav button,.figure-preview button{border:0;background:transparent;color:var(--blue);font:10px var(--mono);text-transform:uppercase;letter-spacing:.06em;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:5px}.figure-library-list button.danger{color:var(--red)}.modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(17,19,22,.68);display:grid;place-items:center;padding:24px}.figure-modal{display:flex;flex-direction:column;width:min(1500px,100%);height:min(920px,calc(100vh - 48px));overflow:hidden;background:var(--paper);border:1px solid #9da2aa;box-shadow:0 24px 80px rgba(0,0,0,.28)}.figure-modal>header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line);background:white}.figure-modal>header .eyebrow{margin-bottom:4px}.figure-modal>header h2{font-size:1.4rem;font-weight:500;margin:0}.modal-close{border:0;background:none;font:30px/1 var(--mono);cursor:pointer;color:var(--muted)}.figure-template-row{display:flex;align-items:center;gap:7px;padding:10px 24px;border-bottom:1px solid var(--line)}.figure-template-row>span{font:9px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-right:4px}.figure-meta-grid{display:grid;grid-template-columns:minmax(240px,1fr) 160px 120px minmax(280px,1.4fr);gap:14px;padding:16px 24px;background:white;border-bottom:1px solid var(--line)}.figure-meta-grid label{display:flex;flex-direction:column;gap:5px}.figure-workbench{min-height:0;flex:1;display:grid;grid-template-columns:1fr 1fr}.code-workspace,.figure-preview{min-width:0;min-height:0;display:flex;flex-direction:column}.code-workspace{border-right:1px solid var(--line)}.code-workspace nav{display:flex;gap:3px;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--paper)}.code-workspace nav button.active{background:var(--ink);color:white;text-decoration:none}.code-workspace textarea{flex:1;min-height:0;border:0;padding:18px;font:13px/1.55 var(--mono);resize:none;background:#111316;color:#f3f4f5}.figure-preview>div{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid var(--line);font:10px var(--mono);text-transform:uppercase;letter-spacing:.07em}.figure-preview iframe{width:100%;height:100%;border:0;background:white}.figure-modal>footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;border-top:1px solid var(--line);background:white}.figure-modal>footer p{font-size:12px;color:var(--muted);margin:0}.figure-modal>footer>div{display:flex;gap:8px;white-space:nowrap}.figure-error{margin:0;padding:8px 20px;font-size:13px}.article-body{max-width:1120px}.article-body>.metrics,.article-body>.article-downloads,.article-body>.method,.prose>p,.prose>h2,.prose>h3,.prose>h4,.prose>blockquote,.prose>ul,.prose>ol,.prose>pre,.prose>.article-math,.prose>.article-image,.article-body>.article-embed{max-width:760px}.prose>h2,.prose>h3,.prose>h4{line-height:1.2;margin:42px 0 18px}.prose>h2{font-size:1.8rem}.prose>h3{font-size:1.4rem}.prose>blockquote{border-left:3px solid var(--blue);color:var(--muted);margin:30px 0;padding:4px 0 4px 20px}.prose>pre{overflow:auto;background:var(--ink);color:white;padding:18px}.interactive-figure{margin:48px 0}.interactive-figure--contained{max-width:760px}.interactive-figure--wide{width:100%}.interactive-figure--full{width:calc(100vw - 48px);margin-left:calc((1120px - 100vw + 48px)/2)}.interactive-figure iframe{display:block;width:100%;border:1px solid var(--line);background:white}.interactive-figure .figure-label{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:10px}.interactive-figure .figure-label span{font:9px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--blue)}.interactive-figure .figure-label strong{font-size:14px;font-weight:500}.interactive-figure figcaption{max-width:760px;margin-top:10px;color:var(--muted);font-size:14px}.project[href]{color:var(--ink);text-decoration:none}.project[href]:hover{background:var(--blue-soft)}
@media(max-width:900px){.admin-shell{width:min(100% - 28px,1380px)}.figure-workbench{grid-template-columns:1fr}.figure-modal{height:calc(100vh - 24px)}.code-workspace{min-height:360px;border-right:0;border-bottom:1px solid var(--line)}.figure-preview{min-height:360px}.figure-meta-grid{grid-template-columns:1fr 1fr}.caption-field{grid-column:1/-1}.interactive-figure--full{width:100%;margin-left:0}}
@media(max-width:700px){.editor-section-heading,.sticky-save,.figure-modal>footer{align-items:flex-start;flex-direction:column}.figure-library{grid-template-columns:1fr}.figure-library-list article{align-items:flex-start;flex-direction:column}.figure-meta-grid{grid-template-columns:1fr}.caption-field{grid-column:auto}.figure-template-row{overflow-x:auto}.modal-backdrop{padding:0}.figure-modal{height:100vh}.sticky-save>div{width:100%}.sticky-save .button{flex:1}}

/* Configurable article images */
.prose>.article-image{width:100%;margin-block:38px}.article-image--w-40{width:40%!important;max-width:304px!important}.article-image--w-60{width:60%!important;max-width:456px!important}.article-image--w-80{width:80%!important;max-width:608px!important}.article-image--w-100{width:100%!important;max-width:760px!important}.article-image--w-wide{width:100%!important;max-width:1120px!important}.article-image--align-left{margin-left:0;margin-right:auto}.article-image--align-center{margin-left:auto;margin-right:auto}.article-image--align-right{margin-left:auto;margin-right:0}.article-image img{width:100%}.article-image--ratio-1-1 img{aspect-ratio:1/1}.article-image--ratio-4-3 img{aspect-ratio:4/3}.article-image--ratio-3-2 img{aspect-ratio:3/2}.article-image--ratio-16-9 img{aspect-ratio:16/9}.article-image--ratio-21-9 img{aspect-ratio:21/9}.article-image--ratio-3-4 img{aspect-ratio:3/4}.article-image--fit-cover img{object-fit:cover}.article-image--fit-contain img{object-fit:contain}.article-image--ratio-auto img{height:auto;object-fit:contain}.article-image figcaption{max-width:760px}
.tiptap-content .tiptap .article-editor-image{cursor:pointer;border:1px solid var(--line);background:var(--paper);transition:outline-color .15s}.tiptap-content .tiptap .article-editor-image:hover{outline:3px solid rgba(15,98,254,.2);outline-offset:2px}.tiptap-content .tiptap .article-editor-image[data-image-width="40"]{width:40%}.tiptap-content .tiptap .article-editor-image[data-image-width="60"]{width:60%}.tiptap-content .tiptap .article-editor-image[data-image-width="80"]{width:80%}.tiptap-content .tiptap .article-editor-image[data-image-width="100"],.tiptap-content .tiptap .article-editor-image[data-image-width="wide"]{width:100%}.tiptap-content .tiptap .article-editor-image[data-image-alignment="left"]{margin-left:0;margin-right:auto}.tiptap-content .tiptap .article-editor-image[data-image-alignment="center"]{margin-left:auto;margin-right:auto}.tiptap-content .tiptap .article-editor-image[data-image-alignment="right"]{margin-left:auto;margin-right:0}.tiptap-content .tiptap .article-editor-image[data-image-ratio="1-1"]{aspect-ratio:1/1}.tiptap-content .tiptap .article-editor-image[data-image-ratio="4-3"]{aspect-ratio:4/3}.tiptap-content .tiptap .article-editor-image[data-image-ratio="3-2"]{aspect-ratio:3/2}.tiptap-content .tiptap .article-editor-image[data-image-ratio="16-9"]{aspect-ratio:16/9}.tiptap-content .tiptap .article-editor-image[data-image-ratio="21-9"]{aspect-ratio:21/9}.tiptap-content .tiptap .article-editor-image[data-image-ratio="3-4"]{aspect-ratio:3/4}.tiptap-content .tiptap .article-editor-image[data-image-fit="cover"]{object-fit:cover}.tiptap-content .tiptap .article-editor-image[data-image-fit="contain"]{object-fit:contain}
.image-modal{display:flex;flex-direction:column;width:min(1240px,100%);max-height:calc(100vh - 48px);overflow:hidden;background:var(--paper);border:1px solid #9da2aa;box-shadow:0 24px 80px rgba(0,0,0,.28)}.image-modal>header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line);background:white}.image-modal>header .eyebrow{margin-bottom:4px}.image-modal>header h2{font-size:1.4rem;font-weight:500;margin:0}.image-workbench{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);min-height:0;overflow:auto}.image-controls{display:flex;flex-direction:column;gap:18px;padding:24px;border-right:1px solid var(--line);background:white}.image-controls label{display:flex;flex-direction:column;gap:6px}.image-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.image-preview{display:flex;min-width:0;min-height:480px;flex-direction:column}.image-preview>div:first-child{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line);font:10px var(--mono);text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.image-preview-canvas{flex:1;display:grid;align-items:center;padding:34px;background:repeating-linear-gradient(45deg,#f4f4f1,#f4f4f1 12px,#eee 12px,#eee 24px)}.image-preview-canvas figure{max-width:100%;margin-block:0}.image-preview-canvas figure.align-left{margin-left:0;margin-right:auto}.image-preview-canvas figure.align-center{margin-inline:auto}.image-preview-canvas figure.align-right{margin-left:auto;margin-right:0}.image-preview-canvas img{display:block;width:100%;max-height:560px;border:1px solid var(--line);background:white}.image-preview-canvas figcaption{margin-top:9px;color:var(--muted);font-size:14px}.image-modal>footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;border-top:1px solid var(--line);background:white}.image-modal>footer>div{display:flex;gap:8px}.button.danger-button{background:transparent;color:var(--red);border-color:var(--red)}.button.danger-button:hover{background:var(--red);color:white}
@media(max-width:800px){.article-image--w-40,.article-image--w-60,.article-image--w-80{width:100%!important;max-width:760px!important}.image-modal{height:100vh;max-height:none}.image-workbench{grid-template-columns:1fr}.image-controls{border-right:0;border-bottom:1px solid var(--line)}.image-preview{min-height:360px}.image-preview-canvas{padding:20px}}
@media(max-width:520px){.image-control-grid{grid-template-columns:1fr}.image-modal>footer{align-items:stretch;flex-direction:column}.image-modal>footer>div{display:grid;grid-template-columns:1fr 1fr}.image-modal>footer .button{width:100%}}
.card-media-preview{display:grid;grid-template-columns:minmax(220px,420px) 1fr;gap:18px;align-items:center;margin:0;padding:14px;border:1px solid var(--line);background:var(--paper)}.card-media-preview img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--line);background:white}.card-media-preview figcaption{display:grid;gap:5px}.card-media-preview figcaption strong{font-size:14px}.card-media-preview figcaption span{color:var(--muted);font-size:13px}@media(max-width:650px){.card-media-preview{grid-template-columns:1fr}}

/* Article card image framing */
.card-media--configured{position:relative;height:auto;isolation:isolate}.card-media--ratio-16-9{aspect-ratio:16/9}.card-media--ratio-3-2{aspect-ratio:3/2}.card-media--ratio-4-3{aspect-ratio:4/3}.card-media--ratio-1-1{aspect-ratio:1/1}.card-media--ratio-3-4{aspect-ratio:3/4}.card-media--configured img{position:absolute;inset:0;width:100%;height:100%;object-fit:var(--card-fit,cover);object-position:var(--card-x,50%) var(--card-y,50%);transform:scale(var(--card-zoom,1));transform-origin:var(--card-x,50%) var(--card-y,50%)}
.card-image-field{display:grid;gap:12px}.card-editor-summary{display:grid;grid-template-columns:minmax(220px,420px) 1fr;gap:20px;align-items:center;padding:14px;border:1px solid var(--line);background:var(--paper)}.card-editor-summary>.card-media{width:100%;margin:0;border:1px solid var(--line)}.card-editor-summary>div:last-child{display:grid;justify-items:start;gap:14px}.card-editor-summary p{display:grid;gap:3px;margin:0}.card-editor-summary p strong{font-size:14px}.card-editor-summary p span{color:var(--muted);font:10px var(--mono);text-transform:uppercase;letter-spacing:.06em}.image-controls input[type="range"]{padding:0;accent-color:var(--blue)}.image-controls>.button{align-self:flex-start}.card-editor-live-preview .image-preview-canvas{place-items:center}.card-preview-shell{width:min(100%,520px);overflow:hidden;border:1px solid var(--line);background:white;box-shadow:0 18px 50px rgba(17,19,22,.12)}.card-preview-shell .card-media{width:100%;margin:0;border-bottom:1px solid var(--line)}.card-preview-copy{display:grid;gap:12px;padding:24px}.card-preview-copy>span{color:var(--muted);font:9px var(--mono);text-transform:uppercase;letter-spacing:.08em}.card-preview-copy>strong{font-size:1.25rem;line-height:1.25}.card-preview-copy p{color:var(--muted);font-size:14px;margin:0}.card-image-modal .image-controls{justify-content:flex-start}
@media(max-width:650px){.card-editor-summary{grid-template-columns:1fr}.card-editor-summary>div:last-child{justify-items:stretch}.card-editor-summary .button{width:100%}}

/* Persistent light and dark themes */
.header-tools{display:flex;align-items:center;gap:26px}.theme-toggle{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:6px 10px;border:1px solid var(--line);background:var(--white);color:var(--ink);font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em;cursor:pointer}.theme-toggle:hover{border-color:var(--blue);color:var(--blue)}.theme-icon{display:grid;place-items:center;width:15px;font-size:16px;line-height:1}.theme-label{line-height:1}
:root[data-theme="dark"]{--paper:#111316;--white:#191c21;--ink:#f1f3f5;--muted:#adb3bd;--faint:#7f8793;--line:#383d46;--soft:#252a31;--blue:#76aaff;--blue-dark:#a5c8ff;--blue-soft:#172a47;--green:#65d493;--red:#ff818c;color-scheme:dark}
:root[data-theme="dark"] .site-header{background:rgba(17,19,22,.96)}:root[data-theme="dark"] input,:root[data-theme="dark"] textarea,:root[data-theme="dark"] select{border-color:#454b56;background:var(--white);color:var(--ink)}:root[data-theme="dark"] input::placeholder,:root[data-theme="dark"] textarea::placeholder{color:var(--faint)}:root[data-theme="dark"] .skip{color:var(--paper)}:root[data-theme="dark"] .button:not(.secondary):not(.danger-button){color:#111316}:root[data-theme="dark"] .button.secondary{color:var(--ink)}:root[data-theme="dark"] .button:hover{color:#fff}:root[data-theme="dark"] .notice{color:#8ce7ad;background:#14271c;border-color:#2e6643}:root[data-theme="dark"] .notice--error,:root[data-theme="dark"] .figure-error{color:#ff9ca4;background:#32191d;border-color:#74343b}:root[data-theme="dark"] .code-panel textarea{background:#0d0f12}:root[data-theme="dark"] .sticky-save{background:rgba(17,19,22,.96);box-shadow:0 -10px 30px rgba(0,0,0,.24)}
:root[data-theme="dark"] .figure-library-list article,:root[data-theme="dark"] .figure-modal>header,:root[data-theme="dark"] .figure-meta-grid,:root[data-theme="dark"] .figure-modal>footer,:root[data-theme="dark"] .image-modal>header,:root[data-theme="dark"] .image-controls,:root[data-theme="dark"] .image-modal>footer,:root[data-theme="dark"] .card-preview-shell{background:var(--white)}:root[data-theme="dark"] .figure-modal,:root[data-theme="dark"] .image-modal{border-color:#555c68;box-shadow:0 24px 80px rgba(0,0,0,.55)}:root[data-theme="dark"] .image-preview-canvas{background:repeating-linear-gradient(45deg,#15181d,#15181d 12px,#1b1f25 12px,#1b1f25 24px)}:root[data-theme="dark"] .image-preview-canvas img,:root[data-theme="dark"] .card-media-preview img{background:var(--white)}:root[data-theme="dark"] .card-preview-shell{box-shadow:0 18px 50px rgba(0,0,0,.4)}:root[data-theme="dark"] .tiptap-content .tiptap pre,:root[data-theme="dark"] .prose>pre{background:#08090b;color:#f3f4f5}:root[data-theme="dark"] .code-workspace textarea{background:#08090b}:root[data-theme="dark"] .modal-backdrop{background:rgba(0,0,0,.76)}
@media(prefers-reduced-motion:no-preference){body,.site-header,.card,.project,.theme-toggle,input,textarea,select{transition:background-color .18s ease,color .18s ease,border-color .18s ease}}
@media(max-width:780px){.header-tools{width:100%;justify-content:space-between;gap:16px}.header-tools .nav{width:auto;flex:1}.theme-toggle{flex:0 0 auto}}
@media(max-width:460px){.theme-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.theme-toggle{padding-inline:9px}}
.media-item-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.media-item-actions>span{color:var(--muted);font:9px var(--mono);text-transform:uppercase;letter-spacing:.05em}.media-item-actions form,.attachment-row form{margin:0}.link-button:disabled{color:var(--faint);cursor:not-allowed;text-decoration:none}.attachment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.attachment-row .attachment-item{border-bottom:0}.attachment-row .link-button{padding:8px}
.interactive-figure{position:relative;margin-block:56px}.interactive-figure iframe{display:block;width:100%;border:0;background:transparent;overflow:hidden;scrollbar-width:none}.interactive-figure iframe::-webkit-scrollbar{display:none}.interactive-figure .figure-label{padding-bottom:10px;border-bottom:1px solid var(--line)}.interactive-figure figcaption{padding-top:2px}.interactive-figure iframe:not(.is-ready){opacity:.01}.interactive-figure iframe.is-ready{opacity:1}@media(prefers-reduced-motion:no-preference){.interactive-figure iframe{transition:height .18s ease,opacity .18s ease}}
.timeline-meta{display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.order-actions{display:inline-flex;align-items:center;gap:4px;padding-right:5px;border-right:1px solid var(--line)}.order-actions form{margin:0}.order-button{display:grid;place-items:center;width:30px;height:30px;padding:0;border:1px solid var(--line);background:var(--white);color:var(--ink);font:16px/1 var(--mono);cursor:pointer}.order-button:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}.order-button:disabled{color:var(--faint);background:var(--paper);cursor:not-allowed;opacity:.55}@media(max-width:780px){.row-actions{flex-wrap:wrap}.order-actions{width:100%;padding:0 0 8px;border-right:0;border-bottom:1px solid var(--line)}}
