:root{color-scheme:light;--paper: #f4eadb;--paper-light: #fff8ec;--ink: #30281f;--ink-soft: #6f6255;--line: rgba(70, 56, 41, .2);--rose: #a83f3f;--sage: #657b5a;--blue-gray: #6d7e8b;--shadow: 0 22px 70px rgba(71, 51, 29, .16);--soft-shadow: 0 12px 36px rgba(71, 51, 29, .12);--radius: 8px;--grain: radial-gradient(circle at 18% 12%, rgba(255, 255, 255, .68) 0 1px, transparent 1.5px), radial-gradient(circle at 77% 34%, rgba(92, 74, 49, .08) 0 1px, transparent 1.4px), radial-gradient(circle at 33% 82%, rgba(92, 74, 49, .06) 0 1px, transparent 1.5px);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;overflow-x:hidden;background:linear-gradient(120deg,#fff9eef0,#e8d6bb9e),radial-gradient(circle at 78% 16%,rgba(171,101,52,.12),transparent 24rem),radial-gradient(circle at 22% 56%,rgba(101,123,90,.1),transparent 30rem),var(--grain),var(--paper);background-attachment:fixed;background-size:auto,auto,auto,96px 96px,auto;color:var(--ink);line-height:1.5}button,a{color:inherit;font:inherit}button{cursor:pointer}a{text-decoration:none}.app-shell{position:relative;min-height:100svh;padding:clamp(18px,4vw,46px)}.side-tabs{position:fixed;top:34px;left:clamp(18px,3vw,34px);z-index:40;display:grid;gap:10px}.side-tabs button{min-width:112px;border:1px solid transparent;border-radius:999px;padding:12px 18px;background:transparent;color:#30281fb3;font-size:.98rem;font-weight:700;letter-spacing:0;text-align:left;transition:border-color .16s ease,background .16s ease,color .16s ease,transform .16s ease}.side-tabs button:hover,.side-tabs button.active{border-color:#46382938;background:#fff8ecc2;color:var(--ink);transform:translate(3px)}.scene-surface{position:relative;min-height:calc(100svh - clamp(36px,8vw,92px));overflow:hidden;border:1px solid rgba(70,56,41,.16);border-radius:12px;background:linear-gradient(#f4eadb7a,#f4eadb2e),var(--paper);box-shadow:inset 0 0 0 1px #ffffff6b,var(--shadow)}.scene-surface:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;background:linear-gradient(90deg,rgba(244,234,219,.92),transparent 25%,transparent 76%,rgba(244,234,219,.78)),linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(92,74,49,.055) 1px,transparent 1px);background-size:auto,44px 44px,44px 44px;content:""}.scene-surface:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;background:linear-gradient(90deg,rgba(48,40,31,.05),transparent 10%,transparent 88%,rgba(48,40,31,.04)),linear-gradient(180deg,rgba(255,255,255,.16),transparent 16%,transparent 78%,rgba(81,62,38,.08));mix-blend-mode:multiply;content:""}.memory-house-canvas{position:absolute;top:0;right:0;bottom:0;left:0;min-height:100%}.scene-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:grid;place-items:center;background:linear-gradient(120deg,#fff9eef5,#e8d6bbad),var(--grain),var(--paper);color:#30281fa3;font-size:.84rem;font-weight:780;letter-spacing:.08em;text-transform:uppercase}.hotspot-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none}.memory-hotspot{position:absolute;display:grid;width:34px;height:34px;place-items:center;border:1px solid rgba(70,56,41,.38);border-radius:50%;background:radial-gradient(circle,#fff8ecf5 0,#fff8ecf5 36%,#fff8ec1f 38%),transparent;box-shadow:0 8px 24px #47331d24;pointer-events:auto;transition:transform .16s ease,border-color .16s ease,background .16s ease}.memory-hotspot:after{width:7px;height:7px;border-radius:50%;background:var(--ink);content:""}.memory-hotspot span{position:absolute;bottom:calc(100% + 8px);left:50%;width:max-content;max-width:172px;border:1px solid rgba(70,56,41,.18);border-radius:var(--radius);padding:5px 8px;background:#fff8ece6;color:var(--ink-soft);font-size:.72rem;font-weight:760;opacity:0;transform:translate(-50%,5px);transition:opacity .16s ease,transform .16s ease;white-space:normal}.memory-hotspot:hover,.memory-hotspot[aria-pressed=true]{border-color:#a83f3f8a;background:radial-gradient(circle,#fff8ecfa 0,#fff8ecfa 35%,#a83f3f2e 38%),transparent;transform:scale(1.08)}.memory-hotspot:hover span,.memory-hotspot[aria-pressed=true] span{opacity:1;transform:translate(-50%)}.memory-hotspot--rose{top:67%;left:30%}.memory-hotspot--porch{top:54%;left:49%}.memory-hotspot--window{top:40%;left:60%}.memory-hotspot--rose:after{background:var(--rose)}.memory-hotspot--porch:after{background:#9d714e}.memory-hotspot--window:after{background:var(--blue-gray)}.scene-caption{position:absolute;right:clamp(18px,4vw,58px);bottom:clamp(22px,4vw,56px);z-index:12;width:min(260px,calc(100% - 36px));pointer-events:none}.scene-caption p,.projects-heading p,.project-card>div p,.memory-card__place,.memory-card__period{margin:0;color:#7f4a2b;font-size:.74rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.scene-caption h1,.projects-heading h1{margin:8px 0 12px;color:#2f261d;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.65rem,2.3vw,2.45rem);font-weight:500;letter-spacing:0;line-height:1}.scene-caption span,.projects-heading span{display:block;max-width:520px;color:#5f554a;font-size:clamp(1rem,1.5vw,1.18rem)}.scene-instructions{position:absolute;right:clamp(18px,4vw,58px);top:clamp(18px,4vw,44px);z-index:12;border:1px solid rgba(70,56,41,.18);border-radius:999px;padding:8px 12px;background:#fff8eca3;color:#30281fad;font-size:.78rem;font-weight:720}.memory-card{position:fixed;left:clamp(18px,3vw,34px);bottom:clamp(18px,4vw,36px);z-index:50;width:min(360px,calc(100vw - 36px));border:1px solid rgba(70,56,41,.22);border-radius:var(--radius);padding:20px;background:linear-gradient(180deg,#fffaf0f5,#f6ead8f0),var(--paper-light);box-shadow:var(--shadow);animation:memoryCardIn .22s ease-out}.memory-card h2{margin:8px 0 6px;color:#30281f;font-family:Georgia,Times New Roman,serif;font-size:1.62rem;font-weight:500;letter-spacing:0;line-height:1.05}.memory-card p:last-child{margin:14px 0 0;color:#5f554a}.memory-card__period{color:#5f554abd;font-size:.68rem}.memory-card__close{position:absolute;top:10px;right:10px;border:1px solid rgba(70,56,41,.18);border-radius:999px;padding:5px 9px;background:#fff8ecc7;color:var(--ink-soft);font-size:.7rem;font-weight:780}.projects-view{min-height:calc(100svh - clamp(36px,8vw,92px));padding:clamp(58px,6vw,84px) clamp(0px,5vw,80px) 40px clamp(130px,16vw,220px)}.projects-heading{max-width:720px;margin-bottom:clamp(24px,3.5vw,38px)}.projects-heading h1{font-size:clamp(3rem,5vw,4.8rem);max-width:820px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.project-card{display:grid;min-height:320px;align-content:start;border:1px solid rgba(70,56,41,.18);border-radius:var(--radius);padding:22px;background:linear-gradient(180deg,#fffaf0d6,#f6ead8b8),var(--paper-light);box-shadow:var(--soft-shadow)}.project-card>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.project-card>div span{border:1px solid rgba(70,56,41,.16);border-radius:999px;padding:5px 8px;background:#fff8eca8;color:var(--ink-soft);font-size:.72rem;font-weight:760}.project-card h2{margin:0 0 10px;color:#30281f;font-family:Georgia,Times New Roman,serif;font-size:1.72rem;font-weight:500;letter-spacing:0;line-height:1.08}.project-card>p{margin:0;color:#5f554a}.project-card ul{display:grid;gap:7px;margin:22px 0;padding:0;color:#665a4d;list-style:none}.project-card li{position:relative;padding-left:16px;font-size:.92rem}.project-card li:before{position:absolute;top:.62em;left:0;width:6px;height:6px;border-radius:50%;background:var(--sage);content:""}.project-card__links{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.project-card__links a,.project-card__links span{border:1px solid rgba(70,56,41,.2);border-radius:999px;padding:8px 11px;background:#fff8eca8;color:var(--ink);font-size:.82rem;font-weight:780}@media(max-width:960px){.side-tabs{right:16px;bottom:16px;top:auto;left:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.side-tabs button{min-width:0;text-align:center}.side-tabs button:hover,.side-tabs button.active{transform:none}.scene-surface{min-height:calc(100svh - 36px)}.scene-caption{right:18px;bottom:88px;left:18px;width:auto}.projects-heading h1{font-size:clamp(2.6rem,13vw,4.6rem)}.scene-caption h1{font-size:1.65rem}.scene-instructions{top:18px;right:18px}.memory-card{bottom:82px}.projects-view{padding:40px 0 92px}.project-grid{grid-template-columns:1fr}}@media(max-width:640px){.app-shell{padding:12px}.scene-surface:before{background:linear-gradient(180deg,rgba(244,234,219,.84),transparent 30%,transparent 72%,rgba(244,234,219,.84)),linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(92,74,49,.055) 1px,transparent 1px);background-size:auto,44px 44px,44px 44px}.memory-house-canvas{transform:translateY(-5%)}.memory-hotspot--rose{top:62%;left:22%}.memory-hotspot--porch{top:51%;left:49%}.memory-hotspot--window{top:39%;left:70%}.scene-instructions{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes memoryCardIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
