/* Shared sizing: responsive to viewport dimensions, never scroll position. */
:root{--page-gutter:clamp(16px,3vw,48px);--fan-scale-cap:1}
html{scroll-padding-top:calc(var(--header) + 20px)}
body{min-width:0}
.shell{width:min(1280px,calc(100% - 2*var(--page-gutter)))}
.narrow{width:min(940px,calc(100% - 2*var(--page-gutter)))}
main,section,article,.result-top>*,.detail-top>*,.meaning-entry>*,.choice-copy{min-width:0}
h1,h2,h3,p,li,.keyword-grid span,.library-card strong{overflow-wrap:anywhere}
.site-header{padding-inline:max(var(--page-gutter),env(safe-area-inset-left),env(safe-area-inset-right))}
.site-header nav{flex-shrink:0}
.question-form input,.library-controls input,.edit-question-form textarea{font-size:16px}
.question-summary .text-link,.drawing-summary .text-link{flex-shrink:0}
.deck-table{max-width:1120px}
.fan-stage{height:560px}
.deck-table.is-compact{--fan-radius:350px;--fan-card-width:190px;--fan-card-height:328px}
.deck-table.is-compact .fan-stage{height:560px}
.fan-card{left:calc(50% + var(--x) - var(--fan-card-width,146px)/2);width:var(--fan-card-width,146px);height:var(--fan-card-height,252px)}
.fan-card .compass{font-size:calc(var(--fan-card-width,146px)*.48)}
.meaning-entry{gap:clamp(24px,5vw,72px)}
.meaning-entry h2,.app-section h2{white-space:normal}
.meaning-art,.app-art{max-width:100%}
.meaning-art{padding-inline:12px}
.library-controls{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:24px}
.library-controls input{width:100%}
.card-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.detail-top{grid-template-columns:minmax(220px,320px) minmax(0,1fr);gap:clamp(28px,4vw,64px)}
.detail-top>.tarot-face{max-width:100%}
.keyword-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}
.keyword-grid span{min-width:0;padding:10px 14px}
.overview-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.detail-heading>p{max-width:70ch}
.detail-article,.reading-body{max-width:900px}
.detail-article,.reading-module,.followup-answer{font-size:clamp(16px,1.3vw,18px)}
.detail-navigation a{min-width:0;max-width:48%}
.result-top{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(32px,4vw,64px)}
.result-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.result-card .flip-card{aspect-ratio:3/5}
.result-spread.diagram-layout{max-width:400px}
.result-spread.api-count-1{max-width:220px}
.overall-reading p{max-width:65ch}
.loading-panel{min-width:0;padding:16px 0}
.loading-panel h2{overflow-wrap:anywhere}
.loading-panel p{max-width:100%}
.followup-form textarea{font-size:16px}
.dialog-heading{padding-right:44px}
dialog{max-height:calc(100dvh - 48px)}
.modal-choice{min-width:0}
.modal-choice strong{overflow-wrap:anywhere}
.dialog-actions{position:sticky;bottom:-38px;background:#1b1726;padding-bottom:12px;z-index:2}
.toast{width:470px;max-width:calc(100vw - 32px)}
@media(min-width:1024px) and (max-height:850px){
 :root{--fan-scale-cap:.74}
 .reading-heading{padding-top:24px}
 .reading-heading h1{font-size:42px}
 .reading-heading p{font-size:16px;margin-top:12px}
 .question-form{margin-top:24px}
 .deck-table{margin-top:18px}
 .ready-screen{margin-top:20px}
 .page-heading{padding:48px 0 32px}
}
@media(min-width:1024px) and (max-height:650px){:root{--fan-scale-cap:.62}}
@media(min-width:1920px){
 .section{padding-block:96px}
 .scene-grid{gap:28px}
 .result-page{padding-top:52px}
}
@media(max-width:1100px){
 .library-controls{grid-template-columns:minmax(0,1fr)}
 .library-controls input{max-width:520px}
 .card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
 .result-top{grid-template-columns:minmax(0,1fr);gap:40px}
 .result-top .result-spread{margin-inline:auto}
 .result-top .overall-reading{max-width:720px;margin-inline:auto;width:100%}
 .scene-grid,.related-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px){
 .detail-top{grid-template-columns:minmax(0,1fr);gap:32px}
 .detail-top>.tarot-face{width:min(260px,100%);margin-inline:auto}
 .keyword-panels{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
 .keyword-panel{padding:20px}
 .keyword-panel h2{font-size:22px}
 .overview-grid{grid-template-columns:minmax(0,1fr)}
 .meaning-entry{grid-template-columns:minmax(0,1fr);gap:24px}
 .meaning-art{margin-inline:auto;width:min(340px,100%)}
}
@media(max-width:760px){
 h1{font-size:clamp(28px,6vw,36px)}
 .site-header nav{gap:18px;font-size:12px}
 .reading-heading p{font-size:16px}
 .scene-grid,.related-grid,.card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
 .result-meta{grid-template-columns:minmax(0,1fr);gap:20px;margin-bottom:32px}
 .result-meta strong{font-size:21px}
 .result-page{padding-top:24px}
 .result-spread.diagram-layout{max-width:320px;gap:12px}
 .result-spread.api-count-1{width:180px;max-width:100%}
 .overall-reading h2{font-size:28px;margin-bottom:20px}
 .reading-body{margin-top:44px}
 .reading-module{margin-top:36px;padding-bottom:36px}
 .result-controls .text-link{max-width:100%;text-align:center}
 .detail-heading h1{font-size:clamp(30px,6vw,38px)}
 .detail-heading>p{font-size:16px}
 .detail-article section{margin-bottom:48px}
 .detail-article h2{font-size:26px}
 .detail-article h3{font-size:21px}
 .detail-navigation{gap:20px}
 .detail-navigation a{font-size:16px}
 .detail-cta{padding-top:32px}
 .library-status{flex-wrap:wrap;gap:8px}
 .library-card{padding:14px 12px 18px}
 .library-card strong{font-size:14px}
 .filter-group button,.card-tools button,.store-button{min-height:44px}
 .dialog-actions{bottom:-28px}
 .spread-choice .mini-spread.diagram-layout{grid-template-columns:repeat(var(--diagram-columns),29px);gap:12px 8px}
 .spread-choice .mini-spread .card-back{width:29px;height:50px}
 .spread-choice .choice-copy strong{font-size:19px}
 .toast{width:470px;max-width:calc(100vw - 32px)}
}
@media(max-width:600px){
 :root{--header:100px}
 .site-header{height:auto;min-height:100px;flex-direction:column;align-items:stretch;justify-content:center;gap:0;padding-block:8px 0}
 .brand{align-self:center;font-size:14px;gap:10px;letter-spacing:.1em}
 .brand-mark{font-size:28px}
 .site-header nav{justify-content:center;gap:20px;font-size:12px}
 .site-header nav a,.site-header nav a:last-child{display:inline-flex;align-items:center;min-height:44px;padding:8px 0}
 .reading-heading{padding-top:24px}
 .question-form{margin-top:24px;gap:12px}
 .question-help{font-size:12px}
 .question-summary{margin-top:24px;align-items:flex-start;gap:16px}
 .question-summary h1{font-size:23px}
 .recommendation{padding:22px;gap:20px;margin-top:24px}
 .recommendation h2{font-size:24px}
 .drawing-summary{align-items:flex-start;gap:14px}
 .card-tools{gap:16px}
 .card-tools button{padding:8px 10px}
 .keyword-panels{grid-template-columns:minmax(0,1fr)}
 .keyword-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .keyword-panel h2{font-size:23px}
 .site-footer{flex-direction:column;align-items:center;padding:24px var(--page-gutter);gap:20px}
 .site-footer nav{justify-content:center;gap:16px}
 .site-footer :is(a,button){font-size:12px}
 .dialog-heading h2{font-size:24px}
 dialog{padding:24px 20px;width:calc(100% - 24px);max-height:calc(100dvh - 24px)}
 dialog.small-dialog{width:calc(100% - 24px)}
 .dialog-actions{bottom:-24px;gap:12px}
 .dialog-actions .button{flex:1;min-width:0;padding-inline:16px}
 .dialog-actions .text-link{min-height:44px;display:inline-flex;align-items:center}
 .modal-choice{padding:18px;gap:16px}
 .preset-block{padding:18px;margin-top:32px}
 .preset-top{align-items:flex-start;gap:12px;flex-wrap:wrap}
 .preset-list button{gap:16px}
 .general-link a{display:block;margin:8px 0 0}
 .meaning-art .tarot-face,.meaning-art .card-back{width:125px;height:216px}
 .meaning-art .card-back{margin-left:-36px}
 .app-art .card-back{width:110px;height:190px}
 .app-art .tarot-face{width:138px;height:238px}
 .app-art{height:270px;transform:none}
 .ready-screen{gap:16px}
 .ready-screen .ready-actions .button{width:100%;max-width:300px;min-width:0}
}
@media(max-width:480px){
 .scene-grid,.related-grid{grid-template-columns:minmax(0,1fr)}
 .scene-card{min-height:170px;padding:22px}
 .page-heading{padding:40px 0 28px}
 .scene-card h3{font-size:20px}
 .scene-card p{font-size:15px}
 .section{padding-block:48px}
 .store-row{flex-direction:column;align-items:center}
 .store-button{width:210px;max-width:100%}
 .keyword-grid{grid-template-columns:minmax(0,1fr)}
 .detail-overview{padding-block:48px}
 .overview-grid article{padding:22px}
 .dialog-heading h2{font-size:23px}
 .ready-screen .selected-slots.diagram-layout{--ready-card-width:clamp(42px,6svh,56px)}
}
@media(max-width:360px){
 .site-header nav{gap:14px;font-size:11px}
 .brand{font-size:13px}
 .app-art .card-back{width:90px;height:155px}
 .app-art .tarot-face{width:120px;height:207px}
 .app-art{height:240px}
 .card-grid{gap:12px}
 .library-card{padding:12px 9px 16px}
 .result-spread.diagram-layout{gap:8px}
 .diagram-layout .position-name{font-size:11px}
 .detail-navigation{gap:12px}
 .detail-navigation a{font-size:14px}
 .toast{padding:18px 14px;gap:10px}
 .toast-title{font-size:16px}
}
@media(max-height:500px) and (orientation:landscape){
 :root{--header:56px;--fan-scale-cap:.7}
 .site-header{min-height:56px;flex-direction:row;justify-content:space-between;align-items:center;padding-block:0}
 .site-header nav{font-size:11px;gap:16px}
 .reading-heading{padding-top:20px}
 .reading-heading h1{font-size:30px}
 .ready-screen{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"intro spread" "actions spread";gap:16px;margin-block:20px}
 .ready-screen .selected-slots.diagram-layout{--ready-card-width:38px;gap:8px}
 .ready-screen h1{font-size:24px}
 .ready-screen .ready-actions{margin-top:12px}
 dialog{max-height:calc(100dvh - 16px)}
}
@media(hover:none){.fan-card:not(:disabled):hover{transform:rotate(var(--angle));filter:none}.scene-card:hover,.library-card:hover{transform:none}}
