/* Approved entrance theme shared by the main demo and its design preview. */
.portal-preview { --portal-ink:#292f2d; --portal-amber:#dfad73; --portal-emerald:#155344; }
.portal-status { position:fixed; top:0; left:0; }
.portal-preview.portal-home { background:#f7f4ef; padding:0; overflow-x:hidden; }
.portal-home > .demo-bar,.portal-home > #header,.portal-home > #footer,.portal-home > #mobile-nav { display:none!important; }
.portal-home #main { min-height:100svh; padding:0; margin:0; }
.portal-world { --drift-x:0px; --drift-y:0px; height:100svh; position:relative; isolation:isolate; overflow:hidden; background:radial-gradient(ellipse at 50% 35%,#faf6ee,#e3dacf); }
.portal-canvas { position:absolute; width:min(100vw,calc((100svh - 72px) * 1.7768)); height:min(calc(100svh - 72px),56.283vw); left:50%; top:calc(50% + 36px); transform:translate(-50%,-50%); }
.portal-side-architecture { display:none; position:absolute; top:0; left:50%; width:max(149%,100vw); height:100%; background:url('assets/portal/entrance-extended-v3.png') center/100% 100% no-repeat; pointer-events:none; transform:translate(calc(-50% + var(--drift-x)),var(--drift-y)) scale(1.009); transition:transform 1100ms ease-out; }
@media (min-aspect-ratio:1777/1000) {
  .portal-side-architecture { display:block; }
  .portal-architecture { mask-image:linear-gradient(90deg,transparent 5.5%,#000 9.3%,#000 90.7%,transparent 94.5%); }
}
.portal-architecture { position:absolute; inset:0; width:100%; height:100%; max-width:none; object-fit:fill; user-select:none; pointer-events:none; transform:translate(var(--drift-x),var(--drift-y)) scale(1.009); transition:transform 1100ms ease-out; }
.portal-masthead { position:absolute; z-index:4; top:0; left:0; right:0; height:72px; background:#f7f4ef; }
.portal-wordmark { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); margin:0!important; color:var(--portal-ink); font-family:Georgia,'Times New Roman',serif; font-weight:400; font-size:clamp(25px,2.08vw,38px); line-height:1.2; letter-spacing:.24em; padding-left:.24em; white-space:nowrap; }
.portal-tools { position:absolute; inset:0 clamp(16px,3vw,48px); display:flex; align-items:center; justify-content:space-between; pointer-events:none; }
.portal-tools a { color:var(--portal-ink); display:flex; align-items:center; justify-content:center; width:44px; height:44px; padding:10px; position:relative; border:1px solid #ffffff90; border-radius:50%; background:#ffffff70; box-shadow:0 2px 8px #253a3206; transition:background .18s,color .18s; pointer-events:auto; }
.portal-tools a:hover { background:#fff; color:var(--portal-emerald); }
.portal-tools .icon { width:22px; height:22px; stroke-width:1.35; }
.portal-tool-label { display:none; }
.portal-cart-count { position:absolute; right:-1px; top:-1px; min-width:15px; height:15px; padding:0 3px; border-radius:50%; background:var(--portal-emerald); color:white; font:9px/15px Arial,sans-serif; text-align:center; }
.portal-door { position:absolute; top:16.6%; height:70.8%; width:36.9%; color:var(--portal-ink); text-decoration:none; -webkit-tap-highlight-color:transparent; cursor:pointer; outline-offset:8px; border-radius:35px; }
.portal-moda { left:9.6%; }
.portal-pattern { left:53.5%; }
.portal-door h2 { position:absolute; top:-1.3%; left:0; width:100%; margin:0!important; padding-left:.10em; text-align:center; font:400 clamp(19px,1.57vw,36px)/1.2 Georgia,'Times New Roman',serif; letter-spacing:.10em; color:inherit; text-shadow:0 1px 6px #fff7; transition:color .4s,text-shadow .4s; }
.portal-frame { position:absolute; top:7.1%; bottom:7.8%; left:0; right:0; border:2px solid #fff0c9; border-radius:36px 36px 3px 3px; pointer-events:none; box-shadow:0 0 9px #ffdc98,inset 0 0 8px #ffdda070,0 0 22px #ffe6ad65; opacity:.4; animation:portal-led-breathe 5.2s ease-in-out infinite; transition:border-color .7s,box-shadow .7s,background .7s; }
.portal-pattern .portal-frame { animation-delay:-2.6s; }
.portal-door:hover .portal-frame,.portal-door:focus-visible .portal-frame { border-color:#fff8; box-shadow:inset 0 0 26px #ffebc529,0 0 35px #fff7; background:linear-gradient(120deg,#fff1,transparent 38%,#ffbd6809); }
.portal-door:hover h2 { color:#46301d; text-shadow:0 0 18px #fff,0 0 32px #ffe2bd; }
.portal-enter { position:absolute; bottom:0; left:50%; transform:translateX(-50%); display:flex; gap:12px; align-items:center; justify-content:center; width:min(220px,88%); min-height:48px; white-space:nowrap; color:#fff; padding:13px 18px; border:1px solid #ffffffa6; border-radius:8px; background:#155344f5; box-shadow:0 4px 16px #112d2526; font:500 14px/1.3 'Segoe UI',Arial,sans-serif; letter-spacing:.01em; transition:background .18s,transform .18s; }
.portal-enter svg { width:22px; height:13px; fill:none; stroke:currentColor; stroke-width:1.3; flex:none; transform:rotate(-90deg); transition:transform .18s; }
.portal-enter>span { min-width:0; white-space:normal; text-align:center; }
.portal-door:hover .portal-enter,.portal-door:focus-visible .portal-enter { background:#103f34; transform:translateX(-50%) translateY(-2px); }
.portal-door:hover .portal-enter svg { transform:translateY(-3px) rotate(-90deg); }
.portal-mobile-scene { display:none; }
.portal-home #assistant-launcher { background:#fffef2; color:#423528; border:1px solid #d0a36c; border-radius:40px; box-shadow:0 6px 25px #5e402724,0 0 24px #fff4; bottom:26px; right:28px; padding:13px 20px; font-size:13px; min-height:48px; }
.portal-home #assistant-launcher .icon { color:#b78448; }
.portal-tools a:focus-visible,.portal-door:focus-visible { outline:2px solid var(--portal-emerald); outline-offset:3px; }
.portal-light { position:fixed; inset:0; z-index:1500; pointer-events:none; visibility:hidden; opacity:0; background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,50%),#fff 0%,#fff8e8 21%,#f7d5a6 52%,#fff7ed 100%); }
.portal-light i { position:absolute; left:var(--light-x,50%); top:var(--light-y,50%); width:34vw; height:65vh; border:2px solid #fff9; border-radius:40%; opacity:0; transform:translate(-50%,-50%); box-shadow:0 0 45px #fff8,inset 0 0 40px #ffd59977; }
.portal-light i:nth-child(2) { width:42vw; height:78vh; }
.portal-light i:nth-child(3) { width:54vw; height:94vh; }
.portal-travelling .portal-canvas { transform-origin:var(--travel-x,50%) var(--travel-y,50%); animation:portal-travel 2s cubic-bezier(.48,.02,.38,1) forwards; }
.portal-travelling .portal-door { pointer-events:none; }
.portal-travelling .portal-door h2,.portal-travelling .portal-enter,.portal-travelling .portal-tools,.portal-travelling .portal-wordmark { transition:opacity .4s; opacity:0; }
.portal-travelling #assistant-launcher { opacity:0; pointer-events:none; }
.portal-travelling .portal-light { visibility:visible; pointer-events:none; animation:portal-bloom 2s ease-in forwards; }
.portal-travelling .portal-light i { animation:portal-ring 2s cubic-bezier(.5,.08,.5,1) forwards; }
.portal-travelling .portal-light i:nth-child(2) { animation-delay:.12s; }
.portal-travelling .portal-light i:nth-child(3) { animation-delay:.24s; }
.portal-arrived .portal-light { animation:portal-reveal .18s ease-out forwards; }
@keyframes portal-travel { 0% { transform:translate(-50%,-50%) scale(1); filter:brightness(1); } 28% { filter:brightness(1.05); } 100% { transform:translate(-50%,-50%) scale(3.15); filter:brightness(1.5) blur(3px); } }
@keyframes portal-bloom { 0%,16% { opacity:0; } 45% { opacity:.09; } 73% { opacity:.40; } 100% { opacity:1; } }
@keyframes portal-ring { 0% { opacity:0; transform:translate(-50%,-50%) scale(.65); } 45% { opacity:.4; } 100% { opacity:0; transform:translate(-50%,-50%) scale(4); } }
@keyframes portal-reveal { from { opacity:1; visibility:visible; } to { opacity:0; visibility:hidden; } }
@keyframes portal-led-breathe { 0%,100% { opacity:.28; } 50% { opacity:.85; } }
.portal-reduced .portal-canvas { animation:none; }
.portal-reduced .portal-light { animation:portal-reveal .16s linear reverse forwards; }
.portal-reduced.portal-arrived .portal-light { animation:portal-reveal .10s linear forwards; }
.portal-reduced .portal-light i { animation:none; }
@media (max-width:700px) and (orientation:portrait) {
  .portal-world { --entrance-header:calc(64px + env(safe-area-inset-top)); height:max(100svh,calc(150vw + var(--entrance-header))); background:#f7f4ef; }
  .portal-masthead { top:env(safe-area-inset-top); height:64px; background:#f7f4ef; }
  .portal-canvas { position:absolute; left:50%; top:var(--entrance-header); transform:translateX(-50%); width:100%; height:max(150vw,calc(100svh - var(--entrance-header))); padding:0; }
  .portal-side-architecture { display:none; }
  .portal-architecture { display:block; transform:none; mask-image:none; -webkit-mask-image:none; }
  .portal-wordmark { font-size:clamp(19px,5.1vw,26px); letter-spacing:.18em; padding-left:.18em; }
  .portal-tools { inset:0 12px; gap:0; }
  .portal-tools a { width:44px; height:44px; padding:11px; border-color:#233e3010; background:#ffffff45; box-shadow:none; }
  .portal-tool-label { display:none; }
  .portal-tools .icon { width:21px; height:21px; }
  .portal-door { position:absolute; top:13.5%; height:71%; width:40%; overflow:visible; border:0; border-radius:18px; box-shadow:none; }
  .portal-moda { left:5.5%; }
  .portal-pattern { left:54.5%; }
  .portal-mobile-scene { display:none; }
  .portal-door h2 { top:1%; z-index:2; font-size:clamp(11px,3.4vw,17px); line-height:1.2; color:#3d332c; text-shadow:0 1px 6px #fff9; letter-spacing:.055em; padding-left:.055em; white-space:nowrap; }
  .portal-door h2 span { display:inline; }
  .portal-door:hover h2 { color:#3d332c; }
  .portal-enter { z-index:2; bottom:0; width:88%; min-height:44px; font-size:clamp(11px,3vw,14px); gap:5px; padding:9px 7px; border-radius:7px; box-shadow:0 3px 12px #18372b20; }
  .portal-enter svg { width:15px; height:12px; }
  .portal-frame { z-index:1; top:10%; bottom:13%; left:0; right:0; border-radius:23px 23px 2px 2px; border-width:1px; }
  .portal-home #assistant-launcher { right:20px; left:20px; bottom:max(18px,env(safe-area-inset-bottom)); width:calc(100% - 40px); justify-content:center; padding:14px 18px; min-height:52px; font-size:13px; background:#fffdf7; border-color:#b59468; box-shadow:0 6px 20px #49352018; }
  body.portal-preview.portal-home #assistant-launcher.assistant-launcher { width:76px; height:82px; right:8px; left:auto; bottom:max(8px,env(safe-area-inset-bottom)); min-height:0; padding:0; }
  .portal-home #assistant-launcher .assistant-character { width:52px; height:78px; }
  .portal-home #assistant-launcher .assistant-speech { left:0; width:38px; }
  .portal-travelling .portal-canvas { animation:none; }
  .portal-reduced .portal-canvas { animation:none; }
}
@media (max-width:700px) and (orientation:portrait) and (max-aspect-ratio:3/5) {
  .portal-canvas { top:var(--entrance-header); }
}
@media (prefers-reduced-motion:reduce) {
  .portal-architecture,.portal-side-architecture,.portal-enter,.portal-enter svg,.portal-frame,.portal-door h2 { transition:none!important; }
  .portal-architecture { transform:none; }
  .portal-side-architecture { transform:translateX(-50%); }
  .portal-frame { animation:none; opacity:.5; }
}
