*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0604;--paper:#efe9dc;--ink:#241a12;--amber:#c8a97e;--text:#ece4d6;--t2:#9a8d79;--t3:#57493a;--border:#c8a97e2e;--serif:"Cormorant Garamond", Georgia, serif;--sans:"Inter", system-ui, sans-serif}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.65;overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.app{position:fixed;inset:0}.app canvas{touch-action:none;transition:transform .9s cubic-bezier(.16,1,.3,1)}.app.shift canvas{transform:translate(-19%)}.app:after{content:"";opacity:.04;pointer-events:none;z-index:200;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.ui{opacity:0;pointer-events:none;transition:opacity 1.1s 1.5s}.app.ready .ui{opacity:1;pointer-events:auto}[data-hide=true]{transition:opacity .45s;opacity:0!important;pointer-events:none!important}.top{z-index:110;justify-content:space-between;align-items:center;padding:26px 36px;display:flex;position:fixed;top:0;left:0;right:0}.logo{font-family:var(--serif);letter-spacing:.04em;font-size:24px;font-weight:600}.logo span{color:var(--amber)}.top-right{align-items:center;gap:18px;display:flex}.status{letter-spacing:.14em;text-transform:uppercase;color:var(--t2);align-items:center;gap:8px;font-size:10px;display:inline-flex}.btn-ghost{letter-spacing:.16em;text-transform:uppercase;color:var(--text);border:1px solid var(--border);border-radius:2px;padding:9px 16px;font-size:10px;transition:border-color .25s,background .25s,color .25s}.btn-ghost:hover{border-color:var(--amber);color:var(--amber);background:#c8a97e14}.pill-dot{background:#4ade80;border-radius:50%;width:5px;height:5px;box-shadow:0 0 0 3px #4ade8026}.kicker{letter-spacing:.22em;text-transform:uppercase;color:var(--amber);margin-bottom:14px;font-size:10px}.hero{z-index:90;max-width:430px;transition:opacity .6s .5s;position:fixed;bottom:104px;left:36px}.hero h1{font-family:var(--serif);letter-spacing:.01em;margin-bottom:18px;font-size:clamp(38px,4.4vw,58px);font-weight:500;line-height:1.04}.hero h1 em{color:var(--amber);font-style:italic}.hero-line{color:var(--t2);font-size:13px;font-weight:300;line-height:1.85}.hint{z-index:90;letter-spacing:.18em;text-transform:uppercase;color:var(--t3);writing-mode:vertical-rl;font-size:10px;transition:opacity .6s .5s;position:fixed;bottom:110px;right:36px}.dock{border:1px solid var(--border);-webkit-backdrop-filter:blur(16px);z-index:110;background:#0a060499;border-radius:3px;gap:4px;padding:6px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.dock-item{letter-spacing:.16em;text-transform:uppercase;color:var(--t2);border-radius:2px;align-items:center;gap:8px;padding:9px 16px;font-size:10px;transition:color .25s,background .25s;display:inline-flex}.dock-item:hover{color:var(--text)}.dock-item.active{color:var(--text);background:#c8a97e1a}.dock-n{font-family:var(--serif);color:var(--amber);font-size:12px;font-style:italic}.contact-card{border:1px solid var(--border);-webkit-backdrop-filter:blur(16px);z-index:111;background:#0a0604ad;border-radius:3px;align-items:center;width:max-content;max-width:calc(100vw - 72px);padding:8px 10px;display:flex;position:fixed;bottom:88px;right:36px}.contact-title{border-right:1px solid var(--border);font-family:var(--serif);letter-spacing:.05em;color:var(--amber);white-space:nowrap;margin-right:9px;padding-right:10px;font-size:14px;font-style:italic}.contact-actions{gap:6px;display:flex}.contact-link{letter-spacing:.11em;text-transform:uppercase;color:var(--t2);border:1px solid #0000;border-radius:2px;align-items:center;gap:6px;padding:6px 8px;font-size:9px;transition:color .25s,border-color .25s,background .25s;display:inline-flex}.contact-link:hover{color:var(--text);border-color:var(--border);background:#c8a97e12}.contact-link svg{fill:none;stroke:currentColor;stroke-width:1.45px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:13px;height:13px}.foot{letter-spacing:.16em;text-transform:uppercase;color:var(--t3);z-index:100;justify-content:space-between;padding:18px 0;font-size:9px;display:flex;position:fixed;bottom:0;left:36px;right:36px;pointer-events:none!important}.anno{white-space:nowrap;opacity:1;pointer-events:auto;align-items:center;transition:opacity .5s;display:flex}.anno.hidden{opacity:0;pointer-events:none}.anno.right{transform:translate(50%)}.anno.left{flex-direction:row-reverse;transform:translate(-50%)}.anno-dot{border:1px solid var(--amber);background:#c8a97e40;border-radius:50%;flex-shrink:0;width:7px;height:7px;transition:background .25s}.anno:hover .anno-dot{background:var(--amber)}.anno-line{flex-shrink:0;width:70px;height:1px}.anno.right .anno-line{background:linear-gradient(90deg, var(--amber), #c8a97e1a)}.anno.left .anno-line{background:linear-gradient(270deg, var(--amber), #c8a97e1a)}.anno-tag{font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--text);align-items:baseline;gap:9px;padding:8px 6px;font-size:11px;transition:color .25s;display:inline-flex}.anno:hover .anno-tag{color:var(--amber)}.anno-tag b{font-family:var(--serif);color:var(--amber);font-size:14px;font-style:italic;font-weight:500}.panel{-webkit-backdrop-filter:blur(22px);border:1px solid var(--border);opacity:0;visibility:hidden;pointer-events:none;z-index:120;background:#0e0905d1;border-radius:5px;width:min(430px,100vw - 56px);max-height:82vh;transition:opacity .55s,transform .55s cubic-bezier(.16,1,.3,1),visibility 0s linear .55s;display:flex;position:fixed;top:50%;right:28px;transform:translateY(-50%)translate(40px)}.panel.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .55s .45s,transform .55s cubic-bezier(.16,1,.3,1) .45s,visibility;transform:translateY(-50%)translate(0)}.panel-scroll{scrollbar-width:thin;scrollbar-color:var(--t3) transparent;padding:40px 38px 34px;overflow-y:auto}.panel-close{font-family:var(--serif);color:var(--t2);z-index:2;padding:6px;font-size:26px;line-height:1;transition:color .2s;position:absolute;top:10px;right:14px}.panel-close:hover{color:var(--amber)}.panel h2{font-family:var(--serif);margin-bottom:30px;font-size:34px;font-weight:500;line-height:1.1}.panel h2 em{color:var(--amber);font-style:italic}.entry{border-top:1px solid var(--border);padding:22px 0}.entry:last-child{padding-bottom:4px}.entry h3{font-family:var(--serif);letter-spacing:.01em;margin-bottom:3px;font-size:19px;font-weight:600}.entry .small-h{color:var(--amber);font-size:16px;font-style:italic;font-weight:500}.entry-org{color:var(--amber);margin-bottom:3px;font-size:11.5px}.entry-meta{color:var(--t2);letter-spacing:.03em;margin-bottom:14px;font-size:11px}.entry-meta strong{color:var(--text);font-weight:500}.entry ul{flex-direction:column;gap:8px;list-style:none;display:flex}.entry ul li{color:var(--t2);padding-left:18px;font-size:12.5px;font-weight:300;line-height:1.75;position:relative}.entry>ul li:before,.entry header+ul li:before{content:"—";color:var(--t3);position:absolute;left:0}.tags{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.tags span{letter-spacing:.06em;text-transform:uppercase;color:var(--t2);border:1px solid var(--border);border-radius:2px;padding:3px 9px;font-size:10px}.certs li,.frags li{justify-content:space-between;gap:14px;font-size:12.5px;display:flex;padding-left:0!important}.certs li:before,.frags li:before,.links li:before{content:none!important}.certs li em,.frags li em{color:var(--t3);text-align:right;flex-shrink:0;font-size:11px;font-style:normal}.frags strong{color:var(--text);font-weight:500}.prose{color:var(--t2);margin-bottom:6px;font-size:13px;font-weight:300;line-height:1.85}.prose a{color:var(--amber);border-bottom:1px solid #c8a97e66}.links li{padding-left:0!important}.links a{justify-content:space-between;gap:14px;font-size:12.5px;transition:color .2s;display:flex}.links a:hover{color:var(--amber)}.links a em{color:var(--t3);font-size:11px;font-style:normal}.like{margin-top:14px}.like-btn{border:1px solid var(--border);letter-spacing:.14em;text-transform:uppercase;color:var(--text);border-radius:3px;align-items:center;gap:10px;padding:11px 18px;font-size:11px;transition:border-color .25s,background .25s,color .25s,transform .12s;display:inline-flex}.like-btn:hover:not(:disabled){border-color:var(--amber);color:var(--amber);background:#c8a97e14}.like-btn:active:not(:disabled){transform:scale(.96)}.like-btn svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px;transition:fill .25s,transform .25s}.like-btn[data-liked=true]{border-color:var(--amber);color:var(--amber);cursor:default;opacity:1}.like-btn[data-liked=true] svg{fill:var(--amber);stroke:var(--amber);transform:translateY(-1px)}.like-count{color:var(--t2);margin-top:14px;font-size:12.5px}.like-count strong{font-family:var(--serif);color:var(--amber);margin-right:5px;font-size:24px;font-style:italic;font-weight:500}.like-dim{color:var(--t3);font-style:italic}.projects{-webkit-backdrop-filter:blur(22px);border:1px solid var(--border);opacity:0;visibility:hidden;pointer-events:none;z-index:120;background:#0c0805c7;border-radius:6px;flex-direction:column;width:min(1080px,100vw - 64px);max-height:74vh;padding:30px 34px 26px;transition:opacity .55s,transform .6s cubic-bezier(.16,1,.3,1),visibility 0s linear .55s;display:flex;position:fixed;bottom:96px;left:50%;transform:translate(-50%)translateY(28px)}.projects.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .55s .4s,transform .6s cubic-bezier(.16,1,.3,1) .4s,visibility;transform:translate(-50%)translateY(0)}.projects-close{top:8px;right:14px}.projects-head{margin-bottom:20px}.projects-head h2{font-family:var(--serif);font-size:32px;font-weight:500;line-height:1.1}.projects-head h2 em{color:var(--amber);font-style:italic}.projects-grid{scrollbar-width:thin;scrollbar-color:var(--t3) transparent;grid-template-columns:repeat(3,1fr);gap:14px;padding-right:4px;display:grid;overflow-y:auto}.proj-card{border:1px solid var(--border);background:#c8a97e05;border-radius:4px;flex-direction:column;padding:18px 18px 16px;transition:border-color .25s,background .25s,transform .25s;display:flex}.proj-card:hover{border-color:var(--amber);background:#c8a97e0f;transform:translateY(-3px)}.proj-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.proj-top h3{font-family:var(--serif);letter-spacing:.01em;font-size:20px;font-weight:600}.proj-arrow{color:var(--amber);opacity:.6;font-size:14px;transition:opacity .25s,transform .25s}.proj-card:hover .proj-arrow{opacity:1;transform:translate(2px,-2px)}.proj-tag{letter-spacing:.06em;text-transform:uppercase;color:var(--amber);margin:4px 0 10px;font-size:11px}.proj-desc{color:var(--t2);flex-grow:1;margin-bottom:14px;font-size:12.5px;font-weight:300;line-height:1.7}.proj-stack{flex-wrap:wrap;gap:5px;display:flex}.proj-stack span{letter-spacing:.05em;text-transform:uppercase;color:var(--t2);border:1px solid var(--border);border-radius:2px;padding:3px 7px;font-size:9.5px}.modal-backdrop{-webkit-backdrop-filter:blur(8px);opacity:0;visibility:hidden;pointer-events:none;z-index:300;background:#050302b8;justify-content:center;align-items:center;padding:40px;transition:opacity .4s,visibility 0s linear .4s;display:flex;position:fixed;inset:0}.modal-backdrop.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .4s}.modal{border:1px solid var(--border);background:#0e0905f5;border-radius:6px;flex-direction:column;width:min(820px,100%);height:min(88vh,1000px);transition:transform .45s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden;transform:translateY(16px)}.modal-backdrop.open .modal{transform:translateY(0)}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:20px 22px;display:flex}.modal-head h3{font-family:var(--serif);font-size:22px;font-weight:500}.modal-actions{align-items:center;gap:14px;display:flex}.btn-primary{letter-spacing:.14em;text-transform:uppercase;color:var(--bg);background:var(--amber);border-radius:3px;padding:11px 18px;font-size:10px;transition:background .25s}.btn-primary:hover{background:#d9bd96}.modal-x{font-family:var(--serif);color:var(--t2);padding:0 6px;font-size:28px;line-height:1;transition:color .2s}.modal-x:hover{color:var(--amber)}.modal-doc{background:#1a1a1a;flex:1}.modal-doc iframe{border:0;width:100%;height:100%}@media (width<=760px){.top{padding:calc(14px + env(safe-area-inset-top)) 16px 14px}.app:before{content:"";z-index:1;pointer-events:none;background:linear-gradient(#0000,#0a06048c 40%,#0a0604f2 76%);height:50%;position:fixed;bottom:0;left:0;right:0}.status{display:none}.btn-ghost{letter-spacing:.1em;padding:8px 12px;font-size:9px}.app.shift canvas{transform:none}.hero{left:22px;right:22px;bottom:calc(128px + env(safe-area-inset-bottom));z-index:95;max-width:none}.hero .kicker{margin-bottom:10px}.hero h1{margin-bottom:12px;font-size:31px;line-height:1.06}.hero-line{max-width:none;font-size:12px;line-height:1.72}.hint,.foot{display:none}.contact-card{left:12px;right:auto;bottom:calc(70px + env(safe-area-inset-bottom));width:auto;padding:7px}.contact-title,.contact-link span{display:none}.contact-actions{gap:3px}.contact-link{padding:7px}.dock{bottom:calc(14px + env(safe-area-inset-bottom));justify-content:space-between;width:calc(100vw - 24px)}.dock-item{letter-spacing:.04em;gap:5px;padding:9px 5px;font-size:8.5px}.dock-n{display:none}.panel{top:auto;left:12px;right:12px;bottom:calc(64px + env(safe-area-inset-bottom));width:auto;max-height:46vh;transform:translateY(30px)}.panel.open{transform:translateY(0)}.panel-scroll{padding:30px 24px 24px}.panel h2{margin-bottom:20px;font-size:27px}.anno{display:none!important}.projects{left:12px;right:12px;bottom:calc(60px + env(safe-area-inset-bottom));width:auto;max-height:54vh;padding:24px 18px 18px;transform:translateY(28px)}.projects.open{transform:translateY(0)}.projects-head{margin-bottom:14px}.projects-head h2{font-size:26px}.projects-grid{grid-template-columns:1fr;gap:10px}.modal-backdrop{padding:0}.modal{border:0;border-radius:0;width:100%;height:100%}.modal-head{flex-wrap:wrap;padding:14px 16px}.modal-head h3{font-size:18px}.btn-primary{padding:9px 13px}}
