@property --angle{syntax:"<angle>";initial-value:0deg;inherits:false}.project-card-shell{--glow-duration:2.5s;position:relative;box-sizing:border-box;width:100%;border-radius:.5rem;transition:box-shadow .3s ease;filter:drop-shadow(0 1px 2px rgba(0,0,0,.06))}.dark .project-card-shell{filter:drop-shadow(0 1px 4px rgba(0,0,0,.12))}.project-card-shell:before{content:"";position:absolute;inset:-2px;border-radius:inherit;z-index:0;padding:2px;background:conic-gradient(from var(--angle),transparent 75%,var(--glow-color) 88%,white 93%,var(--glow-color) 98%,transparent);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:project-card-glow-spin var(--glow-duration) linear infinite;animation-play-state:paused;opacity:0;pointer-events:none;transition:opacity .3s ease}.project-card-shell.hovered{--glow-duration:1.5s;box-shadow:0 0 20px 2px color-mix(in srgb,var(--glow-color) 30%,transparent)}.project-card-shell.hovered:before{opacity:1;animation-play-state:running}@keyframes project-card-glow-spin{to{--angle:360deg}}.project-card-shell>.project-card-hit{position:relative;z-index:1;box-sizing:border-box;width:100%}.project-card-mockup-host{display:flex;min-height:0;flex:1 1 0;flex-direction:column;align-items:stretch;margin-top:-12px;padding:0 6px;overflow:hidden;perspective:900px;background:color-mix(in srgb,var(--ide-panel) 48%,var(--ide-bg) 52%)}.project-card-title-logo{display:block;width:100%;height:100%;object-fit:contain;object-position:center}.project-card-title-logo-slot{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden}.project-card-title-emoji{font-size:18px;line-height:1}.project-card-title-emoji--optical-match,.project-card-title-logo--optical-match{transform:scale(.86);transform-origin:center}.project-card-title-logo--mono{opacity:.92}.dark .project-card-title-logo--mono{filter:brightness(0) invert(1);opacity:.94}.project-card-title-logo--round{border-radius:9999px}.project-card-mockup-spacer{min-height:0;flex:1 1 0;width:100%}.project-card-mockup-row{display:flex;width:100%;flex-shrink:0;justify-content:center}.project-card-copy{flex-shrink:0;padding:clamp(12px,2.4vw,16px);border-top:1px solid var(--ide-border);--card-copy-fill:color-mix(in srgb,var(--ide-surface) 98%,var(--ide-text) 2%);background:var(--card-copy-fill)}.project-card-chrome{--mock-chrome-bg:#eceef1;--mock-chrome-border:rgba(15,23,42,0.1);--mock-chrome-shadow:0 1px 3px rgba(15,23,42,0.08);--mock-toolbar-bg:#e4e7eb;--mock-toolbar-border:rgba(15,23,42,0.08);--mock-url-bg:rgba(15,23,42,0.05);--mock-url-fg:rgba(15,23,42,0.45);--mock-viewport-bg:#f7f8fa;--mock-line:rgba(15,23,42,0.08);--mock-fill:rgba(15,23,42,0.06);--mock-fill-strong:rgba(15,23,42,0.12);--mock-text:rgba(15,23,42,0.58);--mock-text-muted:rgba(15,23,42,0.35);--mock-surface:#ffffff;--mock-phone-shell:#d8dce2;--mock-phone-screen:linear-gradient(180deg,rgba(15,23,42,0.04),rgba(15,23,42,0.02));--mock-float-bg:rgba(255,255,255,0.96);display:flex;width:100%;max-width:372px;flex-direction:column;margin-bottom:-3px;overflow:hidden;border-radius:8px 8px 0 0;border:1px solid var(--mock-chrome-border);border-bottom:none;box-shadow:var(--mock-chrome-shadow);transform:rotateX(4deg);transform-origin:50% 100%;will-change:transform;transition:transform .3s ease}.dark .project-card-chrome{--mock-chrome-bg:#1e1e1e;--mock-chrome-border:rgba(255,255,255,0.12);--mock-chrome-shadow:0 1px 3px rgba(0,0,0,0.2);--mock-toolbar-bg:#1e1e1e;--mock-toolbar-border:rgba(255,255,255,0.06);--mock-url-bg:rgba(255,255,255,0.06);--mock-url-fg:rgba(255,255,255,0.35);--mock-viewport-bg:#0d0d0d;--mock-line:rgba(255,255,255,0.06);--mock-fill:rgba(255,255,255,0.06);--mock-fill-strong:rgba(255,255,255,0.12);--mock-text:rgba(255,255,255,0.55);--mock-text-muted:rgba(255,255,255,0.28);--mock-surface:rgba(255,255,255,0.03);--mock-phone-shell:#050505;--mock-phone-screen:linear-gradient(180deg,rgba(255,255,255,0.06),rgba(255,255,255,0.02));--mock-float-bg:rgba(20,20,20,0.92)}.project-card-shell.hovered .project-card-chrome{transform:rotateX(4deg) scale(1.02);transition:transform .28s cubic-bezier(.34,1.56,.64,1)}.chrome-toolbar{display:flex;height:28px;align-items:center;gap:8px;border-bottom:1px solid var(--mock-toolbar-border);background:var(--mock-toolbar-bg);padding:0 8px;border-radius:8px 8px 0 0}.chrome-dot{width:7px;height:7px;flex-shrink:0;border-radius:999px}.chrome-dot--r{background:#ff5f57}.chrome-dot--y{background:#febc2e}.chrome-dot--g{background:#28c840}.chrome-url{flex:1;overflow:hidden;border-radius:5px;background:var(--mock-url-bg);padding:4px 8px;color:var(--mock-url-fg);font-size:8px;line-height:1;text-overflow:ellipsis;white-space:nowrap}.chrome-viewport{display:flex;height:140px;min-height:140px;max-height:140px;flex:none;flex-direction:column;overflow:hidden;background:var(--mock-viewport-bg)}.mockup-scroll{flex:1;overflow:hidden}.mockup-scroll-inner{min-height:100%;transform:translateY(0);animation:none}.project-card-shell.hovered .mockup-scroll-inner{animation:mockup-scroll-down 3s ease-in-out forwards}@keyframes mockup-scroll-down{0%{transform:translateY(0)}to{transform:translateY(-20px)}}.mock-stagger-child{opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease}.project-card-shell.hovered .mock-stagger-child{opacity:1;transform:translateY(0);transition-duration:.28s;transition-timing-function:cubic-bezier(.34,1.56,.64,1);transition-delay:calc(var(--mock-i, 0) * 60ms)}.mock-dash{display:flex;gap:6px;padding:6px}.mock-dash-side{display:flex;width:22%;flex-direction:column;gap:4px}.mock-dash-pill{height:4px;border-radius:2px;background:var(--mock-fill)}.mock-dash-main{display:flex;min-width:0;flex:1;flex-direction:column;gap:5px}.mock-dash-stats{display:flex;gap:4px}.mock-dash-stat{flex:1;border-radius:4px;border:1px solid var(--mock-line);background:var(--mock-surface);padding:4px}.mock-dash-stat-num{color:var(--mock-text);font-size:9px;font-weight:600;line-height:1}.mock-dash-stat-lbl{margin-top:2px;color:var(--mock-text-muted);font-size:6px;line-height:1}.mock-dash-chart{display:flex;height:28px;align-items:flex-end;justify-content:space-between;gap:3px;border-radius:4px;border:1px solid var(--mock-line);background:var(--mock-surface);padding:4px}.mock-dash-bar{flex:1;border-radius:2px 2px 0 0;background:var(--mock-fill-strong)}.mock-dash-bar:first-child{height:35%}.mock-dash-bar:nth-child(2){height:55%}.mock-dash-bar:nth-child(3){height:70%}.mock-dash-bar:nth-child(4){height:45%}.mock-dash-bar:nth-child(5){height:60%}.mock-design{position:relative;padding:6px}.mock-design-canvas{position:relative;height:104px;border-radius:4px;border:1px solid var(--mock-line);background:var(--mock-surface)}.mock-shape{position:absolute;border-radius:3px;border:1px solid var(--mock-fill-strong)}.mock-shape--a{top:10px;left:10px;width:22px;height:16px;background:rgba(168,85,247,.18)}.mock-shape--b{top:22px;left:36px;width:18px;height:18px;border-radius:999px;background:rgba(20,184,166,.16)}.mock-shape--c{top:40px;left:14px;width:40px;height:10px;background:rgba(59,130,246,.14)}.mock-design-float{position:absolute;top:4px;right:4px;display:flex;gap:3px;border-radius:4px;border:1px solid var(--mock-line);background:var(--mock-float-bg);padding:3px}.mock-tool{width:10px;height:10px;border-radius:2px;background:var(--mock-fill-strong)}.mock-table{padding:5px 6px 8px}.mock-table-head,.mock-table-row{display:grid;grid-template-columns:1fr .7fr .55fr;gap:4px;align-items:center;font-size:6px;line-height:1.2}.mock-table-head{margin-bottom:4px;color:var(--mock-text-muted);letter-spacing:.02em}.mock-table-row{margin-bottom:3px;color:var(--mock-text)}.mock-table-row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mock-badge{justify-self:end;border-radius:3px;padding:2px 4px;font-size:5px;line-height:1}.mock-badge--ok{border:1px solid rgba(34,197,94,.3);background:rgba(34,197,94,.12);color:#15803d}.dark .mock-badge--ok{border:1px solid rgba(34,197,94,.25);background:rgba(34,197,94,.1);color:rgba(74,222,128,.85)}.mock-badge--warn{border:1px solid rgba(234,179,8,.35);background:rgba(234,179,8,.12);color:#a16207}.dark .mock-badge--warn{border:1px solid rgba(251,191,36,.25);background:rgba(251,191,36,.08);color:rgba(253,224,71,.8)}.mock-badge--idle{border:1px solid var(--mock-line);background:var(--mock-fill);color:var(--mock-text-muted)}.mock-builder{display:flex;gap:6px;padding:6px}.mock-builder-panel{display:flex;width:30%;flex-direction:column;gap:3px}.mock-builder-comp{height:6px;border-radius:2px;background:var(--mock-fill)}.mock-builder-phone{display:flex;min-width:0;flex:1;align-items:center;justify-content:center}.mock-phone-frame{width:38px;height:64px;border-radius:8px;border:2px solid var(--mock-fill-strong);background:var(--mock-phone-shell);padding:4px}.mock-phone-screen{height:100%;border-radius:4px;background:var(--mock-phone-screen)}.mock-phone-notch{height:3px;margin:0 auto 3px;width:14px}.mock-phone-block,.mock-phone-notch{border-radius:2px;background:var(--mock-fill)}.mock-phone-block{height:6px;margin-bottom:3px}.mock-phone-block--wide{height:16px}