.project-title.svelte-1n40z5z{font-size:clamp(2rem,4.5vw,3.25rem);font-weight:700;line-height:1.08;letter-spacing:-.02em;color:var(--color-text);margin:.5rem 0 0}.project-tagline.svelte-1n40z5z{font-size:1.1rem;font-weight:700;line-height:1.3;color:var(--color-text-headline);margin:0;max-width:60ch}.cover-frame.svelte-1n40z5z{width:100%;max-width:480px;aspect-ratio:16 / 10;border-radius:8px;overflow:hidden;border:1px solid color-mix(in srgb,var(--color-accent) 25%,var(--color-border));box-shadow:0 6px 20px #00000038;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}button.cover-frame--clickable.svelte-1n40z5z{padding:0;font:inherit;color:inherit;background:none;cursor:pointer}.cover-frame--clickable.svelte-1n40z5z:hover{transform:scale(1.02);box-shadow:0 8px 28px #00000052;border-color:var(--color-accent)}.project-meta.svelte-1n40z5z{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem 1.5rem;margin:0 0 1rem;padding:0}.project-meta__row.svelte-1n40z5z{display:flex;flex-direction:column;gap:2px;min-width:0}.project-meta.svelte-1n40z5z dt:where(.svelte-1n40z5z){font-family:var(--font-mono, monospace);font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-muted);margin:0}.project-meta.svelte-1n40z5z dd:where(.svelte-1n40z5z){font-family:var(--font-sans);font-size:1rem;font-weight:200;color:var(--color-text);margin:0;text-transform:capitalize}.byline.svelte-1n40z5z{display:inline-flex;align-items:center;gap:1rem;font-size:.8125rem;flex-wrap:wrap;color:var(--color-text-muted)}.byline__author.svelte-1n40z5z{display:inline-flex;align-items:center;gap:.4375rem;color:var(--color-text-muted);text-decoration:none;transition:color .15s ease}.byline__author.svelte-1n40z5z:hover{color:var(--color-accent)}.byline__author--ai.svelte-1n40z5z{cursor:default}.byline__avatar.svelte-1n40z5z{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius-full, 999px);background:var(--color-bg-tertiary);border:1px solid var(--color-border);font-size:.625rem;font-weight:600;color:var(--color-accent)}.byline__avatar--img.svelte-1n40z5z{padding:0;background:var(--color-bg);overflow:hidden}.byline__avatar--img.svelte-1n40z5z img:where(.svelte-1n40z5z){width:14px;height:14px;display:block}.byline__github.svelte-1n40z5z{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-full, 999px);color:var(--color-text-muted);text-decoration:none;font-size:.75rem;transition:border-color .15s ease,color .15s ease}.byline__github.svelte-1n40z5z:hover{border-color:var(--color-accent);color:var(--color-accent)}.experience-ref.svelte-1n40z5z{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;margin-bottom:.75rem;font-family:var(--font-mono, monospace);font-size:.75rem;letter-spacing:.04em;color:var(--color-accent);border:1px solid var(--color-accent);border-radius:var(--radius-full, 999px);text-decoration:none;transition:background .15s ease,color .15s ease}.experience-ref.svelte-1n40z5z:hover{background:var(--color-accent);color:var(--color-bg)}.experience-ref.svelte-1n40z5z .experience-ref__logo{width:16px;height:16px;border-radius:3px;object-fit:contain;flex-shrink:0}.experience-ref__years.svelte-1n40z5z{color:var(--color-text-muted)}.experience-ref.svelte-1n40z5z:hover .experience-ref__years:where(.svelte-1n40z5z){color:var(--color-bg)}@media (max-width: 768px){.project-meta.svelte-1n40z5z{grid-template-columns:repeat(2,minmax(0,1fr))}}.page-project-detail.svelte-1rh0707{min-height:100vh;padding-bottom:5rem}.hero-wrap.svelte-1rh0707{padding-bottom:2.5rem;border-bottom:1px solid var(--color-border)}.page-project-detail.svelte-1rh0707 .hero-content{grid-template-columns:1.35fr 1fr}@media (max-width: 1024px){.page-project-detail.svelte-1rh0707 .hero-content{grid-template-columns:1fr}}.gallery.svelte-1rh0707{padding-top:2.5rem;padding-bottom:1rem}.tech-section.svelte-1rh0707 .section__label:where(.svelte-1rh0707){font-family:var(--font-mono, monospace);font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-muted)}.tech-grid.svelte-1rh0707{display:flex;flex-wrap:wrap;gap:.5rem .625rem;margin-top:.75rem}.tech-chip.svelte-1rh0707{display:inline-flex;align-items:center;padding:.3125rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-full, 999px);background:var(--color-bg-secondary);font-size:.75rem;color:var(--color-text);transition:border-color .15s ease,color .15s ease}.tech-chip.svelte-1rh0707:hover{border-color:var(--color-accent)}.body.svelte-1rh0707{display:block;padding-top:2rem;padding-bottom:2rem}.body__main.svelte-1rh0707{min-width:0;max-width:720px}@media (min-width: 1024px){.body__main.svelte-1rh0707{max-width:none;column-count:2;column-gap:3rem}.body__main.svelte-1rh0707 .tech-section:where(.svelte-1rh0707){column-span:all}}.section.svelte-1rh0707{margin-bottom:2.75rem;break-inside:avoid}.section__title.svelte-1rh0707{display:flex;align-items:baseline;gap:.625rem;font-size:1.375rem;margin:0 0 .875rem;color:var(--color-text);letter-spacing:-.01em}.section__num.svelte-1rh0707{font-family:var(--font-mono, monospace);font-size:.75rem;font-weight:500;color:var(--color-accent);letter-spacing:.08em}.section.svelte-1rh0707 p:where(.svelte-1rh0707){color:var(--color-text-muted);line-height:1.7;max-width:65ch;white-space:pre-line;margin:0 0 .75rem;font-size:.9375rem}.outcomes-group.svelte-1rh0707{margin-bottom:1.25rem}.outcomes-group.svelte-1rh0707 h3:where(.svelte-1rh0707){font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin:0 0 .5rem}.outcomes-group.svelte-1rh0707 ul:where(.svelte-1rh0707){list-style:none;padding:0;margin:0;max-width:65ch}.outcomes-group.svelte-1rh0707 li:where(.svelte-1rh0707){padding:.625rem 0;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);line-height:1.5;font-size:.9375rem}.outcomes-group.svelte-1rh0707 li:where(.svelte-1rh0707):last-child{border-bottom:none}.constraints-list.svelte-1rh0707{list-style:none;padding:0;margin:0;max-width:65ch}.constraints-list.svelte-1rh0707 li:where(.svelte-1rh0707){position:relative;padding-left:1.25rem;margin-bottom:.625rem;color:var(--color-text-muted);line-height:1.6;font-size:.9375rem}.constraints-list.svelte-1rh0707 li:where(.svelte-1rh0707):before{content:"→";position:absolute;left:0;color:var(--color-accent)}.links-list.svelte-1rh0707{display:flex;flex-direction:column;gap:.5rem;max-width:65ch}.link-item.svelte-1rh0707{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md, 6px);background:var(--color-bg-secondary);text-decoration:none;transition:border-color .15s ease,transform .15s ease}.link-item.svelte-1rh0707:hover{border-color:var(--color-accent);transform:translate(2px)}.link-item__title.svelte-1rh0707{flex:1;font-size:.875rem;font-weight:500;color:var(--color-text)}.link-item__type.svelte-1rh0707{font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-family:var(--font-mono, monospace)}.link-item.svelte-1rh0707 svg:where(.svelte-1rh0707){color:var(--color-text-muted);flex-shrink:0}.link-item.svelte-1rh0707:hover svg:where(.svelte-1rh0707),.link-item.svelte-1rh0707:hover .link-item__title:where(.svelte-1rh0707){color:var(--color-accent)}.related.svelte-1rh0707{margin-top:3rem;padding-top:2.5rem;border-top:1px solid var(--color-border)}.related__title.svelte-1rh0707{font-family:var(--font-mono, monospace);font-size:.875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 1.5rem}.related__grid.svelte-1rh0707{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.related-card.svelte-1rh0707{display:block;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg, 12px);overflow:hidden;text-decoration:none;color:inherit;transition:border-color .2s ease,transform .2s ease}.related-card.svelte-1rh0707:hover{border-color:var(--color-accent);transform:translateY(-3px)}.related-card__image.svelte-1rh0707{height:200px;position:relative;overflow:hidden;background:var(--color-bg-tertiary)}.related-card__body.svelte-1rh0707{padding:.875rem 1rem 1rem}.related-card__body.svelte-1rh0707 h3:where(.svelte-1rh0707){font-size:.9375rem;margin:0 0 .375rem;color:var(--color-text)}.related-card__body.svelte-1rh0707 p:where(.svelte-1rh0707){font-size:.75rem;color:var(--color-text-muted);line-height:1.5;margin:0;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.badge.svelte-1rh0707{display:inline-block;padding:.3125rem .75rem;margin-top:.75rem;border-radius:var(--radius-full, 999px);font-family:var(--font-mono, monospace);font-size:.75rem;line-height:1;background:var(--color-bg-secondary);border:1px solid var(--color-border);color:var(--color-text-muted)}.badge--accent.svelte-1rh0707{background:color-mix(in srgb,var(--color-accent) 10%,transparent);border-color:color-mix(in srgb,var(--color-accent) 50%,transparent);color:var(--color-accent)}@media (max-width: 768px){.hero-wrap.svelte-1rh0707{padding-bottom:1.5rem}.section__title.svelte-1rh0707{font-size:1.1875rem}}
