.projects-index,.project-detail{max-width:860px;margin:0 auto;padding:56px 20px 80px}.projects-index h1,.project-detail h1{letter-spacing:-.01em;color:var(--fg-strong);margin:0 0 6px;font-size:34px;font-weight:700}.projects-index .sub{color:var(--fg-dim);max-width:620px;margin:0 0 32px}.live-chip,.origin{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.06em;text-transform:uppercase;vertical-align:1px;border-radius:4px;padding:1px 6px;font-size:10px;display:inline-block}.live-chip{border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--accent)}.origin-internal.origin{color:var(--violet);border:1px solid color-mix(in srgb, var(--violet) 35%, transparent)}.origin-contract.origin{color:var(--pass);border:1px solid color-mix(in srgb, var(--pass) 35%, transparent)}.title-native{color:var(--fg-dim);margin-left:2px;font-size:.8em;font-weight:500}.skill-filter{margin:-8px 0 22px}.skill-chips{flex-wrap:wrap;gap:6px;display:flex}.skill-chip{border:1px solid var(--line);background:var(--panel);color:var(--fg-dim);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12.5px;transition:border-color .15s,color .15s;display:inline-flex}.skill-chip:hover{border-color:var(--accent-dim);color:var(--fg)}.skill-chip[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent)}.skill-more{border:1px dashed var(--line);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:4px 10px;font-size:12.5px}.skill-more:hover{border-color:var(--accent-dim)}.skill-chip .n{color:var(--fg-faint);font-family:var(--font-mono), ui-monospace, monospace;font-size:10.5px}.skill-status{min-height:1lh;color:var(--fg-faint);margin:10px 2px 0;font-size:12.5px}.skill-status strong{color:var(--fg);font-weight:600}.skill-clear{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.skill-clear:hover{text-decoration:underline}.tile-skills,.detail-skills{flex-wrap:wrap;gap:5px;margin:10px 0 0;padding:0;list-style:none;display:flex}.tile-skills li{background:color-mix(in srgb, var(--accent) 9%, transparent);color:color-mix(in srgb, var(--accent) 80%, var(--fg));border-radius:4px;padding:2px 7px;font-size:11.5px}.tile-skills li.more{color:var(--fg-faint);background:0 0}.detail-skills{gap:6px;margin-top:14px}.detail-skills a{border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);background:color-mix(in srgb, var(--accent) 8%, transparent);color:color-mix(in srgb, var(--accent) 85%, var(--fg));border-radius:999px;padding:3px 10px;font-size:12.5px;text-decoration:none;display:inline-block}.detail-skills a:hover{border-color:var(--accent)}.tile-skills,.detail-skills{position:relative}.tip{z-index:5;border:1px solid var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 14%, transparent), 0 16px 36px #0009;color:var(--fg-strong);font-family:var(--font-sans), system-ui, sans-serif;text-align:left;white-space:normal;pointer-events:none;opacity:0;visibility:hidden;transform-origin:bottom;background:linear-gradient(#10283a,#0c1824);border-radius:10px;flex-direction:column;gap:4px;padding:11px 13px 12px;font-size:13px;font-weight:400;line-height:1.5;transition:opacity .14s ease-out,transform .18s cubic-bezier(.2,.8,.2,1.2),visibility 0s linear .14s;display:flex;position:absolute;bottom:calc(100% + 10px);left:-6px;right:-6px;transform:translateY(6px)scale(.97)}.tip b{color:var(--accent);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.1em;text-transform:uppercase;font-size:10.5px;font-weight:600}.has-tip:hover .tip,.has-tip:focus-within .tip{opacity:1;visibility:visible;transition:opacity .14s ease-out,transform .18s cubic-bezier(.2,.8,.2,1.2),visibility;transform:none}.tile-skills li.has-tip{cursor:help;transition:background .12s,color .12s,box-shadow .12s}.tile-skills li.has-tip:hover{background:var(--accent);color:#06121b;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent)}.detail-skills .tip{transform-origin:0 0;width:min(440px,100%);top:calc(100% + 10px);bottom:auto;right:auto;transform:translateY(-6px)scale(.97)}.detail-skills li.has-tip:hover a,.detail-skills li.has-tip:focus-within a{border-color:var(--accent);background:var(--accent);color:#06121b}@media (prefers-reduced-motion:reduce){.tip,.has-tip:hover .tip{transition:none;transform:none}}.involved{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px;margin:0;display:grid}.involved dt a{color:var(--accent);font-size:14px;font-weight:600;text-decoration:none}.involved dt a:hover{text-decoration:underline}.involved dd{color:var(--fg-dim);margin:3px 0 0;font-size:13.5px;line-height:1.55}@media (max-width:640px){.involved{grid-template-columns:minmax(0,1fr)}}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}@media (min-width:1180px){.projects-index{max-width:1280px}.projects-index .sub,.projects-index h1{max-width:860px}.project-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.tile-body h2{font-size:19px}.blank-stamp{padding:5px 10px 4px;font-size:12px}.blank-stamp small{font-size:8.5px}}.project-tile{background:var(--panel);color:var(--fg);border:1.5px solid #ffffffd1;border-radius:10px;flex-direction:column;text-decoration:none;transition:border-color .15s,transform .15s;display:flex;box-shadow:0 1px 2px #00000073,0 12px 32px #0000004d}.project-tile:hover,.project-tile:focus-visible{border-color:#fff;transform:translateY(-2px);box-shadow:0 0 0 3px #ffffff1f,0 18px 44px #00000073}.project-tile .project-art{border-bottom:1px solid var(--line);border-radius:9px 9px 0 0}.project-tile:hover .project-art img,.project-tile:hover .project-art video{transform:scale(1.03)}.tile-body{flex-direction:column;flex:1;padding:14px 16px 22px;display:flex}.tile-body p{line-height:1.6}.tile-body .tile-skills{align-content:flex-start;margin-top:14px}@supports (grid-template-rows:subgrid){.project-tile{grid-row:span 5;grid-template-rows:subgrid;row-gap:0;display:grid}.tile-body{display:contents}.project-tile .tile-body>*{margin-left:16px;margin-right:16px}.project-tile .tile-chips{margin-top:14px}.project-tile .tile-skills{margin-bottom:22px}}.tile-chips{gap:6px;min-height:18px;margin-bottom:6px;display:flex}.tile-body h2{color:var(--fg-strong);margin:0 0 4px;font-size:19px;font-weight:700}.tile-body p{color:var(--fg-dim);margin:0;font-size:14px}.project-art{aspect-ratio:16/10;background:var(--bg-raised);position:relative;overflow:hidden}.project-art img,.project-art video{object-fit:cover;object-position:top center;transition:transform .3s}.project-art video{width:100%;height:100%;position:absolute;inset:0}.project-art-contain{background:#0d0e12}.project-art-contain img,.project-art-contain video{object-fit:contain;object-position:center;padding:4% 3%}.project-art-blank{background:radial-gradient(120% 90% at 0% 0%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 60%), var(--bg-raised);place-items:center;display:grid}.project-art-blank.origin-internal{background:radial-gradient(120% 90% at 0% 0%, color-mix(in srgb, var(--violet) 16%, transparent), transparent 60%), var(--bg-raised)}.project-art-blank.origin-contract{background:radial-gradient(120% 90% at 0% 0%, color-mix(in srgb, var(--pass) 14%, transparent), transparent 60%), var(--bg-raised)}.wire{border:1px solid var(--line);background:var(--panel);opacity:.85;border-radius:8px;width:62%;height:68%;overflow:hidden}.wire-bar{border-bottom:1px solid var(--line);gap:5px;padding:7px 9px;display:flex}.wire-bar i{background:var(--line);border-radius:50%;width:7px;height:7px}.wire-body{flex-direction:column;gap:9px;padding:12px 14px;display:flex}.w-line{background:var(--line);border-radius:3px;height:8px}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-70{width:70%}.w-85{width:85%}.w-block{background:var(--line-soft);border:1px dashed var(--line);border-radius:5px;height:34px}.is-confidential .redact{background:#000;height:11px;box-shadow:0 0 0 1px #1d1f26}.blank-stamp{border:2px solid var(--fg-dim);background:color-mix(in srgb, var(--bg-raised) 88%, transparent);color:var(--fg-dim);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.18em;text-transform:uppercase;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:6px 14px 5px;font-size:15px;font-weight:700;display:flex;position:absolute;transform:rotate(-8deg)}.blank-stamp small{letter-spacing:.1em;opacity:.85;font-size:9.5px;font-weight:500}.is-confidential .blank-stamp{border-color:color-mix(in srgb, var(--fail) 75%, transparent);color:color-mix(in srgb, var(--fail) 85%, #fff);box-shadow:0 0 0 4px color-mix(in srgb, var(--fail) 10%, transparent)}.blank-stack{color:var(--fg-faint);font-family:var(--font-mono), ui-monospace, monospace;font-size:11px;position:absolute;bottom:10px;left:14px}.project-detail .back,.project-detail .pager a{color:var(--accent);font-family:var(--font-mono), ui-monospace, monospace;font-size:12.5px;text-decoration:none}.project-detail .back:hover,.project-detail .pager a:hover{text-decoration:underline}.project-detail header{margin:22px 0 20px}.project-detail .meta{color:var(--fg-dim);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:11.5px;display:flex}.project-detail .role{color:var(--fg);margin:0;font-size:17px;line-height:1.5}.project-detail>.project-art{border:1px solid var(--line);border-radius:10px}.proprietary{border:1px dashed var(--line);background:var(--bg-raised);color:var(--fg-dim);border-radius:10px;align-items:flex-start;gap:14px;padding:20px 22px;display:flex}.proprietary svg{color:var(--pass);flex:none;margin-top:2px}.proprietary p{color:var(--fg);margin:0;font-size:15px;line-height:1.6}.proprietary .proprietary-label{color:var(--fg-faint);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.12em;text-transform:uppercase;margin-bottom:4px;font-size:11px}.gallery .hero{border:1px solid var(--line);border-radius:10px;display:block;overflow:hidden}a.hero:hover,a.hero:focus-visible{border-color:var(--accent)}.hero-frame{position:relative}.hero-frame img{width:100%;height:auto;display:block}.hero-play{border:1px solid color-mix(in srgb, var(--accent) 55%, transparent);color:var(--accent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#08090cd1;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:14px;font-weight:600;transition:transform .15s;display:inline-flex;position:absolute;bottom:14px;right:14px}a.hero:hover .hero-play{transform:scale(1.05)}.hero-caption{color:var(--fg-dim);min-height:2lh;margin:10px 0 0;font-size:13.5px;line-height:1.55}.thumbs{gap:8px;margin-top:12px;padding-bottom:2px;display:flex;overflow-x:auto}.thumb{cursor:pointer;opacity:.6;background:0 0;border:2px solid #0000;border-radius:6px;flex:none;width:120px;padding:0;transition:opacity .15s,border-color .15s;overflow:hidden}.thumb img{width:100%;height:auto;display:block}.thumb:hover{opacity:.9}.thumb[aria-selected=true]{border-color:var(--accent);opacity:1}.project-detail [data-testid=spec-links]{margin-top:18px}.project-detail section{margin-top:36px}.project-detail section h2{color:var(--fg-faint);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px;font-size:11px;font-weight:500}.project-detail section h2 .count{color:var(--pass);letter-spacing:.06em;margin-left:8px}.project-detail .brief{color:var(--fg);margin:0;font-size:15.5px;line-height:1.7}.project-detail .stack{flex-wrap:wrap;gap:6px;margin:16px 0 0;padding:0;list-style:none;display:flex}.project-detail .stack li{border:1px solid var(--line);background:var(--bg-raised);color:var(--fg-dim);font-family:var(--font-mono), ui-monospace, monospace;border-radius:4px;padding:2px 8px;font-size:11.5px}.project-detail .checks{border-bottom:1px solid var(--line-soft);margin:0;padding:0;list-style:none}.project-detail .checks li{border-top:1px solid var(--line-soft)}.project-detail .checks summary{cursor:pointer;color:var(--fg);gap:10px;padding:10px 0;font-size:14.5px;line-height:1.45;list-style:none;display:flex}.project-detail .checks summary::-webkit-details-marker{display:none}.project-detail .checks summary:hover{color:var(--fg-strong)}.project-detail .checks .ok{color:var(--pass);flex:none}.project-detail .checks .bad{color:var(--fail);flex:none}.project-detail .checks details p{color:var(--fg-dim);margin:0 0 12px 22px;font-size:14px;line-height:1.6}.pager{border-top:1px solid var(--line);justify-content:space-between;gap:16px;margin-top:44px;padding-top:18px;display:flex}.phone-showcase{border:1px solid var(--line);background:radial-gradient(80% 70% at 30% 20%, color-mix(in srgb, var(--warn) 9%, transparent), transparent 70%), var(--panel);border-radius:12px;grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:28px;padding:28px 24px 22px;display:grid}.phone-stage{grid-template-columns:40px auto 40px;justify-content:center;align-items:center;gap:10px;display:grid}.phone-frame{background:#1a1d24;border:1px solid #2a2f3a;border-radius:42px;width:272px;padding:10px;transition:width .45s cubic-bezier(.3,.7,.2,1);box-shadow:inset 0 0 0 2px #0b0c10,0 24px 60px #0000008c}.phone-frame.landscape{width:380px;animation:.5s cubic-bezier(.3,.7,.2,1) phone-turn}@keyframes phone-turn{0%{transform:rotate(-90deg)scale(.6)}}.phone-screen video{object-fit:cover;width:100%;height:100%;display:block}.phone-screen{background:#000;border-radius:32px;position:relative;overflow:hidden}.phone-screen img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.phone-nav{border:1px solid var(--line);background:var(--bg-raised);width:40px;height:40px;color:var(--fg);cursor:pointer;border-radius:999px;font-size:22px;line-height:1}.phone-nav:hover{border-color:var(--accent-dim);color:var(--accent)}.phone-dots{grid-column:1/-1;justify-content:center;gap:8px;margin-top:6px;display:flex}.phone-dots button{background:var(--fg-faint);cursor:pointer;border:0;border-radius:999px;width:8px;height:8px;padding:0}.phone-dots button[aria-selected=true]{background:var(--accent);width:22px}.phone-caption{max-width:340px;min-height:2lh;color:var(--fg-dim);text-align:center;grid-column:1/-1;margin:4px auto 0;font-size:13.5px;line-height:1.5}.play-panel h2{color:var(--fg-faint);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;margin:4px 0 12px;font-size:11px;font-weight:500}.play-button{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent);border-radius:10px;align-items:center;gap:10px;padding:13px 16px;font-size:15px;font-weight:600;text-decoration:none;transition:background .15s;display:flex}.play-button:hover{background:color-mix(in srgb, var(--accent) 22%, transparent)}.play-note{color:var(--fg-faint);margin:8px 2px 0;font-size:12.5px}.play-more{color:var(--accent);margin:12px 2px 0;font-size:14px;text-decoration:none;display:block}.play-more:hover{text-decoration:underline}.play-more span{color:var(--fg-faint);font-size:12.5px}@media (max-width:640px){.play-more{text-align:center}}.play-qr{border-top:1px solid var(--line);margin-top:22px;padding-top:20px}.play-qr img{border-radius:8px;width:132px;height:132px;display:block}.play-qr p{color:var(--fg-dim);margin:12px 0 0;font-size:13px;line-height:1.55}.play-qr strong{color:var(--fg)}.phone-only{display:none}@media (max-width:760px){.phone-showcase{grid-template-columns:minmax(0,1fr);padding:20px 12px 18px}.play-panel h2{display:none}}@media (max-width:640px){.desk-only{display:none}.phone-only{display:inline}.phone-frame{border-radius:36px;width:min(232px,62vw)}.phone-frame.landscape{border-radius:30px;width:100%}.phone-screen{border-radius:27px}.phone-stage{grid-template-columns:34px minmax(0,auto) 34px;gap:6px}.phone-nav{width:34px;height:34px}.play-button{justify-content:center}.projects-index,.project-detail{padding-top:36px}.project-grid{grid-template-columns:minmax(0,1fr)}.hero-play{padding:7px 11px;font-size:13px;bottom:10px;right:10px}}@media (prefers-reduced-motion:reduce){.project-tile,.project-tile:hover,.project-art img,.project-art video,.hero-play,.phone-frame{transition:none;animation:none!important;transform:none!important}}.projects-index h1,.project-detail h1,.tile-body h2{font-family:var(--font-display), var(--font-sans), system-ui, sans-serif;letter-spacing:-.01em;font-weight:700}.projects-index h1,.project-detail h1{font-size:40px}.tile-body p,.project-detail .brief,.involved dd,.project-detail .checks details p{color:#a3abb8;letter-spacing:.005em;font-weight:300}.tile-body p{font-size:13.5px}.project-detail .brief{color:#c3cad5}
