/* All alternate presentation rules are opt-in. The classic theme stays intact. */
.layout-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 14px;border:1px solid #79648d;border-radius:24px;background:#21172c;color:#f3dfad;font:inherit;font-size:14px;white-space:nowrap;cursor:pointer}
.layout-toggle svg{width:18px;height:22px;flex:none}
.layout-toggle:hover{background:#382846;border-color:#e8ca7c}
.layout-toggle:active{background:#493457}
.layout-toggle:focus-visible{outline:3px solid #e8ca7c;outline-offset:3px}
html[data-layout=portrait]{--portrait-gutter:clamp(18px,5vw,64px);--portrait-copy:#cbbdd7;--portrait-surface:#171120;--portrait-accent:#e8ca7c}
html[data-layout=portrait] body{min-width:320px}
html[data-layout=portrait] .site-header{max-width:1080px;padding:24px var(--portrait-gutter);padding-top:max(24px,env(safe-area-inset-top));gap:16px;flex-wrap:wrap}
html[data-layout=portrait] .site-header nav{gap:12px;align-items:center;flex-wrap:wrap}
html[data-layout=portrait] .record-link{min-height:48px;padding:10px 8px;color:var(--portrait-copy)}
html[data-layout=portrait] .experience{display:flex;flex-direction:column;gap:0;max-width:1080px;min-height:calc(100svh - 200px);padding:0 var(--portrait-gutter) 32px;align-items:stretch}
html[data-layout=portrait] body:not(.has-hand) .cat-stage{width:100%;max-width:720px;min-height:0;margin:0 auto;padding:12px 0 24px;flex:none;overflow:clip}
html[data-layout=portrait] .cat-character{width:74%;max-width:520px}
html[data-layout=portrait] .hand-invitation{right:6%;top:16%;width:32%}
html[data-layout=portrait] .mystic-portal{width:86%;max-width:600px}
html[data-layout=portrait] .intro-call{display:none}
html[data-layout=portrait] .cat-caption{font-size:16px;gap:10px}
html[data-layout=portrait] #motionToggle{width:44px;height:44px;flex:none;color:var(--portrait-copy)}
html[data-layout=portrait] .conversation{width:100%;max-width:800px;margin:0 auto;padding:8px 0 0;min-width:0}
html[data-layout=portrait] body:not(.has-hand) .conversation{text-align:center;display:flex;flex-direction:column;align-items:stretch}
html[data-layout=portrait] .speaker{justify-content:center}
html[data-layout=portrait] #greeting{font-size:clamp(34px,5.5vw,62px);line-height:1.35;margin:16px 0 20px;letter-spacing:.04em}
html[data-layout=portrait] .speech{font-size:clamp(16px,2.1vw,23px);line-height:1.85;min-height:0;margin:0 auto;max-width:34em;color:var(--portrait-copy)}
html[data-layout=portrait] .reading-invitation{width:100%;max-width:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:28px 0 0;text-align:left;order:2}
html[data-layout=portrait] .reading-invitation span{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 4px;gap:8px;background:none;border-color:#675176}
html[data-layout=portrait] .reading-invitation i{width:40px;height:40px;font-size:22px}
html[data-layout=portrait] .reading-invitation b{font-size:clamp(13px,1.9vw,20px);color:#eee8f4}
html[data-layout=portrait] .reading-invitation small{font-size:clamp(12px,1.6vw,17px);color:var(--portrait-copy)}
html[data-layout=portrait] .upload-panel{margin:26px 0 0;padding:0;border:0}
html[data-layout=portrait] #uploadButton{width:100%;min-height:64px;padding:16px 20px;font-size:clamp(18px,2.6vw,28px);border-radius:16px}
html[data-layout=portrait] .photo-tip{font-size:clamp(13px,1.7vw,18px);line-height:1.7;margin:14px 0 0;color:var(--portrait-copy)}
html[data-layout=portrait] .gentle-note{order:3;font-size:clamp(12px,1.5vw,16px);line-height:1.7;color:var(--portrait-copy)}
html[data-layout=portrait] body>footer{max-width:1080px;padding:12px var(--portrait-gutter) max(24px,env(safe-area-inset-bottom));gap:16px;flex-wrap:wrap;color:var(--portrait-copy)}
/* During reading, captions and results follow the real palm instead of covering it. */
html[data-layout=portrait] .has-hand .experience{display:block;max-width:1080px;padding:8px var(--portrait-gutter) 40px}
html[data-layout=portrait] .theatre-heading{align-items:flex-start;gap:16px;flex-wrap:wrap}
html[data-layout=portrait] .theatre-heading h2{font-size:clamp(22px,3vw,34px)}
html[data-layout=portrait] .theatre-heading__tools{max-width:none;flex-wrap:wrap;justify-content:flex-start}
html[data-layout=portrait] .theatre-heading__tools button{min-height:48px;font-size:16px}
html[data-layout=portrait] .story-stage-wrap{display:flex;flex-direction:column;gap:16px}
html[data-layout=portrait] .palm-theatre.is-stage-collapsed .story-stage-wrap{display:none}
html[data-layout=portrait] #palmStage{order:0;min-width:0}
html[data-layout=portrait] .story-stage-wrap .palm-stage{height:clamp(400px,54svh,1050px);min-height:0;max-height:none;border-radius:28px}
html[data-layout=portrait] .quest-hud{position:relative;inset:auto;order:-1;width:100%;padding:14px 18px;box-shadow:none;transform:none}
html[data-layout=portrait] .story-caption{position:relative;inset:auto;order:1;width:100%;margin:0;padding:20px 24px;box-shadow:none;transform:none}
html[data-layout=portrait] .story-caption h2{font-size:clamp(23px,3vw,32px);margin:8px 0}
html[data-layout=portrait] .story-caption p{font-size:clamp(16px,2vw,22px)}
html[data-layout=portrait] .hide-left-stage-note .quest-hud,html[data-layout=portrait] .hide-right-stage-note .story-caption{display:none}
html[data-layout=portrait] .interpretation-orbit{position:static;inset:auto;order:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;pointer-events:auto;min-width:0}
html[data-layout=portrait] .interpretation-rail{position:static;inset:auto;width:auto;display:flex;flex-direction:column;gap:12px;min-width:0}
html[data-layout=portrait] .interpretation-card{min-height:118px;width:100%;padding:18px;gap:6px;box-shadow:none}
html[data-layout=portrait] .interpretation-card strong{font-size:clamp(18px,2.4vw,26px);white-space:normal}
html[data-layout=portrait] .interpretation-card p{font-size:clamp(14px,1.8vw,19px);-webkit-line-clamp:3}
html[data-layout=portrait] .interpretation-card span,html[data-layout=portrait] .interpretation-card i{font-size:14px;color:var(--portrait-copy)}
html[data-layout=portrait] .interpretation-finish{position:static;inset:auto;transform:none;width:100%;grid-column:1/-1;padding:24px;animation:none;box-shadow:none}
html[data-layout=portrait] .interpretation-finish strong{font-size:clamp(22px,3vw,30px)}
html[data-layout=portrait] .interpretation-finish p{font-size:16px}
html[data-layout=portrait] .has-hand .conversation{display:block;max-width:none;margin:24px 0 0;padding:0}
html[data-layout=portrait] .has-hand #discoveryList{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:none;grid-auto-flow:row;grid-auto-columns:auto;max-height:none!important;overflow:visible!important;gap:12px}
html[data-layout=portrait] .has-hand .discovery-list .discovery-item{height:auto;min-height:140px;overflow-wrap:anywhere}
html[data-layout=portrait] .palm-chat{max-width:none;padding:24px;margin-top:24px;font-size:18px}
html[data-layout=portrait] .palm-chat__head{flex-wrap:wrap}
html[data-layout=portrait] .palm-chat__head h2{font-size:clamp(24px,3vw,32px)}
html[data-layout=portrait] .palm-chat__head p,html[data-layout=portrait] .palm-chat__note{font-size:14px;color:var(--portrait-copy);line-height:1.7}
html[data-layout=portrait] .palm-chat button{min-height:48px}
html[data-layout=portrait] .palm-chat__scopes{flex-wrap:wrap;overflow:visible}
html[data-layout=portrait] .palm-chat__suggestions{grid-template-columns:repeat(2,minmax(0,1fr))}
html[data-layout=portrait] .palm-chat__messages{max-height:60svh;overscroll-behavior:contain}
html[data-layout=portrait] .palm-chat__message{overflow-wrap:anywhere;max-width:96%}
html[data-layout=portrait] .bazi-panel__birth{grid-template-columns:repeat(2,minmax(0,1fr))}
html[data-layout=portrait] .bazi-panel input,html[data-layout=portrait] .bazi-panel select{min-width:0;min-height:48px;font-size:16px}
html[data-layout=portrait] dialog{max-width:calc(100vw - 24px);max-height:calc(100svh - 24px)}
html[data-layout=portrait] .interpretation-dialog{width:960px}
html[data-layout=portrait] .interpretation-dialog__body{font-size:18px;overflow-wrap:anywhere}
html[data-layout=portrait] .records-header{gap:12px;flex-wrap:wrap}
html[data-layout=portrait] .records-header button{min-height:44px}
@media(min-width:800px) and (orientation:portrait){
  html[data-layout=portrait] .site-header{padding-top:40px;padding-bottom:32px}
  html[data-layout=portrait] .brand{font-size:36px}
  html[data-layout=portrait] .brand small{font-size:16px}
  html[data-layout=portrait] .record-link,html[data-layout=portrait] .layout-toggle{font-size:20px;min-height:56px}
  html[data-layout=portrait] body:not(.has-hand) .experience{justify-content:center}
  html[data-layout=portrait] body:not(.has-hand) .cat-stage{padding-bottom:32px}
  html[data-layout=portrait] #uploadButton{min-height:88px}
  html[data-layout=portrait] .speaker{font-size:18px}
  html[data-layout=portrait] .palm-stage__controls button{width:60px;height:60px;font-size:24px}
  html[data-layout=portrait] .palm-stage__controls button:last-child{width:72px;font-size:16px}
  html[data-layout=portrait] .palm-stage__status{font-size:18px;bottom:88px}
}
@media(max-width:600px){
  .site-header nav:has(.layout-toggle){gap:8px;flex-wrap:wrap}
  .site-header:has(.layout-toggle){flex-wrap:wrap;gap:12px}
  html[data-layout=portrait] .site-header{padding-top:16px;padding-bottom:8px;gap:8px}
  html[data-layout=portrait] .brand{font-size:24px}
  html[data-layout=portrait] .brand-moon{font-size:34px}
  html[data-layout=portrait] .site-header nav{width:100%;justify-content:space-between;gap:4px}
  html[data-layout=portrait] .record-link{font-size:13px;padding:8px 4px}
  html[data-layout=portrait] .layout-toggle{font-size:13px;padding:8px 12px}
  html[data-layout=portrait] .experience{min-height:0}
  html[data-layout=portrait] body:not(.has-hand) .cat-stage{max-width:370px;padding:0 0 8px}
  html[data-layout=portrait] .cat-character{width:65%}
  html[data-layout=portrait] .cat-caption{font-size:12px}
  html[data-layout=portrait] #greeting{margin:10px 0 14px;font-size:34px}
  html[data-layout=portrait] .speech{font-size:16px;line-height:1.75}
  html[data-layout=portrait] .reading-invitation{gap:8px;margin-top:20px}
  html[data-layout=portrait] .reading-invitation small{display:none}
  html[data-layout=portrait] .upload-panel{margin-top:20px}
  html[data-layout=portrait] .gentle-note{margin:12px 0}
  html[data-layout=portrait] .story-stage-wrap .palm-stage{height:58svh;min-height:360px;border-radius:20px}
  html[data-layout=portrait] .theatre-heading h2{font-size:22px}
  html[data-layout=portrait] .theatre-heading__tools{gap:8px}
  html[data-layout=portrait] .theatre-heading__tools #guideMode{width:auto;text-align:left}
  html[data-layout=portrait] .theatre-heading__tools button{font-size:14px}
  html[data-layout=portrait] .interpretation-orbit{grid-template-columns:1fr}
  html[data-layout=portrait] .interpretation-card{min-height:110px;padding:16px}
  html[data-layout=portrait] .has-hand #discoveryList{grid-template-columns:1fr!important}
  html[data-layout=portrait] .palm-chat{padding:18px 14px;font-size:16px}
  html[data-layout=portrait] .palm-chat__head-actions{flex-direction:row;align-items:center;flex-wrap:wrap}
  html[data-layout=portrait] .palm-chat__suggestions{grid-template-columns:1fr}
  html[data-layout=portrait] .bazi-panel__birth{grid-template-columns:1fr}
  html[data-layout=portrait] .story-caption{padding:16px}
  html[data-layout=portrait] .interpretation-dialog__head{padding:16px;gap:12px}
  html[data-layout=portrait] .interpretation-dialog__head h2{font-size:24px}
}
