
#franz-portal{position:relative;isolation:isolate;overflow:clip;background:#26101a;color:#f4ece2;min-height:650px;font-family:'DM Sans',Arial,sans-serif;color-scheme:dark}
#franz-portal *{box-sizing:border-box}
#franz-portal .fp-page{visibility:hidden;opacity:0;position:relative;min-height:650px;background:#f3eee5;transform-origin:center}
#franz-portal .fp-gate{position:absolute;inset:0;z-index:10;overflow:clip;background:radial-gradient(ellipse at 50% 45%,#683344 0,#3d1727 40%,#210e18 84%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:75px 22px 55px}
#franz-portal .fp-gate:before{content:'';position:absolute;width:440px;height:440px;border:1px solid #d5a6a328;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-46%) rotateX(62deg);box-shadow:0 0 70px #dda9910b;pointer-events:none}
#franz-portal .fp-orbit{position:absolute;width:540px;height:540px;border:1px solid #e0b9a411;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-40%) rotateX(62deg) rotateZ(-20deg);pointer-events:none}
#franz-portal .fp-coordinates{position:absolute;left:34px;top:30px;font-size:11px;letter-spacing:1px;color:#c3a4ac}
#franz-portal .fp-label{position:absolute;bottom:28px;left:34px;right:34px;display:flex;justify-content:space-between;gap:16px;color:#c8a9b0;font:400 11px/1.5 'DM Sans',sans-serif}
#franz-portal .fp-core{position:relative;display:flex;align-items:center;flex-direction:column;max-width:100%}
#franz-portal .fp-logo{position:relative;width:310px;max-width:100%;height:111px;overflow:clip;margin-bottom:36px}
#franz-portal .fp-logo img{width:420px;max-width:none;position:absolute;top:-69px;left:-55px;filter:grayscale(1) invert(1) contrast(9);mix-blend-mode:screen}
#franz-portal .fp-tagline{font:400 clamp(21px,3.3vw,32px)/1.4 'Special Elite','Courier New',monospace;color:#ecdccc;margin:0 0 36px;letter-spacing:-.7px}
#franz-portal .fp-key{position:relative;width:190px;height:84px;border:1px solid #ffead6;border-radius:10px;background:linear-gradient(150deg,#f8ecde,#d9c2b0);color:#532433;box-shadow:0 9px 0 #a47e74,0 12px 0 1px #421d2a,0 24px 50px #0c000980,inset 0 2px 2px #fff8ec;display:flex;align-items:center;justify-content:space-between;padding:18px 25px;font:400 24px 'Special Elite','Courier New',monospace;transform:rotateX(13deg);transition:transform .2s,box-shadow .2s,filter .2s;cursor:pointer}
#franz-portal .fp-key:before{content:'';position:absolute;inset:7px;border:1px solid #a6887b44;border-radius:5px;pointer-events:none}
#franz-portal .fp-key span:last-child{font:400 34px Georgia,serif}
#franz-portal .fp-key:hover{transform:translateY(-2px) rotateX(8deg);filter:brightness(1.07);box-shadow:0 11px 0 #a47e74,0 14px 0 1px #421d2a,0 26px 55px #13031190,inset 0 2px 2px #fff8ec}
#franz-portal .fp-key:active{transform:translateY(7px);box-shadow:0 2px 0 #a47e74,0 5px 0 1px #421d2a,0 12px 30px #13031190}
#franz-portal .fp-key:disabled{cursor:wait;opacity:.6;font-size:16px}
#franz-portal .fp-key:focus-visible{outline:2px solid #fff1da;outline-offset:12px}
#franz-portal .fp-hint{font:400 11px/1.5 'DM Sans',sans-serif;color:#d1b4bb;margin:29px 0 0}
#franz-portal .fp-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:11;pointer-events:none}
#franz-portal .fp-wake{position:absolute;inset:0;z-index:9;pointer-events:none;opacity:0;background:linear-gradient(180deg,transparent 47%,#fff0da22 49%,#fff0daaa 50%,#fff0da22 51%,transparent 53%);transform:scaleY(.04)}
#franz-portal .fp-back{font:inherit!important}
#franz-portal[data-state=loading] .fc-photo,#franz-portal[data-state=ready] .fc-photo{animation-play-state:paused}
#franz-portal[data-state=entering] .fp-key{transform:translateY(8px) rotateX(0);box-shadow:0 1px 0 #a47e74,0 3px 0 #421d2a}
#franz-portal[data-state=entering] .fp-core{animation:fp-core-away .8s .12s both;mix-blend-mode:screen}
#franz-portal[data-state=entering] .fp-gate{animation:fp-gate-away 1.35s .2s forwards}
#franz-portal[data-state=entering] .fp-page{visibility:visible;animation:fp-materialize 1.45s .6s both}
#franz-portal[data-state=entering] .fp-wake{animation:fp-light-sweep 1.5s .6s both}
#franz-portal[data-state=entering] .fc-header{animation:fp-rebuild .8s 1.25s both}
#franz-portal[data-state=entering] .fc-sheet{animation:fp-rebuild 1s 1.1s both}
#franz-portal[data-state=entering] .fc-art{animation:fp-image-rebuild 1.4s .85s both}
#franz-portal[data-state=entering] .fc-footer{animation:fp-rebuild 1s 1.4s both}
#franz-portal[data-state=arrived] .fp-gate{display:none}
#franz-portal[data-state=arrived] .fp-page{visibility:visible;opacity:1}
#franz-portal[data-state=arrived] .fc-art{animation:none}
#franz-portal[data-state=arrived] .fp-canvas{opacity:0;transition:opacity .6s}
@keyframes fp-core-away{0%{opacity:1;transform:scale(1);filter:blur(0)}50%{opacity:.45;transform:scale(.96);filter:blur(3px)}100%{opacity:0;transform:scale(.87);filter:blur(16px)}}
@keyframes fp-gate-away{0%,20%{clip-path:inset(0)}63%{clip-path:inset(49.65% 0)}88%{clip-path:inset(49.9% 35%)}100%{clip-path:inset(50% 50%)}}
@keyframes fp-materialize{0%{opacity:.2;clip-path:inset(49.8% 0);filter:blur(9px) saturate(.1);transform:scale(1.035)}50%{opacity:.8;filter:blur(2px) saturate(.7)}100%{opacity:1;clip-path:inset(0);filter:none;transform:none}}
@keyframes fp-rebuild{0%{opacity:0;transform:translateY(15px);filter:blur(7px)}60%{opacity:.9;transform:translateY(-1px);filter:blur(1px)}100%{opacity:1;transform:none;filter:none}}
@keyframes fp-image-rebuild{0%{opacity:0;clip-path:inset(100% 0 0);filter:blur(12px)}35%{opacity:.7;clip-path:inset(52% 0 0);filter:blur(3px)}100%{opacity:1;clip-path:inset(0);filter:none}}
@keyframes fp-light-sweep{0%{opacity:0;transform:scaleY(.01)}20%{opacity:1;transform:scaleY(.06)}80%{opacity:.4;transform:scaleY(25)}100%{opacity:0;transform:scaleY(30)}}
@media(max-width:680px){#franz-portal{min-height:760px}#franz-portal .fp-page{min-height:760px}#franz-portal .fp-gate{padding:100px 24px 90px}#franz-portal .fp-logo{width:248px;height:89px;margin-bottom:38px}#franz-portal .fp-logo img{width:336px;top:-55px;left:-44px}#franz-portal .fp-coordinates{left:24px;top:26px}#franz-portal .fp-label{left:24px;right:24px;font-size:10px}#franz-portal .fp-tagline{font-size:24px;max-width:260px}#franz-portal .fp-orbit{width:330px;height:450px}#franz-portal .fp-gate:before{width:280px;height:400px}}
@media(prefers-reduced-motion:reduce){#franz-portal .fp-gate,#franz-portal .fp-core,#franz-portal .fp-page,#franz-portal .fp-wake{animation:none!important;transition:none!important}#franz-portal .fp-canvas{display:none}#franz-portal[data-state=entering] .fp-page{opacity:1}}


@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'Special Elite';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/font-3.ttf) format('truetype');
}

#franz-coming-soon{--burgundy:#572431;--paper:#f3eee5;--ink:#48202b;position:relative;isolation:isolate;overflow:clip;background:var(--paper);color:var(--ink);font:400 13px/1.5 'DM Sans',sans-serif;color-scheme:light}
#franz-coming-soon *{box-sizing:border-box}
#franz-coming-soon button{font:inherit;color:inherit}
#franz-coming-soon button:focus-visible{outline:2px solid #ab6d79;outline-offset:5px}
#franz-coming-soon .fc-header{height:106px;padding:26px 120px 24px 42px;display:flex;align-items:center;justify-content:space-between;gap:18px;position:relative;z-index:3}
#franz-coming-soon .fc-logo{position:relative;width:155px;height:49px;overflow:clip}
#franz-coming-soon .fc-logo img{position:absolute;width:210px;max-width:none;top:-35px;left:-27px;mix-blend-mode:darken}
#franz-coming-soon .fc-status{display:flex;align-items:center;gap:10px;color:#774e58;font-size:12px;white-space:nowrap}
#franz-coming-soon .fc-status:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--burgundy);box-shadow:0 0 0 0 #57243130;animation:fc-signal 3.2s ease-out infinite}
#franz-coming-soon .fc-stage{display:grid;grid-template-columns:1.16fr 1fr;min-height:475px;position:relative;padding:8px 42px 34px;gap:35px;align-items:center}
#franz-coming-soon .fc-sheet{position:relative;z-index:2;padding:30px 0 22px;min-width:0}
#franz-coming-soon .fc-kicker{font-size:12px;margin:0 0 34px;color:#865f67}
#franz-coming-soon h1{font:400 clamp(30px,4.5vw,55px)/1.27 'Special Elite','Courier New',monospace;letter-spacing:-2px;margin:0;color:var(--burgundy);position:relative}
#franz-coming-soon .fc-lines{position:relative;min-height:3.81em;isolation:isolate}
#franz-coming-soon .fc-line{display:block;white-space:nowrap;min-height:1.27em}
#franz-coming-soon .fc-glyph{display:inline-block;white-space:pre;animation:fc-strike .18s ease-out both;transform-origin:50% 90%}
#franz-coming-soon .fc-caret{display:inline-block;width:2px;height:.9em;background:var(--burgundy);vertical-align:-.08em;animation:fc-blink .85s step-end infinite;margin-left:3px}
#franz-coming-soon .fc-carriage{position:absolute;left:0;top:-12px;height:1px;width:36px;background:#844c5b;opacity:0;pointer-events:none}
#franz-coming-soon .fc-body{max-width:320px;margin:34px 0 0;color:#74515a;font-size:14px;min-height:44px;line-height:1.65;transition:opacity 1s,transform 1s}
#franz-coming-soon[data-writing=true] .fc-body{opacity:0;transform:translateY(7px)}
#franz-coming-soon .fc-seal{margin-top:25px;display:inline-flex;align-items:center;gap:13px;font-size:11px;color:#926f76}
#franz-coming-soon .fc-seal:before{content:'';width:36px;height:1px;background:#c9acaf}
#franz-coming-soon .fc-art{align-self:stretch;position:relative;overflow:clip;background:#3d2431;min-height:425px;border-radius:180px 180px 2px 2px;animation:fc-aperture 1.7s cubic-bezier(.2,.7,.2,1) both;transform:translate(var(--px,0px),var(--py,0px));transition:transform 1.2s ease}
#franz-coming-soon .fc-photo{position:absolute;inset:-8%;background-image:url('/assets/image-1.jpg');background-size:cover;background-position:72% center;animation:fc-camera 20s ease-in-out infinite alternate}
#franz-coming-soon .fc-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#57243105 30%,#321422b8)}
#franz-coming-soon .fc-light{position:absolute;inset:0;background:linear-gradient(115deg,transparent 25%,#f8daca19 45%,transparent 65%);background-size:300% 100%;animation:fc-light 11s ease-in-out infinite;pointer-events:none}
#franz-coming-soon .fc-art-caption{position:absolute;left:24px;right:24px;bottom:24px;display:flex;justify-content:space-between;align-items:end;color:#fff3e4;gap:14px}
#franz-coming-soon .fc-art-caption p{font-size:12px;max-width:140px;margin:0;line-height:1.65}
#franz-coming-soon .fc-monogram{font:400 72px/.85 Georgia,serif;color:#fff4e4}
#franz-coming-soon .fc-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:21px 42px 26px;border-top:1px solid #dcc9c7;position:relative;z-index:3;flex-wrap:wrap}
#franz-coming-soon .fc-domain{font:400 17px 'Special Elite','Courier New',monospace;letter-spacing:.6px}
#franz-coming-soon .fc-controls{display:flex;align-items:center;gap:19px;flex-wrap:wrap}
#franz-coming-soon .fc-controls button{background:transparent;border:0;padding:9px 0;font-size:11px;color:#6d4650;min-height:36px;cursor:pointer}
#franz-coming-soon .fc-controls button[aria-pressed=true]{color:#a34f65;text-decoration:underline;text-underline-offset:5px}
#franz-coming-soon .fc-controls button:hover{color:#a34f65}
#franz-coming-soon .fc-accessible{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#franz-coming-soon[data-paused=true] *,#franz-coming-soon[data-paused=true] *:before{animation-play-state:paused!important}
@keyframes fc-strike{0%{opacity:.08;transform:translateY(3px) scaleY(1.1);filter:blur(.5px)}45%{opacity:.65;transform:translateY(-1px) rotate(-.7deg)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes fc-blink{50%{opacity:0}}
@keyframes fc-camera{from{transform:scale(1.02) translateX(-2%)}to{transform:scale(1.13) translateX(1%)}}
@keyframes fc-light{0%,20%{background-position:100% 0}80%,100%{background-position:0% 0}}
@keyframes fc-signal{65%,100%{box-shadow:0 0 0 8px #57243100}}
@keyframes fc-aperture{from{opacity:0;clip-path:inset(40% 48% 40% 48% round 180px)}to{opacity:1;clip-path:inset(0% 0% 0% 0% round 180px 180px 2px 2px)}}
@media(max-width:680px){#franz-coming-soon .fc-header{padding:20px 108px 20px 24px;height:100px;flex-wrap:wrap;gap:0}#franz-coming-soon .fc-logo{width:135px}#franz-coming-soon .fc-status{font-size:11px}#franz-coming-soon .fc-stage{grid-template-columns:1fr;padding:0 24px 24px;gap:24px}#franz-coming-soon .fc-sheet{padding:24px 0 0}#franz-coming-soon .fc-kicker{margin-bottom:24px}#franz-coming-soon h1{font-size:clamp(30px,7.8vw,49px);letter-spacing:-1.6px}#franz-coming-soon .fc-body{margin-top:25px}#franz-coming-soon .fc-art{min-height:240px;border-radius:140px 140px 2px 2px}#franz-coming-soon .fc-photo{background-position:65% 58%}#franz-coming-soon .fc-footer{padding:18px 24px;gap:9px}#franz-coming-soon .fc-controls{gap:18px}#franz-coming-soon .fc-controls button{min-height:44px}#franz-coming-soon .fc-monogram{font-size:52px}#franz-coming-soon .fc-seal{margin-top:17px}}
@media(prefers-reduced-motion:reduce){#franz-coming-soon *,#franz-coming-soon *:before{animation:none!important;transition:none!important}}

html,body{margin:0;min-height:100%;background:#f3eee5}
#franz-portal{min-height:100svh}
#franz-portal:not([data-state=arrived]){height:100svh;min-height:580px;overflow:hidden}
#franz-portal .fp-page{min-height:100svh}
#franz-coming-soon{min-height:100svh;display:flex;flex-direction:column;max-width:1600px;margin:0 auto}
#franz-coming-soon .fc-stage{flex:1;width:100%}
#franz-coming-soon .fc-header{padding-right:42px}
#franz-coming-soon .fc-art{max-height:750px}
@media(min-width:1100px){#franz-coming-soon .fc-header{padding:36px 6vw;height:130px}#franz-coming-soon .fc-stage{padding:20px 6vw 50px;gap:6vw}#franz-coming-soon .fc-footer{padding:24px 6vw}#franz-coming-soon h1{font-size:clamp(48px,4.2vw,68px)}}
@media(max-width:680px){#franz-coming-soon .fc-header{padding:20px 24px}#franz-coming-soon .fc-logo{width:155px}#franz-portal .fp-page{min-height:100svh}#franz-portal .fp-gate{padding:75px 24px}#franz-portal .fp-hint{font-size:12px}}
