/* Firefly sitewide identity, motion and journal. */
body>.site-fireflies{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden}
.site-firefly{position:absolute;width:3px;height:3px;border-radius:50%;background:#c0ffe2;box-shadow:0 0 9px 3px #73f7c4aa,0 0 24px 7px #6debc655;opacity:.28;animation:firefly-drift var(--duration) ease-in-out infinite alternate;animation-delay:var(--delay)}
@keyframes firefly-drift{0%{opacity:.08;transform:translate3d(0,0,0) scale(.65)}55%{opacity:.72}100%{opacity:.13;transform:translate3d(var(--travel-x),var(--travel-y),0) scale(1.45)}}
body>.site-ripple{position:fixed;z-index:9998;width:14px;height:14px;left:0;top:0;border:1.5px solid #a4ffe6;border-radius:50%;pointer-events:none;box-shadow:0 0 14px #78eed7aa;transform:translate(-50%,-50%) scale(.2);animation:site-ripple .78s ease-out forwards}
.site-ripple::after{content:"";position:absolute;inset:-7px;border:1px solid #a4ffe680;border-radius:inherit}
@keyframes site-ripple{to{opacity:0;transform:translate(-50%,-50%) scale(6)}}
.site-language{flex:none;min-height:40px;padding:7px 12px;border:1px solid #6bcab681;border-radius:99px;background:#08313cbb;color:#e7fff6;font:inherit;font-size:12px;letter-spacing:.06em;cursor:pointer;transition:background .2s,transform .2s}
.site-language:hover{background:#14515a;transform:translateY(-2px)}
@media(prefers-reduced-motion:no-preference){.project,.about-panel,.detail-block,.xp-journal-entry{transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease}.project:hover,.about-panel:hover,.detail-block:hover,.xp-journal-entry:hover{transform:translateY(-3px);border-color:#a4f5d87d;box-shadow:0 22px 55px #00131a63}.page-enter .project,.page-enter .about-panel,.page-enter .xp-journal-entry{animation:site-card-in .55s ease both}.page-enter .project:nth-child(2),.page-enter .about-panel:nth-child(2),.page-enter .xp-journal-entry:nth-child(2){animation-delay:.09s}.page-enter .xp-journal-entry:nth-child(3){animation-delay:.16s}@keyframes site-card-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}}
body>.site-footer{position:relative;z-index:5;margin-top:clamp(50px,8vw,110px);border-top:1px solid #91eed039;background:linear-gradient(160deg,#051d2be8,#061521f2);backdrop-filter:blur(18px);color:#d4eae4}
.site-footer-inner{display:grid;grid-template-columns:minmax(220px,1.35fr) repeat(3,minmax(125px,1fr));gap:clamp(20px,4vw,68px);padding-top:46px;padding-bottom:40px}
.site-footer-brand strong{display:block;font-family:Georgia,serif;font-size:28px;color:#f1fff8}.site-footer-brand p{max-width:25ch;color:#9ec6bf;line-height:1.7;font-size:13px}
.site-footer-col h2{margin:4px 0 13px;color:#a7f4d8;font-size:12px;letter-spacing:.15em}.site-footer-col a{display:block;width:max-content;max-width:100%;margin:9px 0;color:#c4ddd7;text-decoration:none;font-size:13px}.site-footer-col a:hover{color:#aaffdf;text-decoration:underline;text-underline-offset:4px}
.site-footer-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid #91eed02b;padding-top:20px;padding-bottom:24px;color:#7fa9a7;font-size:12px}.site-footer-bottom a{color:#a8ddcf;text-decoration:none}
.xp-journal-flow{display:flex;flex-wrap:wrap;gap:8px;margin:35px 0 17px}.xp-journal-flow a{border:1px solid #a1e7d153;border-radius:99px;padding:8px 14px;background:#092c3db3;color:#c9f9e5;font-size:12px;text-decoration:none}.xp-journal-flow a:hover{background:#155168}
.xp-journal{display:grid;grid-template-columns:1fr;gap:16px}.xp-journal .xp-journal-entry{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(220px,.85fr);align-items:center;gap:30px;min-height:245px;padding:clamp(22px,4vw,42px);scroll-margin-top:110px;background:linear-gradient(135deg,#092a3de6,#071e2ed9)}
.xp-journal-entry:nth-child(even) .xp-journal-copy{order:2}.xp-journal-entry:nth-child(even) .xp-journal-diagram{order:1}
.xp-journal .xp-journal-entry h2{font-size:clamp(25px,3vw,38px);margin:10px 0}.xp-journal .xp-journal-lead{font-size:15px;color:#e4f5ed}.xp-journal-entry ul{margin:18px 0 0;padding-left:1.2em;color:#b2d5cf;line-height:1.85;font-size:13px}
.xp-journal-diagram{position:relative;display:flex;align-items:center;justify-content:space-around;gap:5px;min-height:165px;border:1px solid #a5f0d54d;border-radius:16px;background:radial-gradient(circle at 50% 50%,#1d746455,#061d2b22 70%);overflow:hidden}
.xp-journal-diagram::before{content:"";position:absolute;left:10%;right:10%;top:50%;border-top:1px dashed #96f4d090}.xp-journal-diagram span{position:relative;z-index:1;display:grid;place-items:center;width:70px;height:70px;flex:none;border:1px solid #a9f4d7a8;border-radius:18px;background:#0c3944;color:#d9ffec;font-size:12px;text-align:center;box-shadow:0 0 25px #79eec72e}.xp-diagram-scene span{border-radius:50%}.xp-diagram-chat span:nth-child(2){box-shadow:0 0 30px #79eec790}.xp-diagram-deploy span:last-child{border-color:#f4d790;color:#ffeaba}
.xp-journal-ending{margin:20px 0 50px;padding:25px;border-left:2px solid #88eecb;color:#beddd6}.xp-journal-ending span{font-size:11px;letter-spacing:.22em;color:#85ebc5}.xp-journal-ending p{margin:8px 0 0}
.ai-sticker-pick{display:grid;place-items:center;min-width:44px;min-height:44px;padding:0!important;border:1px solid #78d7c288;border-radius:10px;background:#0b3541;color:#b2ffdb;font-size:23px;cursor:pointer}.ai-sticker-pick.selected{background:#207c6b;box-shadow:0 0 0 3px #65e1bc33}
.ai-sticker-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}.ai-sticker-option{display:grid;gap:6px;justify-items:center;min-height:112px;padding:9px;border:1px solid #8be1c44d;border-radius:11px;background:#092c39;color:#e6fff5;font:inherit;font-size:12px;cursor:pointer}.ai-sticker-option:hover{background:#155161;border-color:#a7f4d8}.ai-sticker-option img{width:80px;height:74px;object-fit:contain}
.ai-sticker-admin{margin-top:26px;padding-top:20px;border-top:1px solid #a3ead546}.ai-sticker-admin h3{font-size:16px}.ai-sticker-admin .ai-sticker-upload{grid-template-columns:1fr 1fr auto;align-items:end}.ai-sticker-admin .ai-sticker-upload>button{height:40px}.ai-sticker-admin-grid{margin-top:13px}
body>.ai-achievement-toast{position:fixed;right:22px;bottom:22px;z-index:10000}
.ai-view .ai-side{position:relative}.ai-view .ai-room{min-width:0}
@media(max-width:920px){.site-footer-inner{grid-template-columns:repeat(2,minmax(0,1fr))}.xp-journal .xp-journal-entry{grid-template-columns:1fr}.xp-journal-entry:nth-child(even) .xp-journal-copy,.xp-journal-entry:nth-child(even) .xp-journal-diagram{order:initial}}
@media(max-width:600px){.site-language{min-height:34px;padding:5px 8px}.site-footer-inner{grid-template-columns:1fr 1fr;gap:25px}.site-footer-brand{grid-column:1/-1}.site-footer-bottom{font-size:11px}.xp-journal-diagram span{width:58px;height:58px;font-size:11px}.ai-sticker-admin .ai-sticker-upload{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.site-firefly,.site-ripple{animation:none}.site-firefly{opacity:.22}.site-ripple{display:none}.site-language{transition:none}}
.hero h1 { font-size:clamp(48px,6.9vw,104px); letter-spacing:-.055em; }
