/* Fluid public layout — intentionally loaded after the legacy, homepage, and
   catalog styles. Admin/editor canvases retain their own workspace geometry. */
body.public-site {
  --public-gutter: clamp(12px, 2.25vw, 42px);
  min-width: 0;
}

/* A block-level auto width fills the remaining viewport between the gutters.
   This also overrides the legacy 1190/970/750px homepage/library containers. */
body.public-site > :is(.masthead.container, .main-nav.container, #page.container, .site-footer.container) {
  width: auto;
  max-width: none;
  min-width: 0;
  margin-inline: var(--public-gutter);
}

body.public-site > .global-nav {
  padding-inline: var(--public-gutter);
}

body.public-site #page,
body.public-site #page > :is(section, article, div),
body.public-site :is(.tool-main, .catalog-main, .catalog-layout, .catalog-aside, .home-panel, .home-panel-body, .member-profile, .portal-page) {
  min-width: 0;
}

body.public-site #page :is(img, video, iframe) {
  max-width: 100%;
}

body.public-site #page :is(.content-page, .catalog-page, .tool-main, .portal-page) {
  overflow-wrap: anywhere;
}

/* User-facing dashboards and directory pages use available width; prose and
   sign-in dialogs can retain their deliberately readable measure. */
body.public-site #page > .portal-page {
  width: 100%;
  max-width: none;
}

/* Balance the logo, growing search bar and account shortcuts on wide screens. */
@media (min-width: 992px) {
  body.public-site > .masthead.container {
    display: grid;
    grid-template-columns: minmax(130px, 1fr) minmax(300px, min(48vw, 720px)) minmax(175px, 1fr);
    align-items: center;
    gap: clamp(14px, 1.6vw, 36px);
  }

  body.public-site > .masthead.container .search-form {
    position: relative;
    left: auto;
    top: auto;
    flex: initial;
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0;
    transform: none;
  }

  body.public-site > .masthead.container .quick-links {
    justify-self: end;
    min-width: 0;
    margin-right: 0;
  }

  /* Stay sticky, but scroll the navigation within itself instead of making
     the document wider when administrators add additional menu items. */
  body.public-site > .main-nav.container {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    position: sticky;
    top: 0;
    z-index: 35;
  }
  body.public-site > .main-nav.container::-webkit-scrollbar { display: none; }
  body.public-site > .main-nav.container > a { flex: 0 0 auto; }

  /* Card density responds to the actual screen size, not a fixed 1190px page. */
  body.public-site .tool-grid {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
  }
  body.public-site .catalog-items-software {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 165px), 1fr));
  }
  body.public-site .catalog-website-grid {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 205px), 1fr));
  }
  body.public-site .catalog-items-shop {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
  }
  body.public-site .home-tool-grid {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 145px), 1fr));
  }
  body.public-site .home-software-grid {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 170px), 1fr));
  }
}

/* The top bar becomes a proper edge-to-edge sticky touch header on tablets.
   The existing fixed bottom navigation remains the mobile navigation. */
@media (max-width: 991px) {
  body.public-site > .global-nav {
    display: none;
  }
  body.public-site > .masthead.container {
    display: flex;
    position: sticky;
    top: 0;
    width: 100%;
    margin: 0;
    padding-inline: var(--public-gutter);
    z-index: 40;
  }

  body.public-site > .masthead.container .search-form {
    min-width: 0;
    max-width: none;
    flex: 1 1 auto;
  }
  body.public-site > .masthead.container .quick-links {
    flex: 0 0 auto;
    min-width: 0;
  }
  body.public-site > .main-nav.container { display: none; }
  body.public-site .mobile-nav {
    max-width: 100%;
  }

  /* In smaller directory columns, keep the content and the sidebar viable. */
  body.public-site .catalog-layout {
    min-width: 0;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  /* Two balanced homepage columns avoid the cramped original 8:4 split on
     tablet-sized viewports. Major grids still span the full usable width. */
  body.public-site .home-overview {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body.public-site .home-overview > .home-panel {
    grid-column: auto;
  }
  body.public-site .home-overview > :is(
    .home-panel-tools, .home-panel-manuscripts, .home-panel-shop,
    .home-panel-websites, .home-panel-software
  ) {
    grid-column: 1 / -1;
  }
  body.public-site .catalog-website-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Use screen real estate on phones, without making forms or content spill
   outside the viewport. Preserve existing one-column/mobile tool layouts. */
@media (max-width: 767px) {
  body.public-site { --public-gutter: 12px; }
  body.public-site > .masthead.container .search-input input {
    font-size: 16px;
  }
  body.public-site #page :is(.tool-workspace, .catalog-main, .content-page, .member-profile-card) {
    max-width: 100%;
  }
  body.public-site .site-footer {
    max-width: none;
  }
  body.public-site .catalog-filterbar {
    flex-wrap: wrap;
  }
  body.public-site .catalog-search {
    max-width: 100%;
  }
  body.public-site .catalog-search input {
    min-width: 0;
    flex: 1 1 auto;
  }
}

@media (max-width: 380px) {
  body.public-site > .masthead.container {
    gap: 8px;
  }
  body.public-site > .masthead.container .quick-links {
    gap: 2px;
  }
  body.public-site .home-overview {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media print {
  body.public-site > :is(.masthead.container, .main-nav.container, #page.container, .site-footer.container) {
    width: 100%;
    margin: 0;
  }
}


/* Full-width, content-rich homepage sections. All sections share the fluid
   page gutters while grids scale independently for desktop, tablet and phone. */
body.public-site .home-overview > :is(.home-panel-manuscripts,.home-panel-software,.home-panel-shop){
  grid-column:1 / -1;
  min-width:0;
}
body.public-site .home-overview > .home-panel-software .home-software-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(12px,1.4vw,22px);
}
body.public-site .home-overview > .home-panel-software .home-software{
  min-width:0;
  min-height:180px;
  padding:19px 18px;
  border-radius:12px;
  background:var(--surface);
  border:1px solid var(--site-border,#dedede);
}
body.public-site .home-overview > .home-panel-software .home-software-icon{
  width:58px;
  height:58px;
}
body.public-site .home-overview > .home-panel-software .home-software h3{
  white-space:normal;
  overflow-wrap:anywhere;
  font-size:15px;
  line-height:1.45;
}
body.public-site .home-overview > .home-panel-software .home-software p{
  max-width:55ch;
  line-height:1.55;
  font-size:12px;
}
body.public-site .home-overview > .home-panel-manuscripts .home-deck-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:clamp(11px,1.2vw,18px);
  min-width:0;
}
body.public-site .home-overview > .home-panel-manuscripts .home-deck{
  display:flex;
  flex-direction:column;
  min-width:0;
  width:100%;
  height:100%;
  border-radius:10px;
  background:var(--surface);
}
body.public-site .home-overview > .home-panel-manuscripts .home-deck-preview{
  width:100%;
  height:auto;
  aspect-ratio:8 / 5;
}
body.public-site .home-overview > .home-panel-manuscripts .home-deck h3{
  margin:0;
  padding:12px;
  line-height:1.45;
  min-height:0;
  flex:1;
  overflow-wrap:anywhere;
}
body.public-site .home-overview > .home-panel-shop .home-shop-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(12px,1.5vw,22px);
}
body.public-site .home-overview > .home-panel-shop .home-shop-item{
  min-width:0;
  height:100%;
  border-radius:12px;
  box-shadow:0 4px 16px rgb(25 60 40 / 5%);
}
body.public-site .home-overview > .home-panel-shop .home-shop-image{
  width:100%;
  height:auto;
  aspect-ratio:16 / 10;
  object-fit:cover;
}
body.public-site .home-overview > .home-panel-shop .home-shop-item > div{
  padding:13px 15px;
}
body.public-site .home-overview > .home-panel-shop .home-shop-item h3{
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:1.45;
}
@media (min-width:768px) and (max-width:1199px){
  body.public-site .home-overview > .home-panel-manuscripts .home-deck-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}
@media (max-width:767px){
  body.public-site .home-overview > .home-panel-software .home-software-grid,
  body.public-site .home-overview > .home-panel-manuscripts .home-deck-grid,
  body.public-site .home-overview > .home-panel-shop .home-shop-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
  }
  body.public-site .home-overview > .home-panel-software .home-software{
    min-height:165px;
    padding:12px 9px;
  }
  body.public-site .home-overview > .home-panel-software .home-software-icon{
    width:45px;
    height:45px;
    margin-bottom:8px;
  }
  body.public-site .home-overview > .home-panel-software .home-software h3{
    font-size:12px;
  }
  body.public-site .home-overview > .home-panel-software .home-software p{
    font-size:11px;
  }
  body.public-site .home-overview > .home-panel-manuscripts .home-deck h3{
    padding:8px;
    font-size:12px;
  }
  body.public-site .home-overview > .home-panel-shop .home-shop-item > div{
    padding:10px;
  }
}
@media (max-width:349px){
  body.public-site .home-overview > .home-panel-software .home-software-grid,
  body.public-site .home-overview > .home-panel-shop .home-shop-grid{
    grid-template-columns:minmax(0,1fr);
  }
}
