*{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal)}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);margin:0}
a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--border-strong);text-decoration-thickness:1px;text-underline-offset:2px}
a:hover{color:var(--accent-hover)}

/* layout shell */
.page{min-height:100vh;display:flex;flex-direction:column;font-family:var(--font-sans);background:var(--surface-page);}
.site-header{display:flex;align-items:center;justify-content:space-between;max-width:var(--container-wide);width:100%;margin:0 auto;padding:var(--space-5);box-sizing:border-box;}
.logo-link{display:flex;align-items:center;text-decoration:none;}
.logo-link img{height:28px;display:block;}
.site-nav{display:flex;gap:var(--space-6);}
.nav-link{font-size:var(--text-sm);font-weight:var(--weight-medium);text-decoration:none;color:var(--text-muted);}
.nav-link[aria-current="page"]{color:var(--text-primary);}
.nav-link:hover{color:var(--accent);}

.ed-item:focus-visible,.ed-switch:focus-visible,.nav-link:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;}

/* simple content pages (about / my work) */
.simple-main{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;max-width:var(--container-width);margin:0 auto;padding:var(--space-8) var(--space-5);box-sizing:border-box;width:100%;}
.simple-main h1{font-size:var(--text-3xl);color:var(--text-primary);margin:0 0 var(--space-4);}
.simple-main p{font-size:var(--text-md);color:var(--text-secondary);line-height:var(--leading-relaxed);margin:0;}

/* home hero */
.home-main{flex:1;display:flex;flex-direction:column;align-items:center;padding:var(--space-5) var(--space-5) var(--space-9);box-sizing:border-box;}
.desk-scene{width:100%;max-width:520px;position:relative;aspect-ratio:843/1264;border-radius:28px;overflow:hidden;box-shadow:var(--shadow-lg);background:var(--surface-2);}
.desk-scene img.scene-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.desk-scene img.scene-overlay{opacity:0;transition:opacity 400ms var(--ease-standard);}
.desk-scene img.scene-overlay.is-on{opacity:1;}

.family-photo-overlay{position:absolute;top:63.13%;left:17.56%;width:12.10%;height:9.89%;object-fit:cover;object-position:50% 50%;border-radius:2px;pointer-events:none;z-index:2;box-shadow:inset 0 0 0 1px rgba(0,0,0,0.15);filter:brightness(0.94) contrast(0.98) saturate(0.92);transition:filter 400ms var(--ease-standard);}
.family-photo-overlay.is-night{filter:brightness(0.5) contrast(0.92) saturate(0.75) sepia(0.15);}

.daynight-switch{position:absolute;top:3%;right:3%;display:flex;background:rgba(28,25,23,0.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:var(--radius-full);padding:3px;gap:2px;z-index:4;}
.ed-switch{border:none;cursor:pointer;padding:5px 12px;border-radius:var(--radius-full);font-family:var(--font-sans);font-size:11px;font-weight:var(--weight-medium);transition:background-color 150ms var(--ease-standard),color 150ms var(--ease-standard);background:transparent;color:rgba(255,255,255,0.75);}
.ed-switch.is-active{background:var(--accent);color:var(--text-on-accent);}

.ed-item{position:absolute;cursor:pointer;border-radius:3px;transition:box-shadow 150ms var(--ease-standard);border:none;background:none;padding:0;display:block;}
.ed-item:hover,.ed-item:focus-visible{box-shadow:0 0 0 3px rgba(255,255,255,0.55) inset;}
.ed-item.ring-soft:hover,.ed-item.ring-soft:focus-visible{box-shadow:0 0 0 3px rgba(255,255,255,0.4) inset;}

.hotspot-patent{top:9.10%;left:27.88%;width:21.95%;height:21.36%;}
.hotspot-art{top:9.34%;left:49.82%;width:17.79%;height:21.12%;}
.hotspot-work{top:40%;left:34%;width:42%;height:26%;}
.hotspot-about{top:59.97%;left:14.0%;width:18.6%;height:14.79%;}
.hotspot-lamp{top:49.05%;left:79.48%;width:20.52%;height:34.81%;}
.hotspot-pool{top:73.02%;left:31.56%;width:15.78%;height:3.64%;}
.hotspot-phone{top:67.88%;left:68.56%;width:14.47%;height:13.77%;border-radius:6%;}
.hotspot-neverleft{top:82.28%;left:72.95%;width:25.5%;height:4.75%;}

.ed-dot{position:absolute;top:6px;right:6px;width:10px;height:10px;pointer-events:none;z-index:3;}
.ed-dot::before{content:'';position:absolute;inset:0;border-radius:50%;background:#e8a24d;animation:ed-pulse 1.8s ease-out infinite;}
.ed-dot::after{content:'';position:absolute;inset:0;border-radius:50%;background:#e8a24d;box-shadow:0 1px 3px rgba(0,0,0,0.35);}
@keyframes ed-pulse{0%{transform:scale(1);opacity:0.6;}100%{transform:scale(2.6);opacity:0;}}

.dot-lamp{left:20px;top:14px;}
.dot-neverleft{left:auto;right:10px;top:6px;}
.dot-pool{left:auto;right:10px;top:-4px;}
.dot-work{left:16px;top:10px;}

.intro-lead{text-align:center;font-weight:var(--weight-semibold);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-primary);margin:var(--space-6) 0 0;line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);}
.intro-body{max-width:480px;margin:var(--space-2) 0 0;text-align:center;font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-secondary);line-height:var(--leading-normal);letter-spacing:var(--tracking-tight);}

/* dialog */
.dialog-backdrop{position:fixed;inset:0;background:rgba(28,25,23,0.4);display:none;align-items:center;justify-content:center;z-index:100;padding:var(--space-5);box-sizing:border-box;}
.dialog-backdrop.is-open{display:flex;}
.dialog-panel{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-6);max-width:420px;width:100%;box-shadow:var(--shadow-lg);font-family:var(--font-sans);}
.dialog-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-3);}
.dialog-badge{background:var(--accent);color:var(--text-on-accent);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);padding:3px 10px;border-radius:var(--radius-full);letter-spacing:var(--tracking-wide);text-transform:uppercase;}
.dialog-close-x{border:none;background:none;color:var(--text-muted);font-size:20px;line-height:1;cursor:pointer;padding:0 var(--space-1);}
.dialog-title{font-family:var(--font-serif);font-size:var(--text-lg);color:var(--text-primary);margin:0 0 var(--space-3);line-height:var(--leading-snug);}
.dialog-body{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-muted);margin:0 0 var(--space-5);line-height:var(--leading-relaxed);}
.dialog-cta{display:inline-block;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-on-accent);background:var(--accent);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);text-decoration:none;}
.dialog-footer{margin-top:var(--space-5);text-align:right;}
.dialog-close-text{border:none;background:none;color:var(--accent);font-family:var(--font-sans);font-weight:var(--weight-medium);cursor:pointer;padding:0;font-size:var(--text-sm);}
.dialog-close-text:hover{color:var(--accent-hover);}

@media (max-width:600px){
  .site-header{padding:var(--space-4);}
  .site-nav{gap:var(--space-4);}
  .intro-body{padding:0 var(--space-2);}
}
