@property --ph-lens{syntax:"<length>";inherits:true;initial-value:0}.ph-root{--ph-lead:#1f1a16;--ph-wall:#ebe2cf;--ph-wall-shade:#d8ccb2;--ph-wood:#6a4527;--ph-wood-dark:#3f2816;--ph-wood-light:#8a5d36;--ph-oak-h:url(/textures/oak-h.webp);--ph-oak-v:url(/textures/oak-v.webp);--ph-oak-size:320px;--ph-glass:#fbf9f273;--ph-ink:#2a221c;--ph-ink-soft:#2a221c9e;--ph-fog:#e2e8eeed;--ph-sky-top:#7fb2e5;--ph-sky-mid:#bcd8f2;--ph-sky-low:#e9f1f8;--ph-glow:0;--ph-font-sign:"Josefin Sans", "Futura", "Century Gothic", system-ui, sans-serif;--ph-font-hand:"EB Garamond", Georgia, serif;--ph-font-name:"Glass Antiqua", var(--ph-font-sign);--ph-below:200;--u:min(calc((100vw - 2.5rem) / 400), calc((100svh - 2.75rem) / (429 + var(--ph-below))));--ph-strip:calc(var(--u) * 35);--ph-lens:calc(var(--u) * 690);background:var(--ph-wall);height:100svh;color:var(--ph-ink);font-family:var(--ph-font-sign);position:relative;overflow:clip}html[data-sky=dawn] .ph-root{--ph-sky-top:#e9a8a0;--ph-sky-mid:#f6c9a6;--ph-sky-low:#fdebd2;--ph-glass:#fcf6ee6b}html[data-sky=dusk] .ph-root{--ph-sky-top:#2e3a6c;--ph-sky-mid:#b8685a;--ph-sky-low:#f2b07e;--ph-glass:#faeee25c;--ph-wall:#e2d3b8;--ph-fog:#e2dee4eb}html[data-sky=night] .ph-root{--ph-sky-top:#060a1a;--ph-sky-mid:#111a3e;--ph-sky-low:#243160;--ph-glass:#181c3038;--ph-wall:#2b241d;--ph-wall-shade:#1d1813;--ph-ink:#f3ead8;--ph-ink-soft:#f3ead8a8;--ph-fog:#8088a0e6;--ph-glow:1}html[data-sky=night] .ph-lead{--ph-lead:#857a6c}.ph-scene{height:100%;padding:1rem 1.25rem calc(1.75rem + var(--u) * var(--ph-below));flex-direction:column;justify-content:center;align-items:center;gap:0;display:flex;position:relative}.ph-lintel{width:calc(var(--u) * 400);padding:calc(var(--u) * 5) 0 calc(var(--u) * 4);background:linear-gradient(180deg, #ffe1b429, transparent 45%, #0000004d), var(--ph-oak-h) 0 0 / var(--ph-oak-size) repeat;text-align:center;border-radius:2px 2px 0 0;position:relative;box-shadow:0 6px 14px #00000038}.ph-carved{color:#e7cf98;text-shadow:0 1px #0000008c,0 0 1px #3c1e0a99}.ph-name{font-family:var(--ph-font-name);font-size:max(1.56rem, calc(var(--u) * 15));letter-spacing:.22em;text-transform:uppercase;margin:0;font-weight:400;line-height:.87}.ph-role{margin:calc(var(--u) * 2.5) 0 0;font-size:max(.62rem, calc(var(--u) * 4.2));letter-spacing:.4em;text-transform:uppercase;font-weight:600}.ph-frame{padding:calc(var(--u) * 8);background:linear-gradient(90deg, #00000052, transparent 6%, transparent 94%, #00000052), var(--ph-oak-v) 0 0 / var(--ph-oak-size) repeat;position:relative;box-shadow:inset 0 0 0 2px #00000040,0 18px 40px #00000047}.ph-frame:before,.ph-frame:after{height:calc(var(--u) * 8);background:linear-gradient(180deg, #ffe1b41a, #00000038), var(--ph-oak-h) 0 0 / var(--ph-oak-size) repeat;content:"";position:absolute;left:0;right:0;box-shadow:inset 0 0 0 1px #0003}.ph-frame:before{top:0}.ph-frame:after{bottom:0}.ph-panes{gap:calc(var(--u) * 6);display:flex;position:relative}.ph-sill{width:calc(var(--u) * 412);height:calc(var(--u) * 7);background:linear-gradient(180deg, #ffe1b438, transparent 40%, #00000059), var(--ph-oak-h) 0 0 / var(--ph-oak-size) repeat;border-radius:0 0 3px 3px;box-shadow:0 10px 18px #00000040}.ph-panel{height:calc(var(--u) * 340);position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #00000073}.ph-panel>*{width:100%;height:100%;position:absolute;inset:0}.ph-sky{background:linear-gradient(180deg, var(--ph-sky-top), var(--ph-sky-mid) 55%, var(--ph-sky-low));filter:blur(1.5px);transition:background 1.5s}.ph-cloud{filter:blur(calc(var(--u) * 4));background:#ffffffbf;border-radius:50%;animation:90s linear infinite ph-drift;position:absolute}html[data-sky=night] .ph-cloud,html[data-sky=dusk] .ph-cloud{background:#ffd6be33}@keyframes ph-drift{0%{transform:translate(-30%)}to{transform:translate(30%)}}.ph-stars{opacity:0;border-radius:50%;width:2px;height:2px;transition:opacity 1.5s;position:absolute}html[data-sky=night] .ph-stars{opacity:1}.ph-moon{box-shadow:0 0 calc(var(--u) * 18) #fff8dc66;opacity:0;background:radial-gradient(circle at 40% 40%,#fffbe8,#e8e2c8 60%,#0000 72%);border-radius:50%;transition:opacity 1.5s;position:absolute}html[data-sky=night] .ph-moon{opacity:.9}html[data-weather=cloudy] .ph-sky{filter:blur(1.5px)saturate(.7)}html[data-weather=fog] .ph-sky{filter:blur(2.5px)saturate(.35)brightness(1.08)}html[data-weather=drizzle] .ph-sky{filter:blur(1.5px)saturate(.55)brightness(.9)}html[data-weather=rain] .ph-sky{filter:blur(1.5px)saturate(.4)brightness(.78)}html[data-weather=storm] .ph-sky{filter:blur(1.5px)saturate(.3)brightness(.55)}html[data-weather=snow] .ph-sky{filter:blur(1.5px)saturate(.45)brightness(1.02)}html:is([data-weather=drizzle],[data-weather=rain],[data-weather=storm],[data-weather=fog],[data-weather=snow]) :is(.ph-moon,.ph-stars){opacity:0}html[data-sky=night][data-weather=cloudy] .ph-stars{opacity:.35}html[data-sky=night][data-weather=cloudy] .ph-moon{opacity:.4}.ph-cloud-extra{display:none}html:is([data-weather=cloudy],[data-weather=drizzle],[data-weather=rain],[data-weather=storm],[data-weather=snow]) .ph-cloud-extra{display:block}html:is([data-weather=drizzle],[data-weather=rain],[data-weather=storm]) .ph-cloud{background:#bec4ccb3}.ph-wx{opacity:0;pointer-events:none;transition:opacity 2s;position:absolute;inset:0;overflow:hidden}.ph-overcast{background:linear-gradient(#767e8ae6,#9ca3ab99 60%,#bcc1c659)}html[data-sky=night] .ph-overcast{background:linear-gradient(#14161ee6,#282c3899)}html[data-weather=cloudy] .ph-overcast{opacity:.4}html[data-weather=drizzle] .ph-overcast,html[data-weather=snow] .ph-overcast{opacity:.65}html[data-weather=rain] .ph-overcast{opacity:.85}html[data-weather=storm] .ph-overcast{opacity:.95}.ph-fogbank{background:linear-gradient(#e8ecefb8,#f4f5f6eb)}html[data-weather=fog] .ph-fogbank{opacity:1}.ph-sheet{will-change:transform;position:absolute;inset:-200px 0 0}.ph-sheet-far{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cg stroke='white' stroke-opacity='.35' stroke-width='.8' stroke-linecap='round'%3E%3Cpath d='M6 4l-.6 8M22 30l-.6 9M38 10l-.6 7M51 40l-.6 8M14 48l-.6 7M44 22l-.6 6'/%3E%3C/g%3E%3C/svg%3E") 0 0/60px 60px;animation:.55s linear infinite ph-fall-60}.ph-sheet-near{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cg stroke='white' stroke-opacity='.55' stroke-width='1.2' stroke-linecap='round'%3E%3Cpath d='M10 5l-1.5 14M34 40l-1.5 16M61 12l-1.5 13M85 63l-1.5 15M103 28l-1.5 14M18 78l-1.5 16M47 92l-1.5 13M72 100l-1.5 15M96 106l-1.5 12M40 58l-1.5 11M115 80l-1.5 14M5 44l-1.5 12'/%3E%3C/g%3E%3C/svg%3E") 0 0/120px 120px;animation:.38s linear infinite ph-fall-120}.ph-sheet-flakes{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cg fill='white' fill-opacity='.85'%3E%3Ccircle cx='12' cy='20' r='1.6'/%3E%3Ccircle cx='50' cy='64' r='2.2'/%3E%3Ccircle cx='96' cy='14' r='1.3'/%3E%3Ccircle cx='120' cy='90' r='1.9'/%3E%3Ccircle cx='30' cy='112' r='1.4'/%3E%3Ccircle cx='76' cy='128' r='2'/%3E%3Ccircle cx='66' cy='40' r='1.1'/%3E%3Ccircle cx='132' cy='50' r='1.2'/%3E%3C/g%3E%3C/svg%3E") 0 0/140px 140px;animation:9s linear infinite ph-fall-140;top:-140px}@keyframes ph-fall-60{to{transform:translateY(60px)}}@keyframes ph-fall-120{to{transform:translateY(120px)}}@keyframes ph-fall-140{to{transform:translateY(140px)}}html[data-weather=drizzle] .ph-rain{opacity:.35}html[data-weather=rain] .ph-rain{opacity:.65}html[data-weather=storm] .ph-rain{opacity:.9}html[data-weather=snow] .ph-snow{opacity:1}.ph-lightning{background:radial-gradient(at 60% 10%,#f5f8ff,#c8d4ff99 60%,#0000)}html[data-weather=storm] .ph-lightning{opacity:0;transition:none;animation:11s infinite ph-lightning}@keyframes ph-lightning{0%,60%,62%,64.5%,to{opacity:0}61%{opacity:.95}63.5%{opacity:.7}}.ph-glass{z-index:3;pointer-events:none}.ph-lead{pointer-events:none;filter:drop-shadow(0 .5px #ffffff2e)}html[data-sky=night] .ph-glass-color{filter:saturate(1.25)brightness(1.15)}.ph-balloon{z-index:2;cursor:pointer;border:0;border-radius:50%;width:auto;height:auto;padding:0;transition:transform .35s cubic-bezier(.2,.8,.2,1.2),box-shadow .35s,filter .35s;position:absolute}.ph-balloon:after{content:"";border-radius:50%;position:absolute;inset:min(-40%,-14px)}.ph-balloon:hover,.ph-balloon:focus-visible{box-shadow:0 calc(var(--u) * 2) calc(var(--u) * 5) #00000059, 0 0 calc(var(--u) * 10) #ffffff73;filter:brightness(1.12)saturate(1.1);transform:translateY(calc(var(--u) * -1.2)) scale(1.07)}.ph-balloon:focus-visible{outline-offset:3px;outline:2px solid #fff}html[data-sky=night] .ph-balloon{box-shadow:0 0 calc(var(--u) * 9) currentColor}.ph-balloon-label{--label-x:-50%;left:50%;top:calc(100% + var(--u) * 3);padding:calc(var(--u) * 1.2) calc(var(--u) * 2.4);background:var(--ph-lead);color:#fbf6ea;font-size:max(.62rem, calc(var(--u) * 4));letter-spacing:.18em;opacity:0;pointer-events:none;text-transform:uppercase;transform:translate(var(--label-x), -4px);white-space:nowrap;font-weight:700;transition:opacity .25s,transform .25s;position:absolute}.ph-balloon-label[data-align=end]{--label-x:0%;left:auto;right:0}.ph-balloon:hover .ph-balloon-label,.ph-balloon:focus-visible .ph-balloon-label{opacity:1;transform:translate(var(--label-x), 0)}.ph-card-backdrop{z-index:60;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#140e0873;position:fixed;inset:0}.ph-card{z-index:61;border:5px solid var(--ph-lead);outline-offset:-11px;color:#fdf8ec;outline:1px solid #ffffff40;width:min(92vw,27rem);padding:2rem 1.9rem 1.6rem;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 30px 70px #00000073}.ph-card-glass{z-index:-1;background:radial-gradient(circle at 30% 25%, #ffffff47, transparent 55%), radial-gradient(circle at 70% 90%, #00000038, transparent 60%), var(--card-color);position:absolute;inset:0}.ph-card-glass:after{content:"";mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.16'/%3E%3C/svg%3E");position:absolute;inset:0}.ph-card h2{letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:2.1rem;font-weight:700;line-height:1.05}.ph-card .ph-card-status{letter-spacing:.2em;text-transform:uppercase;background:#00000047;margin-bottom:.9rem;padding:.2rem .55rem;font-size:.68rem;font-weight:700;display:inline-block}.ph-card p{font-family:var(--ph-font-hand);margin:.9rem 0 0;font-size:1.12rem;line-height:1.45}.ph-card-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.6rem;display:flex}.ph-card-enter,.ph-card-close{border:3px solid var(--ph-lead);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;padding:.65rem 1.1rem;font-size:.78rem;font-weight:700}.ph-card-enter{color:var(--ph-lead);background:#fbf6ea}.ph-card-enter:hover,.ph-card-enter:focus-visible{background:#fff}.ph-card-close{color:#fdf8ec;background:0 0}.ph-card-close:hover,.ph-card-close:focus-visible{background:#00000038}.ph-card[data-tone=light],.ph-card[data-tone=light] .ph-card-close{color:var(--ph-lead)}.ph-card[data-tone=light]{outline-color:#0000002e}.ph-card[data-tone=light] .ph-card-status{background:var(--ph-lead);color:#fdf8ec}.ph-card[data-tone=light] .ph-card-close:hover,.ph-card[data-tone=light] .ph-card-close:focus-visible{background:#0000001a}.ph-talk{z-index:4;grid-template-rows:1fr calc(var(--u) * 22);gap:calc(var(--u) * 8);color:var(--ph-ink);display:grid;position:absolute;overflow:hidden}.ph-log{overflow-wrap:anywhere;min-width:0;padding:calc(var(--u) * 5) calc(var(--u) * 6);font-family:var(--ph-font-hand);font-size:max(.84rem, calc(var(--u) * 6.3));scrollbar-width:none;line-height:1.42;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000,#000 12%,#000);mask-image:linear-gradient(#0000,#000 12%,#000)}.ph-log::-webkit-scrollbar{display:none}.ph-log-inner{flex-direction:column;justify-content:flex-end;gap:.8em;min-height:100%;display:flex}.ph-q{font-family:var(--ph-font-sign);letter-spacing:.14em;text-transform:uppercase;color:var(--ph-ink-soft);font-size:.72em;font-weight:700}.ph-a{font-style:italic}.ph-a.ph-refused{color:var(--ph-ink-soft)}.ph-hello{text-align:center}.ph-hello strong{font-family:var(--ph-font-sign);letter-spacing:.2em;text-transform:uppercase;font-size:.78em;display:block}.ph-suggestions{font-family:var(--ph-font-sign);letter-spacing:.08em;flex-wrap:wrap;justify-content:center;gap:.35em .9em;margin-top:.7em;font-size:.66em;display:flex}.ph-suggestions button{color:var(--ph-ink);cursor:pointer;border-bottom:1px solid}.ph-suggestions button:hover,.ph-suggestions button:focus-visible{color:#c8312b}.ph-input{align-items:center;gap:calc(var(--u) * 3);min-width:0;padding:0 calc(var(--u) * 5);display:flex}.ph-input input{min-width:0;color:var(--ph-ink);font-family:var(--ph-font-hand);font-size:max(.9rem, calc(var(--u) * 7));background:0 0;border:0;outline:none;flex:1;font-style:italic}.ph-input input::placeholder{color:var(--ph-ink-soft)}.ph-input button{font-size:max(.66rem, calc(var(--u) * 4.4));letter-spacing:.2em;text-transform:uppercase;color:var(--ph-ink);cursor:pointer;flex:none;font-weight:700}.ph-input button:disabled{opacity:.35;cursor:default}.ph-input:focus-within{background:#ffffff38}.ph-only-compact{display:none}@media (width<=760px){.ph-panel[data-show=wide],.ph-only-wide{display:none}.ph-only-compact{display:inline}.ph-root{--u:min(calc((100vw - 2rem) / 196), calc((100svh - 2.5rem) / (429 + var(--ph-below))))}.ph-scene{padding-bottom:calc(1.5rem + var(--u) * var(--ph-below))}.ph-lintel{width:calc(var(--u) * 186)}.ph-sill{width:calc(var(--u) * 196)}.ph-name{font-size:calc(var(--u) * 14);letter-spacing:.2em}.ph-role{letter-spacing:.14em}}.ph-room{height:100%;perspective:var(--ph-lens);transition:perspective 1.8s cubic-bezier(.62,0,.2,1);position:relative}.ph-room[data-room=left]{perspective:var(--ph-left-lens,var(--ph-lens))}.ph-room[data-room=right]{perspective:var(--ph-right-lens,var(--ph-lens))}.ph-world{--cam-lens:var(--ph-lens);--cam-tilt:0deg;--cam-lift:0px;--cam-pull:0px;--cam-pitch:var(--cam-tilt);--cam-yaw:0deg;--cam-glance:0deg;--cam-x:0px;--cam-y:0px;--cam-z:0px;--cam:translate3d(0, calc((var(--ph-strip) - 100%) / 2), var(--cam-lens)) rotateX(calc(var(--cam-pitch) * -1)) rotateY(calc(var(--cam-yaw) + var(--cam-glance))) rotateX(var(--cam-tilt)) translate3d(var(--cam-x), var(--cam-y), var(--cam-z)) translate3d(0, calc((100% - var(--ph-strip)) / 2), calc(var(--ph-lens) * -1)) translate3d(0, var(--cam-lift), calc(var(--cam-pull) * -1)) rotateX(calc(var(--cam-tilt) * -1));height:calc(100% - var(--ph-strip));transform-style:preserve-3d;transform-origin:50% 100%;transform:var(--cam);transition:transform 1.8s cubic-bezier(.62,0,.2,1);position:relative}.ph-room[data-room=closed]:has(.ph-pull:hover) .ph-world{--cam-tilt:-3deg;transition-duration:.6s}.ph-room:not([data-room=closed]) .ph-world{--cam-tilt:var(--ph-tilt);--cam-lift:var(--ph-lift);--cam-pull:var(--ph-pull)}.ph-room[data-room=left] .ph-world{--cam-lens:var(--ph-left-lens);--cam-pitch:var(--ph-left-pitch);--cam-yaw:var(--ph-left-yaw);--cam-x:var(--ph-left-x);--cam-y:var(--ph-left-y);--cam-z:var(--ph-left-z)}.ph-room[data-room=right] .ph-world{--cam-lens:var(--ph-right-lens);--cam-pitch:var(--ph-right-pitch);--cam-yaw:var(--ph-right-yaw);--cam-x:var(--ph-right-x);--cam-y:var(--ph-right-y);--cam-z:var(--ph-right-z)}.ph-room[data-toward]{cursor:pointer}.ph-room:is([data-toward=left],:has(.ph-turn[data-side=left]:focus-visible)) .ph-world{--cam-glance:-3deg;transition-duration:.6s}.ph-room:is([data-toward=right],:has(.ph-turn[data-side=right]:focus-visible)) .ph-world{--cam-glance:3deg;transition-duration:.6s}.ph-wall{width:calc(100% + var(--ph-corner,80vw) * 2);background:radial-gradient(ellipse 71vw 78svh at 50% calc(100% - (100svh - var(--ph-strip)) * .55), transparent 40%, var(--ph-wall-shade) 120%), var(--ph-wall);pointer-events:none;height:calc(100% + 120svh);position:absolute;bottom:0;left:50%;transform:translate(-50%)translateZ(-1px)}.ph-hang{height:100%;position:relative}.ph-skirting{width:calc(100% + var(--ph-corner,80vw) * 2);height:calc(var(--u) * 8);background:linear-gradient(180deg, #ffe1b433, transparent 30%, #0006), var(--ph-oak-h) 0 0 / var(--ph-oak-size) repeat;pointer-events:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)translateZ(1px);box-shadow:0 -1px #0000004d}.ph-floor{--plank:calc(var(--u) * 42);--near:calc(var(--ph-lens) - var(--u) * 40);width:calc(100% + var(--ph-corner,80vw) * 2);height:var(--ph-depth,var(--near));transform-origin:50% 0;background:radial-gradient(ellipse 34vw 70% at 50% 0, #ffeecd4d, transparent 75%) 0 0 / 100% var(--near) no-repeat, linear-gradient(180deg, #0000001f, #0000007a) 0 0 / 100% var(--near) no-repeat, linear-gradient(#0000007a, #0000007a) 0 var(--near) / 100% 100% no-repeat, repeating-linear-gradient(90deg, transparent 0 calc(var(--plank) - 2px), #00000061 calc(var(--plank) - 2px) var(--plank)), var(--ph-oak-v) 0 0 / var(--ph-oak-size) repeat;position:absolute;top:100%;left:50%;transform:translate(-50%)rotateX(90deg)}html:is([data-sky=dawn],[data-sky=dusk]) .ph-floor{filter:brightness(.85)}html[data-sky=night] .ph-floor{filter:brightness(.55)}.ph-side{--toward:90deg;width:var(--ph-depth,calc(var(--ph-lens) - var(--u) * 40));background:linear-gradient(var(--toward), #00000012, transparent calc(var(--u) * 16)), var(--ph-side-paint,var(--ph-wall));pointer-events:none;height:calc(100% + 120svh);position:absolute;bottom:0}.ph-side[data-side=left]{--toward:270deg;right:calc(100% + var(--ph-corner,80vw));transform-origin:100% 100%;transform:rotateY(90deg)}.ph-side[data-side=right]{left:calc(100% + var(--ph-corner,80vw));transform-origin:0 100%;transform:rotateY(-90deg)}.ph-side:after{height:calc(var(--u) * 8);background:linear-gradient(180deg, #ffe1b424, transparent 30%, #00000075), var(--ph-oak-h) 0 0 / var(--ph-oak-size) repeat;content:"";position:absolute;bottom:0;left:0;right:0;transform:translateZ(1px)}.ph-gallery{--g:min(var(--u), 100vw / 640);pointer-events:none;position:absolute;inset:0}.ph-portrait{--at:var(--y);--keep:var(--clear);--r:calc(var(--g) * var(--rail));--grain:calc(var(--g) * 70);--band:min(calc(var(--ph-reveal,0px) + var(--ph-reveal-slope,0) * var(--g) * var(--at)), calc(var(--ph-hang,var(--ph-corner,80vw)) - var(--g) * 10));--inset:calc(max(var(--g) * var(--keep), max(0px, var(--band) * .92 - var(--g) * var(--w)) * var(--across)) - var(--g) * var(--peek));top:calc(var(--ph-window-middle,50%) + var(--g) * var(--at));width:calc(var(--g) * var(--w));height:calc(var(--g) * var(--h));translate:0 -50%;rotate:var(--tilt);box-shadow:calc(var(--g) * var(--cast) * 1.6) calc(var(--g) * 2.2) calc(var(--g) * 3) #0006;pointer-events:auto;position:absolute}.ph-room[data-walls=narrow] .ph-portrait{--at:var(--narrow-y);--keep:0}.ph-portrait[data-side=left]{--cast:-1;right:calc(100% + var(--inset))}.ph-portrait[data-side=right]{--cast:1;left:calc(100% + var(--inset))}.ph-portrait-wood{position:absolute;inset:0}.ph-portrait[data-wood=walnut] .ph-portrait-wood{filter:brightness(.62)saturate(.85)}.ph-portrait[data-wood=maple] .ph-portrait-wood{filter:sepia(.35)brightness(1.55)saturate(.9)}.ph-portrait[data-wood=cherry] .ph-portrait-wood{filter:hue-rotate(-12deg)saturate(1.45)brightness(.95)}.ph-portrait[data-wood=mahogany] .ph-portrait-wood{filter:hue-rotate(-16deg)saturate(1.3)brightness(.72)}.ph-portrait-rail{position:absolute;inset:0}.ph-portrait-rail[data-rail=top]{clip-path:polygon(0 0, 100% 0, calc(100% - var(--r)) var(--r), var(--r) var(--r));background:linear-gradient(180deg, #ffe8c461, transparent 50%, #0000004d) 0 0 / 100% var(--r) no-repeat, var(--ph-oak-h) 0 0 / var(--grain) repeat}.ph-portrait-rail[data-rail=bottom]{clip-path:polygon(var(--r) calc(100% - var(--r)), calc(100% - var(--r)) calc(100% - var(--r)), 100% 100%, 0 100%);background:linear-gradient(180deg, #ffe8c424, #00000038 45%, #00000080) 0 100% / 100% var(--r) no-repeat, var(--ph-oak-h) 0 0 / var(--grain) repeat}.ph-portrait-rail[data-rail=left]{clip-path:polygon(0 0, var(--r) var(--r), var(--r) calc(100% - var(--r)), 0 100%);background:linear-gradient(90deg, #ffe8c438, #00000014 55%, #0000005c) 0 0 / var(--r) 100% no-repeat, var(--ph-oak-v) 0 0 / var(--grain) repeat}.ph-portrait-rail[data-rail=right]{clip-path:polygon(100% 0, 100% 100%, calc(100% - var(--r)) calc(100% - var(--r)), calc(100% - var(--r)) var(--r));background:linear-gradient(270deg, #ffe8c438, #00000014 55%, #0000005c) 100% 0 / var(--r) 100% no-repeat, var(--ph-oak-v) 0 0 / var(--grain) repeat}.ph-portrait[data-shape=oval],.ph-portrait[data-shape=oval] :is(.ph-portrait-wood,.ph-portrait-ring,.ph-portrait-opening),.ph-portrait[data-shape=oval] .ph-portrait-opening:after{border-radius:50%}.ph-portrait-ring{background:linear-gradient(180deg, #ffe8c442, transparent 45%, #00000057), var(--ph-oak-h) 0 0 / var(--grain) repeat;box-shadow:inset 0 calc(var(--g) * .6) calc(var(--g) * .6) #ffeccc4d, inset 0 calc(var(--g) * -.8) calc(var(--g) * 1) #0006;position:absolute;inset:0}.ph-portrait-opening{inset:var(--r);padding:calc(var(--g) * var(--mat));background:#efe6d2;position:absolute;overflow:hidden}.ph-portrait-opening img{object-fit:cover;width:100%;height:100%;display:block}.ph-portrait[data-mat] .ph-portrait-opening img{box-shadow:0 0 0 calc(var(--g) * .5) #fbf6ea}.ph-portrait-opening:after{box-shadow:inset 0 0 0 1px #00000059, inset 0 calc(var(--g) * 1.1) calc(var(--g) * 1.8) #0000006b;content:"";background:linear-gradient(115deg,#fff3,#ffffff0f 26%,#0000 42% 78%,#ffffff12);position:absolute;inset:0}html:is([data-sky=dawn],[data-sky=dusk]) .ph-gallery{filter:brightness(.85)}html[data-sky=night] .ph-gallery{filter:brightness(.5)}.ph-tea{opacity:0;pointer-events:none;transition:opacity 1s;position:absolute;inset:0}.ph-tea[data-ready]{opacity:1}.ph-pull{height:var(--ph-strip);cursor:pointer;position:absolute;bottom:0;left:0;right:0}.ph-pull:focus-visible{outline-offset:-5px;outline:2px solid #fff}.ph-turn{pointer-events:none;width:48px;position:absolute;top:0;bottom:0}.ph-turn[data-side=left]{left:0}.ph-turn[data-side=right]{right:0}.ph-turn:focus-visible{outline-offset:-5px;outline:2px solid #fff}@property --ph-turn{syntax:"<number>";inherits:true;initial-value:0}.ph-rug{--rug-w:500;--rug-h:340;--fold-a:330;--fold-b:145;top:calc(var(--u) * 36);width:calc(var(--u) * var(--rug-w));height:calc(var(--u) * var(--rug-h));color:#211b16;position:absolute;left:50%;transform:translate(-50%)}.ph-rug-body{filter:drop-shadow(0 0 .5px #0009) drop-shadow(0 calc(var(--u) * 2) calc(var(--u) * 3.5) #00000080);pointer-events:none;position:absolute;inset:0}.ph-rug-cut{pointer-events:auto;position:absolute;inset:0}.ph-rug[data-corner] .ph-rug-cut{clip-path:polygon(0 0, 100% 0, 100% calc(100% - (var(--fold-b) - 1.5) * var(--u)), calc(100% - (var(--fold-a) - 1.5 * var(--fold-a) / var(--fold-b)) * var(--u)) 100%, 0 100%)}.ph-rug-cut:after,.ph-rug-face>div:after{content:"";mix-blend-mode:multiply;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.3'/%3E%3C/svg%3E");position:absolute;inset:0}.ph-rug-art{width:100%;height:100%;position:absolute;inset:0}.ph-rug-tall{display:none}.ph-rug-text{inset:calc(var(--u) * 12) calc(var(--u) * 190) calc(var(--u) * 13) calc(var(--u) * 64);flex-direction:column;align-items:flex-start;line-height:1.15;display:flex;position:absolute}.ph-rug a{color:inherit}.ph-rug :focus-visible{outline:calc(var(--u) * 1.4) solid #1f666b;outline-offset:calc(var(--u) * 2)}.ph-rug-email{font-size:calc(var(--u) * 23);letter-spacing:.03em;-webkit-text-decoration:underline #df8a4b;text-decoration:underline #df8a4b;text-decoration-thickness:calc(var(--u) * 2.4);text-underline-offset:.2em;font-weight:700;line-height:1.2}.ph-rug-socials{gap:calc(var(--u) * 8) calc(var(--u) * 22);margin:calc(var(--u) * 52) 0 0;grid-template-columns:repeat(2,max-content);padding:0;list-style:none;display:grid}.ph-rug-socials a{align-items:center;gap:calc(var(--u) * 5);font-size:calc(var(--u) * 15);letter-spacing:.03em;font-weight:700;text-decoration:none;display:flex}.ph-rug-socials a:hover,.ph-rug-socials a:focus-visible{-webkit-text-decoration:underline #df8a4b;text-decoration:underline #df8a4b;text-decoration-thickness:calc(var(--u) * 1.2)}.ph-rug-square{width:calc(var(--u) * 6.5);height:calc(var(--u) * 6.5);border:calc(var(--u) * 1.2) solid #211b16;flex:none}.ph-rug-copy{margin:calc(var(--u) * 22) 0 0;font-size:calc(var(--u) * 6.5);letter-spacing:.3em;text-transform:uppercase;color:#5c4a39;font-weight:700}.ph-rug-under{z-index:-1;width:calc(var(--fold-a) * var(--u));height:calc(var(--fold-b) * var(--u));padding:0 calc(var(--u) * 7) calc(var(--u) * 5) 0;color:#f1e3c8;font-size:calc(var(--u) * 6.5);letter-spacing:.02em;text-align:right;text-shadow:0 0 calc(var(--u) * 1.5) #281a0eb3;flex-direction:column;justify-content:flex-end;align-items:flex-end;font-weight:600;line-height:1.5;display:flex;position:absolute;bottom:0;right:0}.ph-rug-under ul{margin:0;padding:0;list-style:none}.ph-rug-under li{white-space:nowrap}.ph-rug-under cite{font-style:normal}.ph-rug-under a{text-underline-offset:.15em;-webkit-text-decoration:underline #f1e3c873;text-decoration:underline #f1e3c873}.ph-rug-under a:hover{text-decoration-color:currentColor}.ph-rug-lift{--ph-turn:0;--phi:calc(var(--ph-turn) * 2.6);pointer-events:none;transition:--ph-turn .9s cubic-bezier(.55,0,.45,1);position:absolute;inset:0}.ph-rug:not([data-lifted]):has(.ph-rug-corner:hover) .ph-rug-lift{--ph-turn:.05;transition-duration:.35s}.ph-rug[data-lifted] .ph-rug-lift{--ph-turn:1;transition:--ph-turn 1.2s cubic-bezier(.45,0,.2,1)}.ph-rug-crease,.ph-rug-rest{width:calc(var(--fold-a) * var(--u));height:calc(var(--fold-b) * var(--u));position:absolute;bottom:0;right:0}.ph-rug-crease{z-index:-1;clip-path:polygon(0 100%,100% 100%,100% 0);opacity:clamp(0, 3 * sin(var(--phi)), 1);will-change:opacity;background:linear-gradient(to bottom right,#0000 50%,#00000080 50%,#00000026 58%,#0000 72%)}.ph-rug-rest{z-index:-1;filter:blur(calc(var(--u) * 3.5));opacity:calc(.5 * max(0, cos(var(--phi))));will-change:opacity}.ph-rug-rest div{translate:0 calc(var(--u) * 2);clip-path:polygon(0 100%,100% 100%,100% 0);background:#000;position:absolute;inset:0}.ph-rug-flap{--up:clamp(0, 1 - cos(var(--phi)), 1);--l:hypot(var(--fold-a), var(--fold-b));--dx:calc(var(--fold-a) / var(--l));--dy:calc(var(--fold-b) / var(--l) * -1);--nx:calc(var(--fold-b) / var(--l));--ny:calc(var(--fold-a) / var(--l));--h:calc(var(--fold-a) * var(--nx));--rise:.6;filter:drop-shadow(0 calc(var(--u) * (2 + 8 * var(--up))) calc(var(--u) * (2 + 4 * var(--up))) rgb(0 0 0/calc(40% * var(--up))));position:absolute;inset:0}.ph-rug-strip{--e0:calc(var(--f0) - 3 / var(--h));--t0:calc(var(--e0) * var(--fold-a) * var(--dx));--ds:calc((var(--f1) - var(--f0)) * var(--h));--c:cos(var(--th));--sn:sin(var(--th));--out:calc(var(--x) * var(--ds) - 3 * var(--c));--high:calc(var(--z) * var(--ds) - 3 * var(--sn));--facing:calc(var(--c) - var(--rise) * var(--sn) * var(--ny));top:calc(100% - var(--fold-b) * var(--u));left:calc(100% - var(--fold-a) * var(--u));width:calc((1 - var(--e0)) * var(--l) * var(--u));height:calc((var(--f1) - var(--e0)) * var(--h) * var(--u));clip-path:polygon(0 0, 100% 0, calc(100% - (var(--f1) - var(--e0)) * var(--fold-b) * var(--fold-b) / var(--l) * var(--u)) 100%, calc((var(--f1) - var(--e0)) * var(--fold-a) * var(--fold-a) / var(--l) * var(--u)) 100%);transform-origin:0 0;transform:translate(calc(var(--u) * (var(--t0) * var(--dx) + var(--out) * var(--nx))), calc(var(--u) * (var(--fold-b) + var(--t0) * var(--dy) + var(--out) * var(--ny) - var(--rise) * var(--high)))) matrix(var(--dx), var(--dy), calc(var(--c) * var(--nx)), calc(var(--c) * var(--ny) - var(--rise) * var(--sn)), 0, 0);will-change:transform;position:absolute;overflow:hidden}.ph-rug[data-lifted] .ph-rug-strip{cursor:pointer;pointer-events:auto}.ph-rug-face,.ph-rug-backing{will-change:opacity, filter;position:absolute;inset:0}.ph-rug-face{opacity:clamp(0, 40 * var(--facing), 1);filter:brightness(calc(1 + .15 * var(--sn)));overflow:hidden}.ph-rug-face>div{width:calc(var(--u) * var(--rug-w));height:calc(var(--u) * var(--rug-h));transform-origin:0 0;transform:matrix(var(--dx), var(--nx), var(--dy), var(--ny), 0, 0) translate(calc(var(--u) * (var(--fold-a) - var(--rug-w) - var(--t0) * var(--dx) - var(--e0) * var(--h) * var(--nx))), calc(var(--u) * (0 - var(--rug-h) - var(--t0) * var(--dy) - var(--e0) * var(--h) * var(--ny))));position:absolute;top:0;left:0}.ph-rug-face svg,.ph-rug-face img{width:100%;height:100%;position:absolute;inset:0}.ph-rug-backing{opacity:clamp(0, -40 * var(--facing), 1);filter:brightness(calc(.62 + .35 * max(0, -1 * var(--c))));background:repeating-linear-gradient(0deg, #5a46281f 0 calc(var(--u) * .5), transparent 0 calc(var(--u) * 1.6)), repeating-linear-gradient(90deg, #5a46281a 0 calc(var(--u) * .5), transparent 0 calc(var(--u) * 1.6)), #ece0c7}.ph-rug-corner{width:max(44px, calc(var(--u) * 48));height:max(44px, calc(var(--u) * 48));cursor:pointer;background:0 0;border:0;padding:0;position:absolute;bottom:0;right:0}.ph-rug[data-lifted] .ph-rug-corner{pointer-events:none}@media (width<=760px){.ph-rug{--rug-w:270;--rug-h:568}.ph-gallery{--g:var(--u)}.ph-rug-wide{display:none}.ph-rug-tall{display:block}.ph-rug-text{inset:calc(var(--u) * 15) calc(var(--u) * 10) auto calc(var(--u) * 66)}.ph-rug-email{font-size:calc(var(--u) * 18)}.ph-rug-socials{margin-top:calc(var(--u) * 44)}.ph-rug-socials a{font-size:calc(var(--u) * 16.5)}.ph-rug-copy{margin-top:calc(var(--u) * 16);font-size:calc(var(--u) * 7)}.ph-rug{--fold-a:258;--fold-b:300}.ph-rug-flap{--rise:.55}.ph-rug-under{font-size:calc(var(--u) * 8.5);line-height:1.3}.ph-rug-under cite{display:block}.ph-rug-under li+li{margin-top:calc(var(--u) * 2.5)}.ph-rug-under-dot{display:none}}.ph-loading{z-index:100;color:#f4d7b4;background:#1f666b;flex-direction:column;justify-content:center;align-items:center;gap:clamp(1.25rem,3.5vh,2rem);padding:1rem;transition:opacity .6s,visibility 0s .6s;animation:.6s 8s forwards ph-loading-give-up;display:flex;position:fixed;inset:0}.ph-loading p{text-align:center;margin:0}.ph-loading[data-lifted]{opacity:0;visibility:hidden;pointer-events:none;animation:none}@keyframes ph-loading-give-up{to{opacity:0;visibility:hidden}}.ph-loading-question{letter-spacing:.06em;font-size:clamp(1.5rem,5vw,2.75rem);font-weight:600}.ph-loading-squares{gap:clamp(.6rem,1.6vw,.9rem);display:flex}.ph-loading-squares i{aspect-ratio:1;background:var(--wool);opacity:.3;border:2px solid #211b16;width:clamp(.9rem,2.6vw,1.35rem);animation:1.25s ease-in-out infinite ph-loading-pulse}.ph-loading-squares i:first-child{--wool:#df8a4b}.ph-loading-squares i:nth-child(2){--wool:#efb98b;animation-delay:.15s}.ph-loading-squares i:nth-child(3){--wool:#e4a19c;animation-delay:.3s}.ph-loading-squares i:nth-child(4){--wool:#b7b991;animation-delay:.45s}.ph-loading-squares i:nth-child(5){--wool:#f4d7b4;animation-delay:.6s}@keyframes ph-loading-pulse{0%,70%,to{opacity:.3}35%{opacity:1}}.ph-loading-note{letter-spacing:.45em;text-transform:uppercase;opacity:.85;padding-left:.45em;font-size:clamp(.85rem,2vw,1.1rem);font-weight:600}@media (prefers-reduced-motion:reduce){.ph-cloud,.ph-sheet,html[data-weather=storm] .ph-lightning{animation:none}.ph-balloon,.ph-balloon-label,.ph-room,.ph-world,.ph-rug-lift{transition:none}.ph-room[data-room=closed]:has(.ph-pull:hover) .ph-world{--cam-tilt:0deg}.ph-room .ph-world{--cam-glance:0deg!important}}@font-face{font-family:Slackey;src:url(/fonts/slackey/Slackey-Regular.ttf)format("truetype");font-display:swap;font-weight:400;font-style:normal}.ph-room{--ph-dust:0}.ph-sill{position:relative}.ph-wall:after,.ph-side:before,.ph-skirting:after,.ph-sill:after,.ph-lintel:after,.ph-portrait:after,.ph-frame-dust{z-index:2;border-radius:inherit;pointer-events:none;content:"";position:absolute;inset:0}.ph-wall:after,.ph-side:before{background:url(/textures/dust-grime.svg) 0 100% / calc(var(--u) * 210) calc(var(--u) * 190);opacity:calc(var(--ph-dust) * .12);-webkit-mask-image:linear-gradient(to top, #000, transparent calc(var(--u) * 80));mask-image:linear-gradient(to top, #000, transparent calc(var(--u) * 80))}.ph-side:before{-webkit-mask-image:linear-gradient(to top, #000, transparent calc(var(--u) * 72));mask-image:linear-gradient(to top, #000, transparent calc(var(--u) * 72))}.ph-skirting:after,.ph-sill:after,.ph-lintel:after,.ph-frame-dust{background:url(/textures/dust-powder.svg) 0 0 / calc(var(--u) * 140) calc(var(--u) * 140);opacity:calc(var(--ph-dust) * .8);-webkit-mask-image:linear-gradient(#000,#00000073 18%,#0000 52%,#0003);mask-image:linear-gradient(#000,#00000073 18%,#0000 52%,#0003)}.ph-lintel:after{-webkit-mask-image:linear-gradient(to bottom, #000, transparent calc(var(--u) * 6));mask-image:linear-gradient(to bottom, #000, transparent calc(var(--u) * 6))}.ph-sill:after{-webkit-mask-image:linear-gradient(#000,#000 26%,#0000 68%);mask-image:linear-gradient(#000,#000 26%,#0000 68%)}.ph-frame-dust{-webkit-mask-image:linear-gradient(to bottom, #000, #0003 calc(var(--u) * 8) calc(100% - var(--u) * 8), #000);mask-image:linear-gradient(to bottom, #000, #0003 calc(var(--u) * 8) calc(100% - var(--u) * 8), #000);clip-path:polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 0, calc(var(--u) * 8) calc(var(--u) * 8), calc(var(--u) * 8) calc(100% - var(--u) * 8), calc(100% - var(--u) * 8) calc(100% - var(--u) * 8), calc(100% - var(--u) * 8) calc(var(--u) * 8), calc(var(--u) * 8) calc(var(--u) * 8))}.ph-portrait:after{background:url(/textures/dust-powder.svg) 0 0 / calc(var(--g) * 90) calc(var(--g) * 90), url(/textures/dust-grime.svg) 0 100% / calc(var(--g) * 120) calc(var(--g) * 120);opacity:calc(var(--ph-dust) * .58);-webkit-mask-image:linear-gradient(#000,#0000 8% 94%,#00000073),linear-gradient(90deg,#0000004d,#0000 10% 90%,#0000004d);mask-image:linear-gradient(#000,#0000 8% 94%,#00000073),linear-gradient(90deg,#0000004d,#0000 10% 90%,#0000004d)}html:is([data-sky=dawn],[data-sky=dusk]) .ph-broom{filter:brightness(.85)}html[data-sky=night] .ph-broom{filter:brightness(.55)}.ph-broom{bottom:0;right:calc(var(--ph-corner) * -1 + var(--u) * 14);width:max(44px, calc(var(--u) * 48));height:calc(var(--u) * 160);transform:translateZ(calc(var(--u) * 42)) rotateY(-45deg);position:absolute}.ph-broom-handle{cursor:pointer;transform-origin:50% 100%;background:0 0;border:0;width:100%;height:100%;padding:0;transition:rotate .18s;display:block}.ph-broom-handle svg{filter:drop-shadow(-3px 2px 2px #0003);width:100%;height:100%;overflow:visible;transform:scaleX(-1)}.ph-broom-handle:hover{rotate:-3deg}.ph-broom-handle:focus-visible{outline-offset:5px;border-radius:6px;outline:3px solid #1f666b}.ph-broom-prompt{z-index:30;color:#30291f;width:220px;max-width:calc(100vw - 32px);font-family:var(--ph-font-sign);background:#f2e9d4;border:1px solid #79654b;border-radius:5px;padding:16px;font-size:16px;position:fixed;top:16px;left:clamp(16px,8vw,110px);box-shadow:0 8px 28px #0000003d}.ph-broom-prompt p{margin:0 0 12px}.ph-broom-prompt>div{gap:8px;display:flex}.ph-broom-prompt button{cursor:pointer;border:1px solid #79654b;border-radius:3px;min-height:44px;padding:8px 12px}.ph-broom-prompt button:first-child{color:#fff9ea;background:#1f666b;border-color:#1f666b}.ph-broom-prompt button:focus-visible{outline-offset:3px;outline:3px solid #df8a4b}.ph-broom-error{font-size:14px}.ph-turnstile{pointer-events:none;position:fixed;bottom:0;left:0}.ph-cleaning-card{color:#faf0a6;background:radial-gradient(at 18% 27%,#9fc39da6,#0000 50%),radial-gradient(at 86% 79%,#195c5399,#0000 55%),repeating-linear-gradient(173deg,#bac48a12 0 6px,#0000 7px 18px),#3e8075;border:0;width:100vw;max-width:none;height:100svh;max-height:none;margin:0;padding:32px;font-family:Slackey,Georgia,serif;position:fixed;inset:0;overflow:hidden}.ph-cleaning-card[open]{place-content:center;display:grid}.ph-cleaning-card::backdrop{background:#3e8075}.ph-cleaning-card:after{opacity:.2;pointer-events:none;content:"";background:url(/textures/dust.svg);position:absolute;inset:0}.ph-timecard-flowers{width:100%;height:100%;position:absolute;inset:0}.ph-cleaning-card h2{z-index:1;text-align:center;text-shadow:3px 4px #b37f41,6px 8px #143f3999;margin:0;font-size:clamp(36px,8vw,104px);font-weight:400;line-height:1.28;position:relative;rotate:-3deg}.ph-cleaning-card h2 span{display:block}.ph-cleaning-card h2 span:last-child{rotate:2deg}.ph-cleaning-card p{z-index:1;text-align:center;min-height:1.4em;font:16px var(--ph-font-sign);margin:32px 0 0;position:relative}@media (prefers-reduced-motion:reduce){.ph-broom-handle{transition:none}.ph-broom-handle:hover{rotate:none}}
