/* Project type scale. Values follow the browser's default size; never shrink
 * content to fit a fixed box. Standards and rationale: docs/TYPOGRAPHY.md. */
:root{
 --text-body:1rem;
 --text-control:1rem;
 --text-ui:.875rem;
 --text-small:.875rem;
 --text-meta:.75rem;
 --muted:#69534b;
 --copy-leading:1.65;
}
@media(min-width:1000px){:root{--text-body:1.125rem}}
html{font-size:100%;text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{font-size:var(--text-body);font-weight:400;line-height:var(--copy-leading)}
button,input,textarea,select{font-weight:400}
p,li,dt,dd,label,legend,small,button,a{overflow-wrap:anywhere}
p{line-height:var(--copy-leading)}
.button,.text-link{line-height:1.5;letter-spacing:0;white-space:normal}
.button{min-height:48px;padding:13px 22px}
.text-link{min-height:40px;align-items:center}
.eyebrow,.chapter-label{line-height:1.6;letter-spacing:.1em}
.desktop-nav{font-size:var(--text-ui);gap:26px;line-height:1.5}
.account-button{font-size:var(--text-ui);line-height:1.5;min-height:44px}
.hero-intro,.world-copy>p:not(.eyebrow),.contact-grid>div>p{max-width:60ch;line-height:var(--copy-leading)}
.hero-intro{max-width:38ch}
.hero-links{gap:18px 24px}
.hero .eyebrow{font-size:var(--text-meta);letter-spacing:.13em}
.scroll-cue,.cake-caption{font-size:var(--text-meta);line-height:1.6}
.pastry-index{font-size:var(--text-ui);line-height:1.5;letter-spacing:.04em}
.assembly-chapter>p{max-width:38ch;line-height:var(--copy-leading)}
.assembly-chapter .chapter-label{font-size:var(--text-meta);line-height:1.5}
.scene-topline .eyebrow{font-size:var(--text-meta);line-height:1.5}
.assembly-callout{font-size:var(--text-meta);line-height:1.5;letter-spacing:.04em}
.daisy-speech{font-size:var(--text-meta);line-height:1.5;letter-spacing:0}.scene-scroll-hint{font-size:var(--text-meta);line-height:1.5;letter-spacing:0}
.scene-scroll-hint{max-width:260px}
.world-picture .image-label{font-size:var(--text-small);line-height:1.6;color:var(--muted)}
.signature{font-size:var(--text-small);line-height:1.6}
.world-principles{font-size:var(--text-small);line-height:1.6;flex-wrap:wrap;gap:12px 0}
.flavor-switch button{font-size:var(--text-control);min-height:64px;line-height:1.5}
.flavor-switch button span{font-size:var(--text-meta);line-height:1.5;opacity:1}
.flavor-status,.gallery-theatre .flavor-status{font-size:var(--text-small);line-height:1.6;color:var(--muted)}
.gallery-theatre{height:auto;min-height:130px;padding-bottom:20px}
.pastry-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}
.pastry-card p{font-size:var(--text-body);line-height:var(--copy-leading)}
.pastry-card .text-link,.gallery-footnote .text-link{font-size:var(--text-control)}
.gallery-footnote p{font-size:var(--text-small);line-height:1.65;max-width:60ch}
.celebration>div>p:not(.eyebrow){font-size:var(--text-body);line-height:1.65;color:var(--cream)}
.celebration small{font-size:var(--text-small);line-height:1.6;opacity:1;max-width:55ch;color:var(--cream)}
.faq-list summary{font-size:var(--text-control);line-height:1.6;align-items:start;min-height:60px}
.faq-list p{font-size:var(--text-body);line-height:var(--copy-leading);max-width:65ch}
.contact-email,.contact-details p{font-size:var(--text-body);line-height:1.7}
.contact-details>div>span{font-size:var(--text-meta);line-height:1.6;letter-spacing:.08em}
.sample-contact{font-size:var(--text-small);line-height:1.65;max-width:55ch}
.site-footer{flex-wrap:wrap;gap:32px 4vw}
.site-footer>div>p,.site-footer>div>span,.site-footer nav,.site-footer nav button{font-size:var(--text-small);line-height:1.7;opacity:1;color:var(--cream)}
.site-footer nav{flex-wrap:wrap;gap:12px 24px}
.site-footer nav a,.site-footer nav button{min-height:36px;display:inline-flex;align-items:center}
.back-top,.order-caption{font-size:var(--text-meta);line-height:1.5}
.cake-loading{font-size:var(--text-small);opacity:1}
.dialog-close{width:44px;height:44px}
/* Fields, transactional information, account and admin content. */
.field,legend{font-size:var(--text-ui);line-height:1.6}
.field input,.field textarea,.field select,.admin-filters input,.admin-filters select{font-size:var(--text-control);font-weight:400;line-height:1.5;min-height:48px}
.field input::placeholder,.field textarea::placeholder{font-size:var(--text-control);color:#736057;opacity:1}
.field-help,.optional,.form-error,.consent,.order-review,.quote-note,.quote-note p{font-size:var(--text-small);line-height:1.65}
.field-help,.optional{color:var(--muted)}
.consent{gap:12px}
.consent input{flex:none;margin-top:5px}
.order-review{grid-template-columns:minmax(80px,6rem) minmax(0,1fr);gap:10px 18px}
.order-review dd{min-width:0;margin:0;overflow-wrap:anywhere}
.order-review dt{font-weight:400}
.order-success>p:not(.eyebrow){font-size:var(--text-body);line-height:1.65}
.order-success .field-help,.order-reference{font-size:var(--text-small)!important;line-height:1.65}
.account-dialog>div>p,.account-greeting{font-size:var(--text-body)!important;line-height:1.65}
.auth-tabs button,.auth-form .text-link{font-size:var(--text-control);line-height:1.5;min-height:44px}
.auth-message,.my-order-top,.my-order p,.lightbox-dialog small{font-size:var(--text-small);line-height:1.65}
.my-order-top{flex-wrap:wrap;gap:10px}
.lightbox-dialog p:not(.eyebrow),.privacy-dialog>p{font-size:var(--text-body);line-height:1.65}
.privacy-dialog .quote-note p{font-size:var(--text-small);line-height:1.65}
.toast{font-size:var(--text-small);line-height:1.6}
.admin-login p,.admin-settings p,.empty-state{font-size:var(--text-body);line-height:1.65}
.admin-tabs button{font-size:var(--text-control);min-height:44px}
.admin-stat span{font-size:var(--text-small);line-height:1.6}
.admin-table{font-size:var(--text-ui);line-height:1.6}
.admin-table th{font-size:var(--text-meta);line-height:1.6}
.admin-table td small,.admin-table .text-link{font-size:var(--text-small);line-height:1.6}
.status{font-size:var(--text-meta);line-height:1.5;padding:5px 9px}
.admin-detail .order-review,.admin-settings .field{font-size:var(--text-small);line-height:1.65}
.admin-detail .field textarea{font-size:var(--text-control)}
/* Photographic configurator. Every option remains readable at its real size. */
#order-dialog .config-form-panel{padding-bottom:0}
#order-dialog .config-form-panel>div>.eyebrow,#order-dialog .preview-description>.eyebrow,.preview-masthead>span{font-size:var(--text-meta);line-height:1.6;letter-spacing:.08em;color:var(--muted)}
.preview-masthead>span{max-width:160px}
#order-dialog .config-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,6.5rem),1fr));gap:12px}
#order-dialog .config-steps li{font-size:var(--text-ui);line-height:1.5;display:block;color:var(--muted)}
#order-dialog .config-steps li.active{color:var(--blue);text-decoration:underline;text-underline-offset:.4em;text-decoration-thickness:1px}
#order-dialog legend{font-size:var(--text-control);line-height:1.5;gap:8px;align-items:baseline}
#order-dialog .choice small{font-size:var(--text-small);line-height:1.5;color:var(--muted)}
#order-dialog .flavor-options{grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr))}
#order-dialog .photo-choice strong{font-size:var(--text-control);line-height:1.5;font-weight:400}
.photo-choice small{font-size:var(--text-small);line-height:1.6;color:var(--muted)}
#order-dialog .coating-options{grid-template-columns:repeat(3,minmax(0,1fr))}
#order-dialog .coating-choice strong{font-size:var(--text-ui);line-height:1.5;font-weight:400}
.coating-choice small{font-size:var(--text-small);line-height:1.5;color:var(--muted)}
#order-dialog .color-choice small{font-size:var(--text-small);line-height:1.5;max-width:100%;color:var(--burgundy)}
#order-dialog .color-choice{min-width:0}
#order-dialog .swatch{width:40px;height:40px;margin-bottom:10px}
#order-dialog .decoration-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#order-dialog .decoration-choice>span{flex-direction:row;gap:12px;min-height:80px;text-align:left;padding:12px 25px 12px 10px}
#order-dialog .decoration-choice strong{font-size:var(--text-ui);line-height:1.5;max-width:none;font-weight:400}
.decoration-choice img,#order-dialog .minimal-decoration{width:60px;height:48px;flex:none}
#order-dialog .inscription-field,#order-dialog .inscription-field input{font-size:var(--text-control);line-height:1.5}
#order-dialog .config-navigation{gap:12px;padding-top:18px;min-height:90px}
#order-dialog .config-navigation .button,#order-dialog .config-navigation .text-link{font-size:var(--text-control);line-height:1.5;min-height:48px}
#order-dialog .preview-description>p,.preview-decoration,.preview-disclaimer,.preview-interaction,.preview-loading{font-size:var(--text-small);line-height:1.6;color:var(--muted)}
#order-dialog .preview-description>p{max-width:44ch;margin-left:auto;margin-right:auto}
.preview-decoration{padding:5px 10px}
.preview-disclaimer{margin-top:16px}
.preview-interaction{align-items:center;flex-wrap:wrap;gap:10px;padding-bottom:14px}
.preview-interaction button{font-size:var(--text-small);line-height:1.6;min-height:40px}
.pointer-hint{font-size:var(--text-small)}
.pointer-hint:after{content:none}
#order-dialog #cake-inscription{font-size:var(--text-small);line-height:1.3}
/* Text is allowed to take space; photographs and controls reflow around it. */
@media(max-width:1100px){
 .pastry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .pastry-card[data-category=savory]{grid-column:auto}
 .gallery-heading{align-items:flex-start;flex-wrap:wrap}
 .flavor-switch-wrap{margin-top:0}
 .world-principles{justify-content:flex-start}
 #order-dialog .coating-options{grid-template-columns:1fr}
 #order-dialog .coating-choice>span{display:grid;grid-template-columns:64px minmax(0,1fr);grid-template-rows:auto auto;gap:3px 14px;padding:10px 28px 10px 10px;align-items:center}
 .coating-sample{grid-row:1/3;width:64px;height:54px;margin:0;border:0;border-radius:3px}
 #order-dialog .coating-choice strong{font-size:var(--text-control)}
}
@media(max-width:900px){
 .hero-intro{max-width:36ch}
 .scene-topline .eyebrow{max-width:70%}
 .scene-scroll-hint{max-width:180px}
 .gallery-theatre{min-height:140px}
 .gallery-theatre .flavor-status{max-width:70%}
 .site-footer{gap:26px}
}
@media(max-width:740px){
 .site-header{height:auto;min-height:88px;padding-top:12px;padding-bottom:12px;gap:12px}
 body{padding-top:88px}
 .mobile-nav{top:88px}
 .site-header .wordmark{width:112px}
 .header-actions{gap:10px;min-width:0}
 .header-order{font-size:var(--text-ui);padding:10px 12px;min-height:44px}
 .menu-button{width:28px;flex:none;min-height:44px}
 .hero-links .button{font-size:var(--text-control);min-height:48px;padding:12px 16px}
 .hero-links .text-link{font-size:var(--text-ui);line-height:1.5}
 .hero-links{gap:12px 20px}
 .hero-intro{font-size:var(--text-body);line-height:1.65;max-width:36ch}
 .hero .eyebrow{font-size:var(--text-meta)}
 .hero-intro br{display:none}
 .pastry-index{font-size:var(--text-meta);line-height:1.6;gap:18px}
 .pastry-index>span{min-width:0}
 .assembly-copy{top:166px;height:auto}
 .assembly-chapter>p{font-size:var(--text-body);line-height:1.65;max-width:36ch}
 .assembly-chapter .chapter-label{font-size:var(--text-meta);line-height:1.5;margin-bottom:14px}
 .scene-topline .eyebrow{font-size:var(--text-meta);letter-spacing:.04em;max-width:70%}
 .scene-bottom{align-items:flex-end;gap:18px}
 .scene-scroll-hint{font-size:var(--text-meta);line-height:1.6;max-width:44%}
 .assembly-callout,.daisy-speech{font-size:var(--text-meta)}
 .world-copy>p:not(.eyebrow){font-size:var(--text-body);line-height:1.65}
 .world-picture .image-label{font-size:var(--text-small)}
 .world-principles{font-size:var(--text-small);gap:12px 0}
 .world-principles>span{padding-right:12px}
 .world-principles>span+span{padding-left:12px}
 .gallery-heading .eyebrow,.celebration .eyebrow,.faq-section .eyebrow,.contact-section .eyebrow{font-size:var(--text-meta)}
 .gallery-heading h2{max-width:100%}
 .flavor-switch-wrap{margin-top:26px}
 .flavor-switch button{font-size:var(--text-control);min-width:125px;padding:12px}
 .flavor-switch button span{font-size:var(--text-meta)}
 .gallery-theatre .flavor-status{font-size:var(--text-small);line-height:1.6;max-width:70%}
 .pastry-grid{gap:34px 18px}
 .pastry-card p{font-size:var(--text-body);line-height:1.65}
 .gallery-footnote p{font-size:var(--text-small);line-height:1.65}
 .gallery-footnote .text-link{font-size:var(--text-control)}
 .celebration>div>p:not(.eyebrow){font-size:var(--text-body);color:var(--cream)}
 .celebration>div>p:not(.eyebrow) br{display:none}
 .celebration .button{font-size:var(--text-control);min-height:48px;padding:12px 18px}
 .celebration small{font-size:var(--text-small);line-height:1.6;opacity:1;max-width:100%}
 .faq-list summary{font-size:var(--text-control);line-height:1.6}
 .faq-list p{font-size:var(--text-body);line-height:1.65}
 .contact-grid>div>p,.contact-email,.contact-details p{font-size:var(--text-body);line-height:1.65}
 .contact-details>div>span{font-size:var(--text-meta)}
 .sample-contact{font-size:var(--text-small);line-height:1.65}
 .site-footer{grid-template-columns:1fr;gap:24px;padding-bottom:80px}
 .site-footer>div{padding-left:0}
 .site-footer>div>p,.site-footer>div>span,.site-footer nav,.site-footer nav button{font-size:var(--text-small)}
 .site-footer nav{grid-column:1;gap:12px 22px}
 .back-top,.order-caption{font-size:var(--text-meta)}
 .floating-order{max-width:calc(100vw - 24px);padding:8px 10px}
 .order-review{grid-template-columns:5rem minmax(0,1fr);gap:12px}
 .field input,.field textarea,.field select,.field input::placeholder,.field textarea::placeholder{font-size:var(--text-control)}
 .field-help,.consent,.quote-note,.quote-note p,.form-error,.order-review{font-size:var(--text-small);line-height:1.65}
 .account-actions{flex-wrap:wrap}
 .account-actions .button,.account-actions .text-link{font-size:var(--text-control)}
 .privacy-dialog>p,.privacy-dialog .quote-note p{font-size:var(--text-body)}
 .toast{font-size:var(--text-small);white-space:normal;max-width:calc(100vw - 32px)}
 #order-dialog .config-preview{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);grid-template-areas:'brand photo' 'description photo' 'interaction interaction';gap:12px 8px;min-height:0;max-height:none;height:auto;padding:20px;align-items:start}
 .preview-masthead{grid-area:brand;min-width:0}
 #order-dialog .config-cake-wrap{grid-area:photo;position:relative;inset:auto;width:calc(100% + 12px);height:100%;min-height:245px;max-height:none;margin:0 -12px 0 0;aspect-ratio:auto}
 #order-dialog .preview-description{grid-area:description;position:relative;inset:auto;width:auto;padding:0;min-width:0;text-align:left}
 #order-dialog .preview-description h3{font-size:1.75rem;line-height:1.1}
 #order-dialog .preview-description>p{font-size:var(--text-small);line-height:1.6;max-width:100%;margin:0}
 .preview-decoration{font-size:var(--text-meta);line-height:1.5;padding:4px 7px}
 .preview-interaction{grid-area:interaction;position:relative;inset:auto;font-size:var(--text-small);line-height:1.5;gap:8px;padding:0}
 #order-dialog .preview-interaction button{font-size:var(--text-small);line-height:1.5;padding:6px 0;min-height:40px}
 .pointer-hint{font-size:var(--text-small)}
 .pointer-hint:after{content:none}
 #order-dialog .config-preview .wordmark{width:108px;max-width:100%}
 #order-dialog .config-form-panel{padding-top:26px}
 #order-dialog .config-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
 #order-dialog .config-steps li{font-size:var(--text-ui);line-height:1.5}
 #order-dialog legend{font-size:var(--text-control);line-height:1.5}
 #order-dialog .flavor-options{grid-template-columns:1fr}
 #order-dialog .photo-choice>span{display:grid;grid-template-columns:92px minmax(0,1fr);gap:14px;padding:12px 26px 12px 10px;align-items:center}
 .photo-choice img{width:92px;height:100px;object-fit:cover;border-radius:3px;margin:0}
 #order-dialog .photo-choice strong{font-size:var(--text-control);line-height:1.5}
 .photo-choice small{font-size:var(--text-small);line-height:1.6}
 #order-dialog .coating-choice strong{font-size:var(--text-control)}
 .coating-choice small{font-size:var(--text-small)}
 #order-dialog .color-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
 #order-dialog .color-choice small{font-size:var(--text-small);max-width:100%;line-height:1.5}
 #order-dialog .decoration-choice>span{flex-direction:column;align-items:center;text-align:center;padding:12px 22px 12px 12px;gap:6px}
 #order-dialog .decoration-choice strong{font-size:var(--text-ui);line-height:1.5}
 #order-dialog .inscription-field,#order-dialog .inscription-field input{font-size:var(--text-control)}
 #order-dialog .config-navigation .button,#order-dialog .config-navigation .text-link{font-size:var(--text-control);line-height:1.5;padding:12px 14px}
 #order-dialog #cake-inscription{font-size:var(--text-small)}
 .admin-top .eyebrow{font-size:var(--text-meta)}
 .admin-top>.text-link,.admin-tabs button,.admin-login p{font-size:var(--text-control)}
 .admin-stat span,.admin-settings p,.admin-detail .order-review{font-size:var(--text-small)}
 .admin-table{font-size:var(--text-ui)}
}
@media(max-width:380px){
 .site-header{padding-left:16px;padding-right:16px;gap:8px}
 .site-header .wordmark{width:92px}
 .header-actions{gap:8px}
 .header-order{font-size:var(--text-ui);padding:10px 9px}
 .menu-button{width:25px}
 .pastry-grid{grid-template-columns:1fr}
 .pastry-image{aspect-ratio:1}
 #order-dialog .config-preview{padding:18px 16px;gap:10px 6px}
 #order-dialog .config-preview .wordmark{width:96px}
 #order-dialog .preview-description h3{font-size:1.5rem;line-height:1.1}
 #order-dialog .preview-description>p{font-size:var(--text-small)}
 #order-dialog .config-cake-wrap{min-height:240px}
 #order-dialog .config-form-panel{padding-left:16px;padding-right:16px}
 #order-dialog .coating-choice strong,.coating-choice small,#order-dialog .decoration-choice strong{font-size:var(--text-ui)}
}
@media(max-height:700px) and (max-width:740px){#order-dialog .config-preview{position:relative}}
/* Large user text must not turn a sticky preview into a viewport-sized barrier. */
#order-dialog .config-preview.preview-flow{position:relative}
/* Headers and preview panels follow content growth instead of clipping it. */
.site-header{height:auto;min-height:103px;flex-wrap:wrap;padding-top:16px;padding-bottom:16px}
.desktop-nav{flex-wrap:wrap}
.header-actions{flex-wrap:wrap;justify-content:flex-end;min-width:0}
.header-order{max-width:100%}
body{padding-top:var(--site-header-height,103px)}
.mobile-nav{top:var(--site-header-height,103px)}
h1,h2,h3{overflow-wrap:anywhere;max-width:100%}
#order-dialog .config-preview{overflow-y:auto;overflow-x:hidden}
@media(max-width:740px){
 .site-header{min-height:88px;padding-top:12px;padding-bottom:12px}
 .header-actions{flex:1}
 body{padding-top:var(--site-header-height,88px)}
 .mobile-nav{top:var(--site-header-height,88px)}
 #order-dialog .config-preview{overflow:visible}
}
@media(max-width:740px){
 .pastry-index{flex-wrap:wrap;justify-content:flex-start;gap:10px 22px}
 .pastry-index>span,.pastry-index>span:nth-child(2),.pastry-index>span:last-child{flex:0 1 auto;text-align:left;max-width:100%;overflow-wrap:anywhere}
}
/* A readable document flow replaces pinning when enlarged text, user spacing
 * or a short viewport cannot accommodate the full-screen assembly scene. */
.assembly-readable .assembly-scene{height:auto!important;min-height:0;overflow:visible;padding:calc(var(--site-header-height,103px) + 24px) var(--gutter) 60px;color:var(--burgundy)!important;background:var(--cream)}
.assembly-readable .scene-panels,.assembly-readable .scene-word,.assembly-readable .scene-ingredients,.assembly-readable .scene-bottom{display:none}
.assembly-readable .scene-topline{position:relative;inset:auto;margin-bottom:32px;display:block}
.assembly-readable .scene-topline .eyebrow{max-width:none}
.assembly-readable .assembly-copy{position:relative;inset:auto;width:100%;height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}
.assembly-readable .assembly-chapter{position:relative!important;inset:auto;height:auto;opacity:1!important;visibility:visible!important;transform:none!important;max-width:none}
.assembly-readable .assembly-chapter>p{max-width:100%;line-height:var(--copy-leading)}
.assembly-readable .assembly-product{position:relative;inset:auto;width:min(100%,600px);height:420px;margin:40px auto 0;transform:none!important}
.assembly-readable .assembly-daisy{position:relative;inset:auto;width:160px;height:220px;margin:20px auto 0;transform:none!important}
.assembly-readable .daisy-speech{bottom:0}
@media(max-width:740px){.assembly-readable .assembly-copy{grid-template-columns:1fr;gap:38px}.assembly-readable .assembly-product{height:330px}}
#config-cake .cake-photo-space{overflow:clip}
.header-order{font-size:var(--text-control);padding-left:8px;padding-right:8px}
@media(max-width:740px){
 .assembly-callout{top:auto;bottom:2.5rem;right:10%;max-width:60%;text-align:right}
}.scene-scroll-hint,.assembly-chapter .chapter-label,.assembly-chapter>p{opacity:1}
.world-picture .image-label,.flavor-status,.assembly-callout{font-weight:400}
.not-found-page{padding-top:0}
.not-found p{font-size:var(--text-body);line-height:1.65;max-width:55ch;margin-left:auto;margin-right:auto}
