.obs-portfolio{background:var(--bg);color:var(--fg);font-family:var(--mono);-webkit-font-smoothing:antialiased;cursor:none;--bg:#0a0a0b;--bg-2:#121214;--bg-3:#1a1a1d;--fg:#ececec;--fg-2:#a8a8a8;--fg-3:#6a6a6a;--fg-4:#2e2e30;--accent:#e64246;--accent-2:#ff6f71;--accent-dim:#e6424659;--accent-glow:#e6424626;--serif:"Fraunces", Georgia, serif;--sans:"Inter", -apple-system, system-ui, sans-serif;--mono:"JetBrains Mono", "SF Mono", Consolas, monospace;flex-direction:column;min-height:100vh;font-size:14px;display:flex;overflow-x:hidden}@supports (color:lab(0% 0 0)){.obs-portfolio{--accent:lab(53.8843% 63.4136 36.8715);--accent-2:lab(65.6781% 57.227 28.8608);--accent-dim:lab(53.8843% 63.4136 36.8715/.35);--accent-glow:lab(53.8843% 63.4136 36.8715/.15)}}.obs-portfolio,.obs-portfolio *{box-sizing:border-box}.obs-portfolio *{margin:0;padding:0}.obs-portfolio-surface{flex-direction:column;flex:auto;width:100%;min-height:100vh;display:flex}.obs-portfolio a{color:inherit;text-decoration:none}.obs-portfolio button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.obs-portfolio ul{list-style:none}.obs-portfolio ::selection{background:var(--accent);color:#fff}.obs-portfolio.grain:before{content:"";pointer-events:none;opacity:.05;z-index:9998;mix-blend-mode:overlay;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.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.9 0 0 0 0 0.9 0 0 0 0 0.9 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.obs-portfolio .cursor-dot,.obs-portfolio .cursor-ring{pointer-events:none;z-index:10000;mix-blend-mode:difference;will-change:transform;position:fixed;top:0;left:0}.obs-portfolio .cursor-dot{background:var(--fg);border-radius:50%;width:6px;height:6px;transform:translate(-50%,-50%)}.obs-portfolio .cursor-ring{border:1px solid var(--fg);border-radius:50%;width:32px;height:32px;transition:width .2s,height .2s,border-color .2s;transform:translate(-50%,-50%)}.obs-portfolio .cursor-ring.hover{border-color:#fff;width:56px;height:56px}@media (pointer:coarse){.obs-portfolio .cursor-dot,.obs-portfolio .cursor-ring{display:none}}.menubar{z-index:50;background:var(--bg-2);border-bottom:1px solid var(--fg-4);height:30px;color:var(--fg-2);letter-spacing:.04em;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 18px;font-size:11px;display:flex;position:sticky;top:0}.menubar .left{align-items:center;gap:22px;display:flex}.menubar .brand{color:var(--accent);letter-spacing:.08em;font-weight:600}.menubar .menu-item{color:var(--fg-2);cursor:none}.menubar .menu-item:hover{color:var(--fg)}.menubar .right{color:var(--fg-3);align-items:center;gap:22px;display:flex}.menubar .dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 8px var(--accent);border-radius:50%;margin-right:6px;animation:2.2s infinite pulseDot;display:inline-block}@keyframes pulseDot{0%,to{box-shadow:0 0 8px var(--accent)}50%{box-shadow:0 0 16px var(--accent)}}.menubar .kbd{font-family:var(--mono);border:1px solid var(--fg-4);color:var(--fg-2);border-radius:3px;padding:1px 6px;font-size:10px}.hero{background:radial-gradient(ellipse at 20% 10%, #b41e1e0d, transparent 55%), radial-gradient(ellipse at 80% 90%, #b41e1e0a, transparent 55%), var(--bg);flex:1;min-height:calc(100vh - 30px);position:relative;overflow:hidden}.sky-canvas{z-index:0;width:100%;height:100%;position:absolute;inset:0}.hero:before{content:"";background-image:linear-gradient(var(--fg-4) 1px, transparent 1px), linear-gradient(90deg, var(--fg-4) 1px, transparent 1px);opacity:.08;pointer-events:none;z-index:1;background-size:32px 32px;position:absolute;inset:0}.hero-content{z-index:5;pointer-events:none;max-width:720px;position:absolute;top:64px;left:48px}.hero-content>*{pointer-events:auto}.prompt-line{font-family:var(--mono);color:var(--fg-3);align-items:baseline;gap:8px;margin-bottom:6px;font-size:12.5px;display:flex}.prompt-line .user{color:var(--accent)}.prompt-line .path{color:var(--fg-2)}.prompt-line .cmd{color:var(--fg)}.hero h1{font-family:var(--serif);letter-spacing:-.035em;color:var(--fg);margin-top:24px;font-size:clamp(64px,10vw,148px);font-weight:300;line-height:.88}.hero h1 .em{color:var(--accent);font-style:italic;font-weight:400}.hero h1 .glitch-hover{cursor:none;display:inline-block;position:relative}.hero h1 .glitch-hover:hover{animation:.3s steps(2,end) infinite glitchHover}@keyframes glitchHover{0%{transform:translate(0)}25%{filter:drop-shadow(2px 0 0 var(--accent));transform:translate(-1px,1px)}50%{filter:drop-shadow(-2px 0 0 var(--accent));transform:translate(1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(0)}}.caret{background:var(--accent);vertical-align:baseline;border-radius:1px;width:.08em;height:.8em;margin-left:6px;animation:1.06s steps(2,end) infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero .tagline{font-family:var(--mono);color:var(--fg-2);max-width:540px;margin-top:28px;font-size:13px;line-height:1.75}.hero .tagline .hl{color:var(--accent)}.window{background:color-mix(in oklch, var(--bg-2) 88%, transparent);-webkit-backdrop-filter:blur(14px);border:1px solid var(--fg-4);z-index:6;border-radius:5px;position:absolute;overflow:hidden;box-shadow:0 24px 60px #0000008c,0 4px 20px #0000004d,inset 0 1px #ffffff0a}.window .titlebar{background:var(--bg-3);border-bottom:1px solid var(--fg-4);letter-spacing:.06em;text-transform:uppercase;height:26px;color:var(--fg-3);align-items:center;gap:8px;padding:0 10px;font-size:10px;display:flex}.window .tl-btns{gap:5px;display:flex}.window .tl-btns span{border-radius:50%;width:9px;height:9px}.window .tl-btns span:first-child{background:var(--accent)}.window .tl-btns span:nth-child(2){background:#6a6a6a}.window .tl-btns span:nth-child(3){background:#444}.window .title{font-family:var(--mono);margin-left:8px}.window .meta{color:var(--fg-4);margin-left:auto}.window .content{padding:14px 16px;font-size:12px;line-height:1.75}.w-stack{width:290px;top:72px;right:48px}.stack-row{border-bottom:1px dashed var(--fg-4);justify-content:space-between;padding:5px 0;font-size:11.5px;display:flex}.stack-row:last-child{border-bottom:none}.stack-row .k{color:var(--fg-3)}.stack-row .v{color:var(--fg)}.stack-row .v .accent{color:var(--accent)}.w-now{width:340px;bottom:44px;right:48px}.w-now .content{color:var(--fg-2);font-size:11.5px}.now-head{color:var(--accent);text-transform:uppercase;letter-spacing:.12em;align-items:center;gap:8px;margin-bottom:10px;font-size:10px;display:flex}.now-head:before{content:"▲"}.now-list li{align-items:baseline;gap:10px;padding:4px 0;display:flex}.now-list li:before{content:"▸";color:var(--fg-4);flex-shrink:0}.w-clock{width:210px;top:72px;right:358px}.w-clock .big{font-family:var(--mono);color:var(--fg);letter-spacing:-.02em;font-size:40px;font-weight:300}.w-clock .tz{color:var(--fg-3);letter-spacing:.12em;text-transform:uppercase;margin-top:6px;font-size:10px}.w-clock .coords{color:var(--fg-4);margin-top:2px;font-size:10px}.sky-hint{z-index:5;font-family:var(--mono);color:var(--fg-3);letter-spacing:.15em;text-transform:uppercase;pointer-events:none;align-items:center;gap:12px;font-size:10.5px;display:flex;position:absolute;bottom:44px;left:48px}.sky-hint:before{content:"";background:var(--fg-4);width:40px;height:1px}.ascii-sig{font-family:var(--mono);color:var(--fg-4);white-space:pre;pointer-events:none;-webkit-user-select:none;user-select:none;text-align:center;z-index:5;font-size:10px;line-height:1.2;position:absolute;bottom:48px;left:48%;transform:translate(-50%)}.ascii-sig .k{color:var(--accent)}.atlas{background:var(--bg);border-top:1px solid var(--fg-4);padding:72px 0 0;position:relative}.atlas-head{justify-content:space-between;align-items:baseline;margin-bottom:12px;padding:0 48px;display:flex}.atlas-head .idx{font-family:var(--mono);color:var(--fg-3);letter-spacing:.12em;text-transform:uppercase;font-size:11px}.atlas-head .idx .sep{color:var(--fg-4)}.atlas-head .counter{font-family:var(--mono);color:var(--fg-3);letter-spacing:.1em;font-size:11px}.atlas-head .counter em{color:var(--accent);font-style:normal;font-weight:500}.atlas-title{justify-content:space-between;align-items:end;padding:0 48px 48px;display:flex}.atlas-title h2{font-family:var(--serif);letter-spacing:-.025em;font-size:clamp(40px,6vw,84px);font-weight:300;line-height:.95}.atlas-title h2 em{color:var(--accent);font-weight:400}.atlas-title .scroll-hint{font-family:var(--mono);color:var(--fg-3);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:10px;font-size:10.5px;display:flex}.atlas-title .scroll-hint .kbd{font-family:var(--mono);border:1px solid var(--fg-4);color:var(--fg-2);border-radius:3px;padding:2px 7px;font-size:10px}.atlas-track{scroll-snap-type:x proximity;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--fg-4) transparent;border-top:1px solid var(--fg-4);cursor:grab;touch-action:pan-y;gap:0;padding-bottom:16px;display:flex;overflow-x:auto}.atlas-track.atlas-track--dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.atlas-track::-webkit-scrollbar{height:4px}.atlas-track::-webkit-scrollbar-track{background:var(--bg-2)}.atlas-track::-webkit-scrollbar-thumb{background:var(--fg-4)}.chart{border-right:1px solid var(--fg-4);scroll-snap-align:start;flex-shrink:0;width:580px;padding:36px 32px 48px;transition:background .3s;position:relative}.chart:hover{background:var(--bg-2)}.chart .coord{font-family:var(--mono);color:var(--fg-3);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;margin-bottom:18px;font-size:10.5px;display:flex}.chart .coord .tag{color:var(--accent);font-weight:500}.chart .viz{aspect-ratio:3/2;border:1px solid var(--fg-4);background:radial-gradient(circle at 30%,#b41e1e1a,#0000 60%),#0a0a0b;position:relative;overflow:hidden}.chart .viz:before{content:"";background-image:linear-gradient(#ececec0a 1px,#0000 1px),linear-gradient(90deg,#ececec0a 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0}.chart .viz .lbl{font-family:var(--mono);color:var(--fg-4);letter-spacing:.12em;z-index:2;font-size:9.5px;position:absolute;top:12px;left:12px}.chart .viz .lbl-code{font-family:var(--mono);color:var(--fg-4);letter-spacing:.08em;z-index:2;font-size:9.5px;position:absolute;bottom:12px;left:12px}.chart .viz .status{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;z-index:2;padding:2px 9px;font-size:9.5px;position:absolute;top:12px;right:12px}.chart .viz .status.live{color:var(--accent);border:1px solid var(--accent-dim);background:var(--accent-glow)}.chart .viz .status.done{color:#7dc97d;background:#7dc97d14;border:1px solid #7dc97d4d}.chart .viz svg{width:100%;height:100%;position:absolute;inset:0}.chart:hover .viz svg .pulse{filter:drop-shadow(0 0 8px var(--accent))}.chart .info{margin-top:22px}.chart .info .num{font-family:var(--mono);color:var(--fg-3);letter-spacing:.12em;margin-bottom:6px;font-size:10.5px}.chart .info h3{font-family:var(--serif);letter-spacing:-.02em;color:var(--fg);font-size:32px;font-weight:400;line-height:1.05}.chart .info h3 .i{color:var(--accent);font-style:italic}.chart .info p{font-family:var(--sans);color:var(--fg-2);max-width:480px;margin-top:12px;font-size:13.5px;line-height:1.6}.chart .info .tags{flex-wrap:wrap;gap:6px;margin-top:18px;display:flex}.chart .info .tags span{font-family:var(--mono);border:1px solid var(--fg-4);color:var(--fg-3);letter-spacing:.06em;padding:2px 9px;font-size:10px;transition:color .2s,border-color .2s}.chart:hover .info .tags span{color:var(--fg-2);border-color:var(--fg-3)}.chart .chart-details-link{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--accent-dim);margin-top:20px;padding-bottom:2px;font-size:11px;display:inline-block}.chart .chart-details-link:hover{color:var(--accent-2);border-color:var(--accent)}.log{border-top:1px solid var(--fg-4);grid-template-columns:280px 1fr;gap:80px;padding:120px 48px 100px;display:grid}.log .sidebar .k{font-family:var(--mono);color:var(--fg-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:20px;font-size:10.5px}.log .sidebar h2{font-family:var(--serif);letter-spacing:-.03em;font-size:clamp(44px,5vw,72px);font-weight:300;line-height:.95}.log .sidebar h2 em{color:var(--accent);font-weight:400}.log .sidebar .more{border-top:1px dashed var(--fg-4);font-family:var(--mono);color:var(--fg-3);margin-top:40px;padding-top:20px;font-size:11px;line-height:1.8}.log .sidebar .more strong{color:var(--fg);font-weight:500}.log .body{border-left:1px solid var(--fg-4);padding-left:40px}.log .entry{border-bottom:1px dashed var(--fg-4);grid-template-columns:130px 1fr;align-items:start;gap:28px;padding:22px 0;display:grid}.log .entry .date{font-family:var(--mono);color:var(--accent);letter-spacing:.08em;padding-top:4px;font-size:10.5px}.log .entry h4{font-family:var(--serif);letter-spacing:-.01em;color:var(--fg);margin-bottom:8px;font-size:22px;font-weight:400}.log .entry h4 em{color:var(--accent);font-style:italic}.log .entry p{font-family:var(--sans);color:var(--fg-2);font-size:13.5px;line-height:1.6}.log .entry p code{font-family:var(--mono);color:var(--accent);background:var(--accent-glow);border-radius:2px;padding:1px 5px;font-size:12px}.console-section{background:var(--bg);border-top:1px solid var(--fg-4);padding:140px 48px 80px;position:relative}.console-section h2{font-family:var(--serif);letter-spacing:-.035em;max-width:1200px;margin-bottom:56px;font-size:clamp(48px,8vw,120px);font-weight:300;line-height:.9}.console-section h2 em{color:var(--accent);font-style:italic;font-weight:400}.console-box{background:var(--bg-2);border:1px solid var(--fg-4);max-width:720px;font-family:var(--mono);border-radius:5px;box-shadow:0 20px 60px #0006}.console-box .cb-head{border-bottom:1px solid var(--fg-4);color:var(--fg-3);background:var(--bg-3);align-items:center;gap:10px;padding:9px 14px;font-size:11px;display:flex}.console-box .cb-body{padding:22px 24px;font-size:13px;line-height:1.95}.console-box .line .prompt{color:var(--accent)}.console-box .line .cmd{color:var(--fg)}.console-box .output{color:var(--fg-2);padding-left:18px}.console-box a{color:var(--accent);border-bottom:1px solid var(--accent-dim)}.console-box a:hover{border-color:var(--accent);color:var(--accent-2)}.footer{font-family:var(--mono);color:var(--fg-4);letter-spacing:.1em;text-transform:uppercase;border-top:1px solid var(--fg-4);justify-content:space-between;padding:36px 48px;font-size:10.5px;display:flex}.footer a:hover{color:var(--accent)}.cp-backdrop{z-index:9998;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(4px);background:#0000008c;transition:opacity .18s;position:fixed;inset:0}.cp-backdrop.open{opacity:1;pointer-events:auto}.cmd-palette{background:var(--bg-2);border:1px solid var(--accent-dim);width:560px;box-shadow:0 40px 100px #000000b3, 0 0 0 1px var(--accent-glow);font-family:var(--mono);z-index:9999;opacity:0;pointer-events:none;border-radius:6px;transition:opacity .18s,transform .18s;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(.96)}.cmd-palette.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)scale(1)}.cmd-palette .cp-head{border-bottom:1px solid var(--fg-4);align-items:center;gap:10px;padding:0 20px;display:flex}.cmd-palette .cp-head .arrow{color:var(--accent)}.cmd-palette .cp-input{font-family:var(--mono);color:var(--fg);background:0 0;border:none;outline:none;flex:1;padding:16px 0;font-size:14px}.cmd-palette .cp-input::placeholder{color:var(--fg-3)}.cmd-palette .cp-results{max-height:340px;padding:6px 0;overflow-y:auto}.cp-item{color:var(--fg-2);cursor:none;border-left:2px solid #0000;justify-content:space-between;padding:10px 20px;font-size:12.5px;display:flex}.cp-item:hover,.cp-item.sel{background:var(--bg-3);color:var(--fg);border-left-color:var(--accent)}.cp-item .hint{color:var(--fg-4);letter-spacing:.1em;font-size:10px}.toast{background:var(--bg-2);border:1px solid var(--accent);font-family:var(--mono);color:var(--fg);opacity:0;z-index:9999;border-radius:3px;padding:12px 22px;font-size:12px;transition:opacity .3s,transform .3s;position:fixed;bottom:32px;left:50%;transform:translate(-50%)translateY(40px);box-shadow:0 10px 30px #0006}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}@media (max-width:1100px){.w-clock{display:none}.w-stack{width:240px;top:56px;right:32px}.w-now{width:280px;bottom:32px;left:auto;right:32px}.hero-content{top:56px;left:32px}}@media (max-width:900px){.obs-portfolio{cursor:auto}.menubar .menu-item,.menubar .kbd,.w-stack,.w-now{display:none}.hero-content{top:52px;left:24px;right:24px}.hero h1{font-size:56px}.atlas-head,.atlas-title,.log,.console-section,.footer{padding-left:24px;padding-right:24px}.log{grid-template-columns:1fr;gap:40px}.log .body{padding-left:20px}.log .entry{grid-template-columns:1fr;gap:8px}.chart{width:88vw;padding:28px 24px}.sky-hint,.ascii-sig{display:none}}.obs-portfolio button.cp-item{width:100%;font:inherit;font-family:var(--mono);text-align:left;cursor:pointer;background:0 0;border:none}.obs-portfolio[data-obs-theme=light]{--bg:#f4f2ec;--bg-2:#e8e4da;--bg-3:#dcd6c8;--fg:#141416;--fg-2:#4a4a4f;--fg-3:#6f6f76;--fg-4:#c4bdb0;--accent:#c21628;--accent-2:#a20222;--accent-dim:#c2162859;--accent-glow:#c216281f}@supports (color:lab(0% 0 0)){.obs-portfolio[data-obs-theme=light]{--accent:lab(42.2526% 63.6516 39.1952);--accent-2:lab(34.2985% 57.6071 32.3138);--accent-dim:lab(42.2526% 63.6516 39.1952/.35);--accent-glow:lab(42.2526% 63.6516 39.1952/.12)}}.obs-portfolio[data-obs-theme=light] .hero{background:radial-gradient(ellipse at 20% 10%, #b41e1e0f, transparent 55%), radial-gradient(ellipse at 80% 90%, #b41e1e0d, transparent 55%), var(--bg)}.obs-portfolio[data-obs-theme=light] .chart .viz{background:radial-gradient(circle at 30% 50%, #b41e1e12, transparent 60%), var(--bg-3)}.obs-portfolio[data-obs-theme=light] .chart .viz:before{background-image:linear-gradient(#1414160f 1px,#0000 1px),linear-gradient(90deg,#1414160f 1px,#0000 1px)}.obs-portfolio[data-obs-theme=light] .cursor-dot,.obs-portfolio[data-obs-theme=light] .cursor-ring{mix-blend-mode:normal}.obs-portfolio[data-obs-theme=light] .cursor-dot{background:var(--accent);box-shadow:0 0 0 1px #fffffff2,0 0 0 2px #1414161f,0 2px 14px #0000002e}.obs-portfolio[data-obs-theme=light] .cursor-ring{border-width:2px;border-color:#970014;border-color:lab(30.7235% 60.6861 41.1666)}.obs-portfolio[data-obs-theme=light] .cursor-ring.hover{border-width:2px;border-color:#690008;border-color:lab(19.4198% 51.2187 31.6099)}.obs-portfolio[data-obs-theme=light] .console-box{box-shadow:0 20px 60px #0000001a}.obs-portfolio[data-obs-theme=light] .cmd-palette{box-shadow:0 40px 100px #0000001f, 0 0 0 1px var(--accent-glow)}.obs-portfolio[data-obs-theme=light] .cp-backdrop{background:#28262240}.obs-portfolio[data-obs-theme=light] .toast{box-shadow:0 10px 30px #0000001f}.obs-portfolio .project-detail-page{flex:1;width:100%;max-width:880px;margin:0 auto;padding:28px 48px 80px}.obs-portfolio .project-detail-page .pd-back{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--accent-dim);margin-bottom:28px;font-size:11px;display:inline-block}.obs-portfolio .project-detail-page .pd-back:hover{color:var(--accent-2);border-color:var(--accent)}.obs-portfolio .project-detail-page .pd-meta{font-family:var(--mono);color:var(--fg-3);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px;font-size:10px}.obs-portfolio .project-detail-page h1{font-family:var(--serif);letter-spacing:-.02em;margin-bottom:12px;font-size:clamp(32px,5vw,52px);font-weight:400;line-height:1.05}.obs-portfolio .project-detail-page .pd-status{font-family:var(--mono);border:1px solid var(--fg-4);color:var(--fg-3);letter-spacing:.1em;text-transform:uppercase;margin-bottom:22px;padding:3px 10px;font-size:10px;display:inline-block}.obs-portfolio .project-detail-page .pd-status.live{color:var(--accent);border-color:var(--accent-dim);background:var(--accent-glow)}.obs-portfolio .project-detail-page .pd-status.done{color:#7dc97d;background:#7dc97d14;border-color:#7dc97d59}.obs-portfolio .project-detail-page .pd-lead{font-family:var(--sans);color:var(--fg-2);margin-bottom:36px;font-size:16px;line-height:1.65}.obs-portfolio .project-detail-page h2{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-3);border-bottom:1px solid var(--fg-4);margin:32px 0 14px;padding-bottom:8px;font-size:10px}.obs-portfolio .project-detail-page .pd-body{font-family:var(--sans);color:var(--fg-2);font-size:14px;line-height:1.7}.obs-portfolio .project-detail-page .pd-body p+p{margin-top:14px}.obs-portfolio .project-detail-page .pd-highlights-list ul{font-family:var(--sans);color:var(--fg-2);margin:0;padding:0;font-size:14px;line-height:1.65;list-style:none}.obs-portfolio .project-detail-page .pd-highlights-list li{margin-bottom:12px;padding-left:1.35em;position:relative}.obs-portfolio .project-detail-page .pd-highlights-list li:last-child{margin-bottom:0}.obs-portfolio .project-detail-page .pd-highlights-list li:before{content:"▸";color:var(--accent);font-size:.95em;position:absolute;top:.05em;left:0}.obs-portfolio .project-detail-page .pd-embed-open{font-family:var(--mono);margin:0 0 12px;font-size:11px}.obs-portfolio .project-detail-page .pd-embed-open a{color:var(--accent);border-bottom:1px solid var(--accent-dim)}.obs-portfolio .project-detail-page .pd-embed-open a:hover{color:var(--accent-2);border-color:var(--accent)}.obs-portfolio .project-detail-page .pd-embed-wrap{border:1px solid var(--fg-4);background:var(--bg-2);aspect-ratio:16/10;border-radius:4px;width:100%;min-height:320px;max-height:min(72vh,760px);position:relative;overflow:hidden}.obs-portfolio .project-detail-page .pd-embed-wrap iframe{background:var(--bg);border:0;width:100%;height:100%;display:block}.obs-portfolio .project-detail-page .pd-embed-note{font-family:var(--mono);color:var(--fg-3);max-width:52em;margin:10px 0 0;font-size:10px;line-height:1.5}.obs-portfolio .project-detail-page .pd-links{flex-wrap:wrap;gap:14px;margin-top:28px;display:flex}.obs-portfolio .project-detail-page .pd-links a{font-family:var(--mono);color:var(--accent);border-bottom:1px solid var(--accent-dim);letter-spacing:.06em;font-size:11px}.obs-portfolio .project-detail-page .pd-links a:hover{color:var(--accent-2);border-color:var(--accent)}.obs-portfolio .project-detail-page .pd-tags{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.obs-portfolio .project-detail-page .pd-tags span{font-family:var(--mono);border:1px solid var(--fg-4);color:var(--fg-3);padding:2px 9px;font-size:10px}.obs-portfolio .project-detail-page .pd-gallery{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:18px;margin-top:12px;display:grid}.obs-portfolio .project-detail-page .pd-gallery-thumb{border:1px solid var(--fg-4);background:var(--bg-2);cursor:pointer;text-align:left;border-radius:3px;width:100%;margin:0;padding:0;transition:border-color .2s,box-shadow .2s;display:block;overflow:hidden}.obs-portfolio .project-detail-page .pd-gallery-thumb:hover{border-color:var(--accent-dim);box-shadow:0 0 0 1px var(--accent-glow)}.obs-portfolio .project-detail-page .pd-gallery-thumb figure{margin:0;overflow:hidden}.obs-portfolio .project-detail-page .pd-gallery-thumb img{width:100%;height:auto;transition:transform .35s;display:block}.obs-portfolio .project-detail-page .pd-gallery-thumb:hover img{transform:scale(1.03)}.obs-portfolio .project-detail-page .pd-hero-img{max-height:480px;margin:24px 0}.obs-portfolio .project-detail-page .pd-hero-img img{object-fit:cover;width:100%;height:auto;max-height:480px;display:block}.obs-portfolio .project-detail-page .pd-lightbox{z-index:11002;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.obs-portfolio .project-detail-page .pd-lightbox-backdrop{z-index:0;cursor:pointer;background:#000000e6;border:none;margin:0;padding:0;position:absolute;inset:0}.obs-portfolio .project-detail-page .pd-lightbox-inner{z-index:1;pointer-events:none;align-items:center;gap:8px;max-width:min(96vw,1280px);max-height:92vh;display:flex;position:relative}.obs-portfolio .project-detail-page .pd-lightbox-inner>*{pointer-events:auto}.obs-portfolio .project-detail-page .pd-lightbox-imgwrap{border:1px solid var(--fg-4);background:var(--bg-2);border-radius:4px;flex:1;min-width:0;max-height:92vh;overflow:auto}.obs-portfolio .project-detail-page .pd-lightbox-imgwrap img{object-fit:contain;width:100%;height:auto;max-height:88vh;display:block}.obs-portfolio .project-detail-page .pd-lightbox-close{z-index:11004;border:1px solid var(--fg-4);background:var(--bg-2);width:40px;height:40px;color:var(--fg);cursor:pointer;border-radius:4px;font-size:22px;line-height:1;position:fixed;top:20px;right:20px}.obs-portfolio .project-detail-page .pd-lightbox-close:hover{border-color:var(--accent);color:var(--accent)}.obs-portfolio .project-detail-page .pd-lightbox-nav{border:1px solid var(--fg-4);background:var(--bg-2);width:44px;height:88px;color:var(--fg-2);cursor:pointer;border-radius:4px;flex-shrink:0;font-size:28px;line-height:1}.obs-portfolio .project-detail-page .pd-lightbox-nav:hover{border-color:var(--accent);color:var(--accent)}
