:root{--ink: #1c1c1e;--ink-light: #3a3a3c;--ink-faint: #52525a;--ink-ghost: #88888f;--paper: #eff2f0;--border: #c8c8cc;--rule: rgba(28,28,30,.1);--accent: #c4622d;--green: #2d6a4f;--font-mono: "DM Mono", monospace;--font-serif: "Spectral", serif;--font-body: "Source Serif 4", serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scrollbar-gutter:stable}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);min-height:100vh}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle,rgba(28,28,30,.11) 1px,transparent 1px);background-size:22px 22px}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:200;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");opacity:.3}.form-block{display:flex;flex-direction:column;gap:0;min-width:200px}.form-field{display:grid;grid-template-columns:60px 1fr;align-items:baseline;gap:0 12px;padding-bottom:3px;margin-bottom:12px;border-bottom:1px solid var(--ink-faint)}.form-field:last-child{margin-bottom:0}.form-field-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-ghost);padding-top:2px}.form-field-value{font-family:var(--font-serif);font-size:15px;font-weight:300;color:var(--ink);letter-spacing:.01em}.footer{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:24px 40px 48px;border-top:1px solid var(--rule);display:flex;align-items:center;justify-content:center;gap:8px}.footer-meta,.footer-sep,.footer-link{font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--ink-ghost)}.footer-sep{opacity:.5;letter-spacing:0}.footer-link{text-decoration:none}.footer-link:hover{color:var(--accent)}.main{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:56px 40px 100px}.header{margin-bottom:52px;display:grid;grid-template-columns:1fr auto;gap:0 48px;align-items:end}.header-left{display:flex;flex-direction:column}.header h1{font-family:var(--font-serif);font-size:clamp(28px,4vw,42px);font-weight:300;line-height:1.1;color:var(--ink);letter-spacing:.01em;margin-bottom:12px}.header-desc{font-family:var(--font-body);font-size:15px;font-style:italic;line-height:1.6;color:var(--ink-light)}.header-indicator{margin-bottom:8px}.pulse-wrap{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}.pulse-dot{width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 2.2s ease-in-out infinite}.section-label{font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin-bottom:4px}.section-label:before{content:"— ";color:var(--accent)}.projects-section{margin-bottom:44px}.breadcrumb{margin-bottom:48px}.breadcrumb a{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;color:var(--ink-faint);text-decoration:none}.breadcrumb a:hover{color:var(--accent)}.project-header{margin-bottom:40px}.project-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:12px}.project-title{font-family:var(--font-serif);font-size:clamp(28px,4vw,42px);font-weight:300;line-height:1.1;color:var(--ink);letter-spacing:.01em}.project-status{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--green);white-space:nowrap;display:flex;align-items:center;gap:6px}.project-live-link{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--accent);text-decoration:none}.project-live-link:hover{text-decoration:underline}.project-live-note{font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--ink-ghost)}.meta-strip{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:20px 0;margin:32px 0;display:grid;grid-template-columns:repeat(4,auto) 1fr;gap:0 40px;align-items:start}.meta-item{display:flex;flex-direction:column;gap:4px}.meta-label,.meta-spark-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-ghost)}.meta-value{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);letter-spacing:.04em}.meta-spark{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.tech-tags{display:flex;flex-wrap:wrap;gap:8px}.tech-tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-faint);padding:3px 10px;border:1px solid var(--border)}.project-body{margin-top:8px}.project-body h2{font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin:48px 0 16px;padding-bottom:10px;border-bottom:1px solid var(--rule)}.project-body p,.project-body li{font-family:var(--font-body);font-size:15px;line-height:1.75;color:var(--ink-light)}.project-body p+p{margin-top:12px}.project-body ul{padding-left:20px;display:flex;flex-direction:column;gap:8px}.project-body blockquote{border-left:2px solid var(--border);margin:0;padding-left:16px;color:var(--ink-light);font-style:italic}.project-body cite{font-size:13px;color:var(--ink-ghost);font-style:normal}.register{animation:fadeUp .5s ease .15s both}.cols,.register-row{display:grid;gap:0 20px;align-items:center}.register--active .cols,.register--active .register-row,.register--archive .cols,.register--archive .register-row{grid-template-columns:32px 1fr 200px 90px}.cols{margin-top:14px;padding-bottom:8px;border-bottom:1px solid var(--border)}.cols span{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);text-align:left}.register-row{padding:18px 0;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit;transition:background .1s}a.register-row{cursor:pointer}a.register-row:hover{background:#1c1c1e06}a.register-row:hover .row-name{color:var(--accent)}.row-num{font-family:var(--font-mono);font-size:12px;color:var(--ink-ghost);letter-spacing:.04em}.row-cell{display:flex;flex-direction:column;gap:3px}.row-name{font-family:var(--font-serif);font-size:18px;font-weight:600;color:var(--ink);transition:color .1s;line-height:1.2}.row-name-link-indicator{font-family:var(--font-mono);font-size:16px;color:var(--accent);margin-left:6px;font-weight:300;vertical-align:middle}.row-desc{font-family:var(--font-mono);font-size:12px;color:var(--ink-light);letter-spacing:.04em;line-height:1.4}.row-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.row-audience,.row-type{font-family:var(--font-mono);font-size:12px;color:var(--ink-light);letter-spacing:.04em;min-width:0;text-decoration:none}.row-spark{display:flex;justify-content:flex-start;align-items:center}.pill{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:3px 10px;border:1px solid;display:inline-block;white-space:nowrap}.pill-live{color:#2d6a4f;background:#eaf3ee;border-color:#2d6a4f}.pill-paused{color:#6e6e73;background:#f5f5f7;border-color:#6e6e73}.tabs{display:flex;margin-bottom:24px;border-bottom:1px solid var(--border)}.tab{font-family:var(--font-mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);background:none;border:none;text-decoration:none;padding:0 0 12px;margin-right:32px;cursor:pointer;position:relative;transition:color .15s}.tab:hover,.tab.active{color:var(--ink-light)}.tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--ink)}.tab-panel{display:none}.tab-panel.active{display:block}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.7)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.filter-bar{display:flex;gap:20px;align-items:center;margin-bottom:20px}.filter-item{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--ink-faint);cursor:pointer;user-select:none}.filter-item input[type=checkbox]{appearance:none;-webkit-appearance:none;width:13px;height:13px;border:1px solid var(--border);background:transparent;cursor:pointer;flex-shrink:0}.filter-item input[type=checkbox]:checked{background:var(--ink);border-color:var(--ink);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6l3 3 5-5' stroke='white' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:10px 10px}.rss-link{margin-left:auto;display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-ghost);text-decoration:none}.rss-link:hover{color:var(--accent)}.note-lesson-title{font-family:var(--font-serif);font-size:18px;font-weight:400;line-height:1.2;color:var(--ink)}.note--resolved{opacity:.45}.note{display:grid;grid-template-columns:100px 1fr;gap:0 40px;padding:36px 0;border-bottom:1px solid var(--rule);align-items:start}.note:first-of-type{border-top:1px solid var(--rule)}.note-left{display:flex;flex-direction:column;gap:6px;padding-top:3px}.note-date{font-family:var(--font-mono);font-size:12px;color:var(--ink-ghost);letter-spacing:.04em;text-decoration:none}.note-type-tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-ghost)}.note-date:hover{color:var(--accent)}.note-body{display:flex;flex-direction:column;gap:8px}.note-text{font-family:var(--font-body);font-size:15px;line-height:1.6;color:var(--ink-light)}.note-quote{font-family:var(--font-serif);font-style:italic;font-size:19px;line-height:1.5;color:var(--ink);font-weight:400}.note-commentary{font-family:var(--font-body);font-size:14px;line-height:1.55;color:var(--ink-faint)}.note-link{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--accent);text-decoration:none}.note-link:hover{text-decoration:underline}.dateline{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-ghost);margin-bottom:32px}.content{max-width:620px}.content-section{margin-bottom:40px}.content h2{font-family:var(--font-serif);font-size:18px;font-weight:400;color:var(--ink);line-height:1.2;margin-bottom:16px}.content p{font-family:var(--font-body);font-size:15px;line-height:1.75;color:var(--ink-light);margin-bottom:12px}.content p:last-child{margin-bottom:0}.content ul{list-style:none;display:flex;flex-direction:column;gap:8px}.content li{font-family:var(--font-body);font-size:15px;line-height:1.6;color:var(--ink-light);display:flex;gap:12px}.content li:before{content:"—";font-family:var(--font-mono);font-size:12px;color:var(--ink-ghost);flex-shrink:0;padding-top:4px}.content a{color:var(--accent);text-decoration:none}.content a:hover{text-decoration:underline}.note-media{margin-top:4px}.note-media img{max-width:100%;height:auto;display:block;border:1px solid var(--border)}.note-youtube{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.note-youtube iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}@media(max-width:640px){.main{padding:32px 20px 60px}.footer{padding:20px 20px 32px;display:block}.footer-meta,.footer-sep,.footer-link{display:inline}.header{margin-bottom:36px;grid-template-columns:1fr;align-items:start}.form-block{margin-top:24px}.tab{margin-right:20px;font-size:11px}.cols,.rss-link{display:none}.register--active .register-row,.register--archive .register-row{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:16px 0}.row-spark{display:none}.row-meta{display:flex;flex-direction:row;gap:0}.row-type:before{content:" · ";color:var(--ink-ghost)}.note{display:flex;flex-direction:column;gap:16px}.note-body{order:1}.note-left{order:2;flex-direction:row;align-items:center;gap:12px;padding-top:0}.project-title-row{flex-direction:column;align-items:flex-start;gap:8px}.meta-strip{grid-template-columns:1fr 1fr;gap:20px 24px}.meta-spark{grid-column:1 / -1;align-items:flex-start}}
