/* Principal Web Estate shared structural contract.
   This file owns cross-site rendering safety and typography geometry.
   It intentionally contains no brand palette so themes can change without moving layouts. */
:root{
  --estate-body-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --estate-heading-font:Georgia,"Times New Roman",serif;
  --estate-max:1320px;
}
*,*::before,*::after{box-sizing:border-box}
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  overflow-x:hidden;
  scroll-behavior:smooth;
}
body{
  min-width:0;
  max-width:100%;
  overflow-x:hidden;
  font-family:var(--estate-body-font)!important;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
main,header,footer,section,article,aside,nav,form{min-width:0}
img,svg,video,canvas,iframe{display:block;max-width:100%;height:auto}
input,textarea,select,button{font:inherit;max-width:100%;min-width:0}
textarea{resize:vertical}
pre,code{max-width:100%}
pre{overflow:auto;-webkit-overflow-scrolling:touch}
table{max-width:100%}
p,li,dd,dt,td,th,label,strong,small,span,a,button,h1,h2,h3,h4,h5,h6{
  overflow-wrap:break-word;
  word-break:normal;
}
:is(.grid,.tool-grid,.project-grid,.workspace-grid,.choice-grid,.cross-grid,.footer-grid,.split,.two-col,.actions,.nav-wrap,.navin,.navlinks)>*{min-width:0}
:is(.card,.content-card,.tool-card,.mini-card,.project-card,.qsection,.scheduler-info,.scheduler-main,.workspace-sidebar,.workspace-detail,.workspace-privacy,.modal-panel,.legal-document,.support-box,.hero-panel,.band){min-width:0;max-width:100%}

/* One typography geometry across the estate. Site CSS controls layout, not type identity. */
:is(h1,h2,h3,h4,h5,h6,.hero h1,.section h2,.card h3,.tool-card h3,.project-copy h3,.article-head h1,.article-body h2,.legal-hero h1,.legal-document h2){
  font-family:var(--estate-heading-font)!important;
  font-weight:400!important;
  font-style:normal;
}
:is(.hero h1,.hero h1.medium,.hero .display,.site-hero h1){
  font-size:clamp(2.9rem,5.4vw,4.9rem)!important;
  line-height:.98!important;
  letter-spacing:-.018em!important;
}
:is(.section h2,.section h2.small,.section-heading h2,.tools-head h2,.split h2,.cross-grid h2,.content-section h2){
  font-size:clamp(2rem,3.7vw,3.25rem)!important;
  line-height:1.04!important;
  letter-spacing:-.014em!important;
}
:is(.card h3,.tool-card h3,.project-copy h3,.workspace-detail h3,.qsection h3){
  font-size:1.45rem!important;
  line-height:1.12!important;
  letter-spacing:-.01em!important;
}
:is(.eyebrow,.tool-kicker,.tag,.status,.number,.panel-label,.card-label,.workspace-kicker){
  font-family:var(--estate-body-font)!important;
  font-size:.72rem!important;
  font-weight:800!important;
  line-height:1.25!important;
  letter-spacing:.15em!important;
  text-transform:uppercase!important;
}
:is(.button,button,.btn,.slot,.quick-tutorial){font-family:var(--estate-body-font)!important}
:is(section,.section,.content-section){scroll-margin-top:76px}
:is(.button,button,.btn,.slot){min-height:44px}

@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  :is(.site-header,.nav){-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
}
@media(max-width:760px){
  :is(.button,button,input,select,textarea){min-height:44px}
  input,textarea,select{font-size:16px}
}
@media(max-width:560px){
  :is(.hero h1,.hero h1.medium,.hero .display,.site-hero h1){
    font-size:clamp(2.35rem,12vw,3.4rem)!important;
    line-height:1!important;
  }
  :is(.section h2,.section h2.small,.section-heading h2,.tools-head h2,.split h2,.cross-grid h2,.content-section h2){
    font-size:clamp(2rem,10vw,2.65rem)!important;
  }
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
}


/* Mobile navigation sizing contract · 2026-09-22r2
   Nav items must never shrink below their label width. The row scrolls instead. */
@media(max-width:900px){
  :is(.navlinks,.site-nav,.site-header nav,.nav-wrap nav){
    min-width:0;
    max-width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  :is(.navlinks,.site-nav,.site-header nav,.nav-wrap nav)::-webkit-scrollbar{display:none}
  :is(.navlinks,.site-nav,.site-header nav,.nav-wrap nav)>a{
    flex:0 0 auto!important;
    flex-shrink:0!important;
    width:auto!important;
    min-width:auto!important;
    max-width:none!important;
    white-space:nowrap!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }
}


/* Estate appearance preferences */
.estate-appearance-button{
  position:fixed;right:18px;bottom:18px;z-index:90;min-height:40px;padding:8px 12px;border:1px solid;border-radius:999px;font-size:.78rem;font-weight:800;letter-spacing:.02em;cursor:pointer;
}
.estate-appearance-dialog{
  width:min(520px,calc(100vw - 28px));border:0;padding:0;background:transparent;
}
.estate-appearance-dialog::backdrop{backdrop-filter:blur(8px)}
.estate-appearance-card{border:1px solid;border-radius:18px;padding:20px}
.estate-appearance-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.estate-appearance-head>div>span{display:block;font-size:.68rem;font-weight:850;letter-spacing:.16em}
.estate-appearance-head h2{margin:5px 0 0;font-size:1.5rem!important}
.estate-appearance-card>p{margin:12px 0 18px}
.estate-appearance-card fieldset{border:1px solid;border-radius:14px;padding:12px 14px;margin:12px 0}
.estate-appearance-card legend{font-size:.78rem;font-weight:800;padding:0 5px}
.estate-appearance-card fieldset label{display:flex;align-items:center;gap:9px;padding:7px 0}
.estate-appearance-card input[type="radio"]{width:18px;height:18px}
.estate-appearance-close{border:1px solid;border-radius:9px;padding:7px 10px;cursor:pointer}
.estate-appearance-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:16px}
.estate-appearance-foot>span{font-size:.76rem}
.estate-appearance-foot button{border:1px solid;border-radius:10px;padding:9px 12px;font-weight:800;cursor:pointer}
@media(max-width:560px){
  .estate-appearance-button{right:12px;bottom:12px}
  .estate-appearance-head,.estate-appearance-foot{align-items:stretch;flex-direction:column}
}
