html, body{
    height: 100%;
}

body{
    display: flex;
    flex-direction: column;
}

#body-wrapper{
    flex: 1;
    display: flex;
    flex-direction: column;
}

#body-wrapper > .container{
    flex: 1;
}
.footer-left{
  text-align:left;
}

.footer-center{
  text-align:center;
}

.footer-right{
  text-align:right;
}

#footer{
  font-size:14px;
}

#footer a{
  color:#3b6db3;
}

#footer .row{
  align-items:center;
}
#header{
  background-color:#5f5f5f;
}
.musician-item{
  display:flex;
  gap:24px;
  margin-bottom:30px;
}

.musician-photo{
  width:180px;
  flex:0 0 180px;
}

.musician-photo img{
  display:block;
  width:100%;
  height:auto;
}

.musician-content{
  flex:1;
}
.musician-single-photo{
  margin: 0 0 24px;
}

.musician-single-photo img{
  display:block;
  max-width:300px;
  height:auto;
}
.publication-top{
  display:flex;
  gap:36px;
  align-items:flex-start;
  margin-bottom:40px;
}

.publication-cover{
  width:405px;
  flex:0 0 405px;
}

.publication-cover img{
  display:block;
  width:100%;
  height:auto;
}

.publication-main{
  flex:1;
}

.publication-title{
  margin:0 0 24px;
  font-size:56px;
  line-height:1.15;
  font-weight:700;
}

.publication-meta{
  border-top:1px solid #cfcfcf;
  padding-top:24px;
  font-size:18px;
  line-height:1.9;
}

.publication-meta strong{
  display:inline-block;
  min-width:96px;
}

.publication-meta a{
  color:#4a89c7;
  text-decoration:none;
}

.publication-meta a:hover{
  text-decoration:underline;
}

.publication-body{
  border-top:1px solid #cfcfcf;
  padding-top:36px;
  font-size:18px;
  line-height:1.9;
}

.publication-body h2,
.publication-body h3,
.publication-body h4{
  margin-top:0;
  margin-bottom:12px;
  font-weight:700;
}

@media (max-width: 900px){
  .publication-top{
    flex-direction:column;
  }

  .publication-cover{
    width:100%;
    max-width:405px;
    flex:none;
  }

  .publication-title{
    font-size:38px;
  }
}
.musician-top{
  display:flex;
  gap:36px;
  align-items:flex-start;
}

.musician-photo{
  width:260px;
  flex:0 0 260px;
}

.musician-photo img{
  display:block;
  width:100%;
  height:auto;
  border:1px solid #d9d9d9;
}

.musician-main{
  flex:1;
}

.musician-name-zh{
  margin:0 0 8px;
  font-size:44px;
  line-height:1.15;
  font-weight:700;
}

.musician-name-en{
  font-size:28px;
  line-height:1.3;
  color:#4a89c7;
  font-weight:700;
  margin-bottom:14px;
}

.musician-tags{
  margin-bottom:20px;
}

.musician-tags span{
  display:inline-block;
  background:#a8a8a8;
  color:#fff;
  border-radius:999px;
  padding:4px 10px;
  font-size:13px;
  margin:0 6px 6px 0;
  line-height:1.2;
}

.musician-body{
  font-size:18px;
  line-height:1.9;
}

.musician-body p{
  margin-bottom:18px;
}

.musician-publications{
  margin-top:42px;
}

.musician-publications-title{
  background:#2f2f2f;
  color:#fff;
  font-weight:700;
  letter-spacing:1px;
  padding:6px 12px;
  margin-bottom:14px;
  font-size:16px;
}

.musician-publication-item{
  display:flex;
  gap:18px;
  align-items:flex-start;
  margin-bottom:18px;
}

.musician-publication-cover{
  width:110px;
  flex:0 0 110px;
}

.musician-publication-cover img{
  display:block;
  width:100%;
  height:auto;
}

.musician-publication-info a{
  color:#4a89c7;
  font-size:18px;
  font-weight:700;
  text-decoration:none;
}

.musician-publication-info a:hover{
  text-decoration:underline;
}

@media (max-width: 900px){
  .musician-top{
    flex-direction:column;
  }

  .musician-photo{
    width:100%;
    max-width:260px;
    flex:none;
  }

  .musician-name-zh{
    font-size:34px;
  }

  .musician-name-en{
    font-size:22px;
  }
}
.home-musicians-slider{
  position: relative;
  margin: 40px 0 60px;
}

.home-musicians-title{
  text-align: center;
  font-size: 42px;
  margin-bottom: 30px;
}

.musicians-slider-wrap{
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
}

.musicians-slider-viewport{
  overflow: hidden;
  width: 100%;
}

.musicians-slider-track{
  display: flex;
  gap: 22px;
  transition: transform 0.35s ease;
  will-change: transform;
}

.musician-card{
  flex: 0 0 calc((100% - 88px) / 5);
  background: rgba(255,255,255,0.5);
  border: 1px solid #d5d5d5;
  text-align: center;
  padding: 10px 10px 14px;
}

.musician-card-image{
  display: block;
  margin-bottom: 10px;
}

.musician-card-image img{
  display: block;
  width: 100%;
  height: auto;
}

.musician-card-name,
.musician-card-name-en{
  line-height: 1.4;
}

.musician-card-name a,
.musician-card-name-en a{
  color: #4a89c7;
  text-decoration: none;
}

.musician-card-name a:hover,
.musician-card-name-en a:hover{
  text-decoration: underline;
}

.slider-arrow{
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 999px;
  background: rgba(120,120,120,0.9);
  color: #fff;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  flex: 0 0 42px;
}

.slider-arrow:hover{
  opacity: 0.9;
}

.slider-arrow.is-disabled{
  opacity: 0.35;
  cursor: default;
}

@media (max-width: 1100px){
  .musician-card{
    flex: 0 0 calc((100% - 66px) / 4);
  }
}

@media (max-width: 768px){
  .musician-card{
    flex: 0 0 calc((100% - 22px) / 2);
  }

  .home-musicians-title{
    font-size: 32px;
  }
}

@media (max-width: 520px){
  .musician-card{
    flex: 0 0 100%;
  }
}
#body-wrapper::after{
    content: "";
    position: absolute;
    top: 120px;
    right: 0;
    width: 650px;
    height: 800px;
    background: url('/user/themes/quark/images/logo-l.jpg') no-repeat right top;
    background-size: contain;
    opacity: 0.95;
    pointer-events: none;
    z-index: 0;
}

#body-wrapper .container,
#body-wrapper .section,
#body-wrapper .modular-row{
    position: relative;
    z-index: 1;
}
#header .navbar-brand img{
    height: 72px;
    max-height: none;
}

#header .navbar-section a{
    color: #fff;
    position: relative;
    padding: 24px 18px;
    text-decoration: none;
}

#header .navbar-section a:hover{
    color: #fff;
}

#header .navbar-section a::after{
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 3px;
    background: #fff;
    transition: width 0.25s ease;
}

#header .navbar-section a:hover::after{
    width: 100%;
}

#header .navbar-section a.active,
#header .navbar-section a.current,
#header .navbar-section a.active-trail{
    background: #fff;
    color: #4aa7a6 !important;
}

#header .navbar-section a.active:hover,
#header .navbar-section a.current:hover,
#header .navbar-section a.active-trail:hover{
    color: #4aa7a6 !important;
}

#header .navbar-section a.active::after,
#header .navbar-section a.current::after,
#header .navbar-section a.active-trail::after{
    display: none;
}
.custom-breadcrumbs{
    border-top: 1px solid #d9d9d9;
    border-bottom: 1px solid #d9d9d9;
    background: #f7f7f7;
    padding: 8px 0;
    margin: 0 0 16px;
}

.custom-breadcrumbs ul{
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    font-size: 14px;
    line-height: 1.4;
}

.custom-breadcrumbs .container{
    padding-top: 0;
    padding-bottom: 0;
}

.custom-breadcrumbs li{
    display: flex;
    align-items: center;
    color: #7a7a7a;
    margin: 0;
    padding: 0;
}

.custom-breadcrumbs a{
    color: #3f84c5;
    text-decoration: none;
    line-height: 1.4;
}

.custom-breadcrumbs a:hover{
    text-decoration: underline;
}

.custom-breadcrumbs .breadcrumb-sep{
    color: #9a9a9a;
    margin: 0 4px;
}

.custom-breadcrumbs .current{
    color: #666;
}

#body-wrapper > .container{
    padding-top: 0;
    padding-bottom: 0;
}
#body-wrapper .container{
    padding: 0 2rem;
}

/* Legacy layout alignment */
#body-wrapper::after{
  display:none;
}

#header{
  background:#555;
}

#header .navbar{
  min-height:86px;
}

#header .navbar-section a{
  padding:0 15px;
  line-height:83px;
  height:83px;
}

#header .navbar-section a.active,
#header .navbar-section a.current,
#header .navbar-section a.active-trail{
  color:#a0ce4e !important;
  background:transparent;
}

#header .navbar-section a.active::after,
#header .navbar-section a.current::after,
#header .navbar-section a.active-trail::after{
  display:block;
  width:100%;
  background:#a0ce4e;
}

#body-wrapper{
  padding-top:10px;
}

#body-wrapper .container{
  max-width:1320px;
}

#body-wrapper h1{
  font-size:2.3rem;
}

#body-wrapper p{
  line-height:1.8;
}

/* Home */
.home-musicians-title{
  font-size:24px;
  color:#4d4d4d;
  line-height:1.5;
  margin:40px auto 20px;
}

.home-musicians-slider{
  margin:24px 0 50px;
}

.musicians-slider-wrap{
  gap:8px;
}

.musician-card{
  border:1px solid #ccc;
  background:#fff;
  height:280px;
  padding:10px;
}

.musician-card-name,
.musician-card-name-en{
  font-size:14px;
  margin:0;
}

.musician-card-name-en{
  margin-top:2px;
}

.slider-arrow{
  width:34px;
  height:34px;
  font-size:24px;
  background:rgba(120,120,120,.85);
}

/* Musicians list */
.musicians-list .musician-item{
  font-size:.95rem;
  margin-bottom:0;
  padding:1rem 0 2rem;
  border-bottom:1px solid #e8e8e8;
}

.musicians-list .musician-item:nth-child(odd){
  background:rgba(230,230,230,.3);
}

.musicians-list .musician-photo{
  width:150px;
  flex:0 0 150px;
}

.musicians-list .musician-photo a{
  display:block;
  padding:5px;
  border:1px solid #ccc;
}

.musicians-list .musician-content h2{
  margin:0 0 4px;
  font-size:1.3rem;
}

.musicians-list .musician-content h3{
  margin:0 0 8px;
  font-size:1.1rem;
  font-weight:400;
}

.musician-meta-line{
  margin-bottom:6px;
  font-size:.95rem;
}

.musician-badges{
  margin:2px 0 10px;
}

.musician-badge{
  display:inline-block;
  background:#9b9b9b;
  color:#fff;
  border-radius:999px;
  padding:2px 11px;
  font-size:.78rem;
  line-height:1.3;
  margin:0 6px 6px 0;
  vertical-align:middle;
}

.musicians-list .musician-summary{
  margin-top:2px;
}

/* Musician detail */
.musician-name-zh{
  margin:0;
  font-size:2.3rem;
}

.musician-name-en{
  font-size:1.6rem;
  margin-bottom:12px;
  color:#333;
}

.musician-meta,
.publication-meta{
  border-top:1px solid #ccc;
  border-bottom:1px solid #ccc;
  padding:14px 0;
  margin:0 0 20px;
}

.musician-meta-title,
.publication-meta-title{
  font-weight:700;
  margin:0 0 10px;
}

.musician-meta-row,
.publication-meta-row{
  margin-bottom:6px;
}

.musician-meta-row strong,
.publication-meta-row strong{
  display:inline-block;
  min-width:78px;
}

.musician-body{
  font-size:1rem;
}

.musician-publications-title{
  background:#333;
}

/* Publication detail */
.publication-top{
  gap:26px;
}

.publication-cover{
  width:300px;
  flex:0 0 300px;
}

.publication-title{
  font-size:2.3rem;
  margin:0 0 14px;
}

.publication-meta{
  font-size:1rem;
  line-height:1.8;
}

.publication-body{
  border-top:none;
  padding-top:0;
  font-size:1rem;
  line-height:1.8;
}

/* Publication catalog */
.legacy-publication-catalog{
  margin-top:20px;
}

.legacy-publication-catalog .block-title{
  text-align:center;
  font-size:24px;
  color:#4d4d4d;
  line-height:1.5;
  margin:40px auto 20px;
}

.legacy-publication-columns{
  display:flex;
  gap:26px;
}

.legacy-publication-left,
.legacy-publication-right{
  flex:1;
  min-width:0;
}

.block-chorphilia-publication-block .publication_title{
  font-size:1.2rem;
  font-weight:700;
  margin:0 0 1rem;
}

.block-chorphilia-publication-block .publication_title > img{
  width:55px;
  margin-right:24px;
}

.block-chorphilia-publication-block ul{
  margin:0 0 2rem;
  padding:0;
}

.block-chorphilia-publication-block ul li{
  list-style:none;
  margin-bottom:.25rem;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  overflow-wrap:anywhere;
}

.legacy-publication-left > p{
  margin-bottom:.45rem;
}

.legacy-pubmedia-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px 14px;
}

.legacy-pubmedia-item{
  font-size:.9rem;
}

.legacy-pubmedia-item img{
  width:120px;
  height:120px;
  object-fit:cover;
}

.legacy-pubmedia-item p{
  margin-top:6px;
  line-height:1.2rem;
}

.publication-index-intro{
  margin-bottom:18px;
}

.publication-index-intro blockquote{
  border-left:5px solid #eee;
  padding:10px 20px;
}

@media (max-width: 900px){
  .legacy-publication-columns{
    flex-direction:column;
  }

  .legacy-pubmedia-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .publication-cover{
    width:100%;
    max-width:360px;
    flex:none;
  }
}

/* Legacy parity: publication columns and detail extras */
.legacy-publication-columns{
  display:grid;
  grid-template-columns:minmax(0, 1.2fr) minmax(0, 1fr);
  gap:26px;
  align-items:start;
}

.legacy-publication-left{
  min-width:0;
}

.legacy-publication-right{
  min-width:0;
}

.legacy-publication-right .publication_title{
  display:flex;
  align-items:center;
}

.legacy-publication-right .legacy-pubmedia-item{
  width:100%;
}

.legacy-publication-right .legacy-pubmedia-item p{
  margin-bottom:14px;
}

.publication-extras{
  margin-top:24px;
  padding-top:20px;
  border-top:1px solid #ccc;
}

.publication-side-extras{
  margin-top:16px;
  padding-top:0;
  border-top:none;
}

.publication-extra-block{
  margin-bottom:24px;
}

.publication-extra-block h3{
  margin:0 0 12px;
  font-size:1.15rem;
}

.publication-audio-list{
  list-style:none;
  margin:0;
  padding:0;
}

.publication-audio-list li{
  margin-bottom:14px;
}

.publication-audio-label{
  font-weight:600;
  margin-bottom:6px;
}

.publication-audio-list audio{
  width:100%;
  max-width:520px;
}

.publication-preview-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
}

.publication-side-extras .publication-preview-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.publication-preview-item img{
  width:100%;
  height:auto;
  display:block;
}

.publication-preview-caption{
  margin-top:4px;
  font-size:.9rem;
  line-height:1.35;
}

.musician-score-list,
.musician-performance-list{
  margin:0;
  padding-left:1.2rem;
}

.musician-score-list li,
.musician-performance-list li{
  margin-bottom:12px;
}

.musician-score-type{
  color:#666;
  font-size:.9rem;
}

.musician-performance-meta{
  margin-top:4px;
  color:#555;
  font-size:.95rem;
}

.musician-related-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px 20px;
}

.musician-related-item{
  display:flex;
  gap:14px;
  align-items:flex-start;
}

.musician-related-cover{
  width:110px;
  flex:0 0 110px;
}

.musician-related-cover img{
  width:100%;
  height:auto;
  display:block;
}

.musician-related-info a{
  color:#3f84c5;
  font-weight:700;
  text-decoration:none;
}

.musician-related-info a:hover{
  text-decoration:underline;
}

.performance-top{
  display:flex;
  gap:24px;
  align-items:flex-start;
  margin-bottom:20px;
}

.performance-cover{
  flex:0 0 360px;
  width:360px;
}

.performance-cover img{
  width:100%;
  height:auto;
  display:block;
}

.performance-title{
  margin:0 0 12px;
  font-size:2rem;
}

.performance-meta{
  border-top:1px solid #ccc;
  border-bottom:1px solid #ccc;
  padding:10px 0;
  margin-bottom:12px;
}

.performance-meta-title{
  font-weight:700;
  margin-bottom:6px;
}

.performance-meta-info{
  line-height:1.7;
}

.performance-intro-content{
  line-height:1.85;
}

.performance-intro-content p:last-child{
  margin-bottom:0;
}

.performance-meta-info a{
  color:#3f84c5;
}

.performances-list{
  margin-top:20px;
}

.performance-list-item{
  padding:12px 0;
  border-bottom:1px solid #e5e5e5;
}

.performance-list-item h2{
  margin:0 0 6px;
  font-size:1.3rem;
}

.performance-list-meta{
  line-height:1.7;
}

@media (max-width: 900px){
  .legacy-publication-columns{
    display:block;
  }

  .legacy-publication-left,
  .legacy-publication-right{
    flex:1 1 auto;
  }

  .publication-preview-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .musician-related-grid{
    grid-template-columns:1fr;
  }

  .performance-top{
    flex-direction:column;
  }

  .performance-cover{
    width:100%;
    max-width:360px;
    flex:none;
  }
}

@media (max-width: 560px){
  .publication-preview-grid{
    grid-template-columns:1fr;
  }
}

/* Top menu order/state like legacy */
#header .dropmenu ul{
  display:flex;
  gap:0;
}

#header .dropmenu ul li{
  list-style:none;
}

#header .dropmenu ul li a{
  display:block;
  padding:0 15px;
  line-height:83px;
  color:#fff;
  background:transparent !important;
}

#header .dropmenu ul li a.active,
#header .dropmenu ul li a.current,
#header .dropmenu ul li a.active-trail{
  background:transparent !important;
  color:#a0ce4e !important;
}

/* Keep logo visible while header is shrinking */
body.header-fixed.header-animated #header.scrolled{
  height:3.3rem;
}

body.header-fixed.header-animated #header.scrolled .navbar{
  min-height:3.3rem;
  align-items:center;
}

body.header-fixed.header-animated #header.scrolled .navbar-section{
  height:3.3rem;
  display:flex;
  align-items:center;
}

body.header-fixed.header-animated #header.scrolled .navbar-brand img{
  height:40px !important;
}

body.header-fixed.header-animated #header .navbar-brand{
  display:flex;
  align-items:center;
  height:100%;
  padding:0;
}

body.header-fixed.header-animated #header.scrolled .navbar-brand{
  height:3.3rem;
}

body.header-fixed.header-animated #header.scrolled .dropmenu ul li a{
  line-height:3.2rem;
  height:3.2rem;
}

/* Remove breadcrumbs globally */
#breadcrumbs,
.custom-breadcrumbs{
  display:none !important;
}

/* Home about section: closer to legacy */
#front-about{
  max-width:860px;
  margin:24px auto 38px;
  text-align:center;
}

#front-about .title{
  margin-bottom:8px;
}

#front-about .title h2{
  margin:0;
  font-size:clamp(1.55rem, 1.35rem + .7vw, 2.15rem);
  line-height:1.15;
  font-weight:700;
  color:#3d4352;
}

#front-about .title h2 .t{
  color:#97c94d;
}

#front-about .subtitle{
  margin:0 0 12px;
  font-size:.98rem;
  color:#5c6a62;
  letter-spacing:.02em;
}

#front-about .subtitle .brand{
  color:#97c94d;
  font-weight:700;
}

#front-about .intro{
  max-width:600px;
  margin:0 auto;
}

#front-about .intro p{
  font-size:.95rem;
  line-height:1.7;
  color:#3f4555;
  margin:0;
  text-align:left;
}

@media (max-width: 768px){
  #front-about{
    margin:10px auto 24px;
  }

  #front-about .title h2{
    font-size:clamp(1.45rem, 1.2rem + .8vw, 2.05rem);
  }
}

/* Legacy contact page */
.legacy-contact-page h1{
  margin:0 0 1.6rem;
  font-size:2.2rem;
}

.legacy-contact-page{
  padding-top:1.9rem;
}

.legacy-contact-intro{
  border:5px solid #c4c4c4;
  padding:2em;
  margin:0 0 2.4rem;
}

.legacy-contact-mailto .contact-mailto-card{
  margin-top:.95rem;
}

.legacy-contact-mailto .contact-mailto-card p{
  margin:0 0 .8rem;
}

.legacy-contact-mailto .contact-mailto-btn{
  display:inline-block;
  padding:.66rem 1.15rem;
  border-radius:999px;
  border:1px solid #2f746d;
  background:#2f746d;
  color:#fff !important;
  font-weight:700;
  text-decoration:none;
}

.legacy-contact-mailto .contact-mailto-btn:hover{
  background:#245953;
  border-color:#245953;
  color:#fff !important;
  text-decoration:none;
}

.legacy-contact-mailto .contact-mailto-note{
  margin-top:.85rem;
}

.legacy-contact-form-wrap{
  border:1px solid #c9c9c9;
  padding:12px 14px 20px;
}

.legacy-contact-form-wrap .form-field{
  margin-bottom:10px;
}

.legacy-contact-form-wrap label{
  font-weight:600;
}

.legacy-contact-form-wrap input[type="text"],
.legacy-contact-form-wrap input[type="email"],
.legacy-contact-form-wrap textarea{
  width:100%;
  border:1px solid #bfc7d3;
  background:#fff;
}

.legacy-contact-form-wrap .buttons{
  margin-top:18px;
}

.legacy-contact-form-wrap .btn.btn-primary.form-control,
.legacy-contact-form-wrap button.btn.btn-primary.form-control{
  width:100%;
  display:block;
  color:#fff;
  border-color:#3f89cc;
  background:#4a90cb;
  height:36px;
  line-height:34px;
  padding:0 14px;
  text-align:center;
}

/* 2026 visual refresh layer (non-breaking overrides) */
:root{
  --ui-font-sans:"Noto Sans TC", "PingFang TC", "PingFang SC", "Microsoft JhengHei", sans-serif;
  --ui-bg:transparent;
  --ui-surface:#ffffff;
  --ui-surface-soft:#f8faf7;
  --ui-text:#253028;
  --ui-text-soft:#56635a;
  --ui-line:#dde5df;
  --ui-primary:#2f746d;
  --ui-primary-deep:#245953;
  --ui-accent:#9ac65a;
  --ui-shadow:0 14px 36px rgba(24,40,31,.08);
  --ui-shadow-soft:0 6px 18px rgba(24,40,31,.06);
  --ui-radius-lg:18px;
  --ui-radius-md:12px;
  --ui-radius-sm:8px;
}

html,
body{
  background:
    radial-gradient(1100px 480px at 90% -20%, rgba(154,198,90,.2), transparent 55%),
    radial-gradient(900px 380px at -10% 20%, rgba(47,116,109,.14), transparent 60%),
    var(--ui-bg);
  color:var(--ui-text);
}

body{
  font-family:var(--ui-font-sans);
  text-rendering:optimizeLegibility;
}

body::before{
  content:"";
  position:fixed;
  inset:0;
  background:url('../images/logo-l.jpg') no-repeat right -40px top 170px / 680px auto;
  opacity:.45;
  filter:saturate(92%) brightness(102%);
  mix-blend-mode:multiply;
  pointer-events:none;
  z-index:-1;
}

#page-wrapper,
#footer,
.mobile-container{
  position:relative;
  z-index:auto;
}

h1,
h2,
h3,
h4{
  font-family:var(--ui-font-sans);
  letter-spacing:.02em;
  color:#1d2922;
}

p,
li{
  color:var(--ui-text-soft);
}

a{
  color:var(--ui-primary);
  text-underline-offset:3px;
}

a:visited{
  color:var(--ui-primary);
}

a:hover{
  color:var(--ui-primary-deep);
}

#body-wrapper{
  position:relative;
  overflow:hidden;
  padding-top:1.25rem;
}

#body-wrapper > .container{
  max-width:1240px;
  padding:0 1.25rem 2.4rem;
}

#body-wrapper::after{
  content:none;
}

#header{
  background:rgba(35,44,38,.84);
  border-bottom:1px solid rgba(255,255,255,.12);
  backdrop-filter:blur(12px);
}

#header > .container{
  max-width:1240px;
  padding:0 1.25rem;
}

#header .navbar{
  min-height:86px;
}

#header .navbar-brand img{
  height:58px;
  transition:height .22s ease;
}

#header .dropmenu ul{
  gap:0;
}

#header .dropmenu ul li a{
  line-height:83px;
  height:83px;
  padding:0 15px;
  border-radius:0;
  background:transparent !important;
  color:rgba(255,255,255,.92);
  transition:color .22s ease;
}

#header .dropmenu ul li a:visited{
  color:rgba(255,255,255,.92);
}

#header .dropmenu ul li a:hover{
  color:#fff;
  background:transparent !important;
}

#header .dropmenu ul li a.active,
#header .dropmenu ul li a.current,
#header .dropmenu ul li a.active-trail{
  color:var(--ui-accent) !important;
  background:transparent !important;
  box-shadow:inset 0 -3px 0 0 var(--ui-accent);
}

#header .dropmenu ul li a.active:visited,
#header .dropmenu ul li a.current:visited,
#header .dropmenu ul li a.active-trail:visited{
  color:var(--ui-accent) !important;
}

body.header-fixed.header-animated #header.scrolled{
  height:3.05rem;
}

body.header-fixed.header-animated #header.scrolled .navbar{
  min-height:3.05rem;
}

body.header-fixed.header-animated #header.scrolled .navbar-brand img{
  height:38px !important;
}

body.header-fixed.header-animated #header.scrolled .dropmenu ul li a{
  line-height:2.75rem;
  height:2.75rem;
}

.mobile-menu .button_container{
  position:fixed;
  top:calc(1rem + env(safe-area-inset-top, 0px));
  right:14px;
  width:34px;
  height:28px;
  z-index:130;
  border-radius:8px;
  background:rgba(25,35,31,.16);
  backdrop-filter:blur(2px);
}

.mobile-menu .button_container span{
  background:#f6f9f7;
  height:3px;
  border-radius:2px;
}

.mobile-menu .button_container span:nth-of-type(1){
  top:2px;
}

.mobile-menu .button_container span:nth-of-type(2){
  top:11px;
}

.mobile-menu .button_container span:nth-of-type(3){
  top:20px;
}

.mobile-menu .button_container.active{
  position:fixed;
  top:calc(1rem + env(safe-area-inset-top, 0px));
  right:14px;
  background:transparent;
  backdrop-filter:none;
}

body.header-fixed.header-animated #header.scrolled ~ .mobile-menu .button_container{
  top:calc(1rem + env(safe-area-inset-top, 0px));
}

.mobile-menu .button_container.active .top{
  transform:translateY(9px) rotate(45deg);
}

.mobile-menu .button_container.active .middle{
  opacity:0;
}

.mobile-menu .button_container.active .bottom{
  transform:translateY(-9px) rotate(-45deg);
}

.mobile-container{
  position:fixed;
  inset:0;
  z-index:120;
  pointer-events:none;
}

.mobile-container .overlay{
  position:fixed;
  inset:0;
  height:100%;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-18px);
  transition:opacity .24s ease, transform .24s ease, visibility .24s ease;
  background:rgba(24,36,32,.9);
  backdrop-filter:blur(2px);
}

.mobile-container .overlay.open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translateY(0);
}

body.mobile-nav-open{
  overflow:hidden;
}

.mobile-logo{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  min-height:96px;
  padding:16px 68px 14px 14px;
  border-bottom:1px solid rgba(255,255,255,.2);
}

.mobile-logo .navbar-brand{
  margin:0 !important;
}

.mobile-logo img{
  height:42px;
  width:auto;
  margin:0;
}

.overlay-menu{
  height:calc(100% - 96px);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:10px 0 22px;
}

.overlay-menu ul{
  list-style:none;
  margin:0;
  padding:0 18px;
}

.overlay-menu ul li{
  margin:0;
}

.overlay-menu ul li a{
  display:block;
  padding:14px 8px;
  font-size:1.1rem;
  font-weight:700;
  color:rgba(255,255,255,.95);
  border-bottom:1px solid rgba(255,255,255,.16);
  text-decoration:none;
}

.overlay-menu ul li a:visited{
  color:rgba(255,255,255,.95);
}

.overlay-menu ul li a.active,
.overlay-menu ul li a.current,
.overlay-menu ul li a.active-trail{
  color:var(--ui-accent);
  border-bottom-color:rgba(154,198,90,.95);
}

#body-wrapper h1{
  font-family:var(--ui-font-sans);
  font-weight:600;
  letter-spacing:.04em;
  color:#213028;
  font-size:clamp(1.82rem, 1.48rem + 1.02vw, 2.42rem);
  line-height:1.18;
  margin:0 0 1rem;
  text-wrap:balance;
}

#body-wrapper h2{
  font-size:clamp(1.45rem, 1.2rem + .8vw, 2.15rem);
}

.home-musicians-title,
.legacy-publication-catalog .block-title{
  font-size:clamp(1.55rem, 1.35rem + .7vw, 2.15rem);
  margin:0;
  color:#1e2a24;
}

.home-section-title-wrap{
  text-align:center;
  margin:1.8rem auto 1.2rem;
}

.home-section-subtitle{
  margin:.02rem 0 0 !important;
  font-size:.96rem;
  line-height:1.15;
  letter-spacing:.06em;
  text-transform:none;
  color:#5c6a62;
}

#body-wrapper > .container > h1:first-child{
  margin-top:1.9rem;
}

.musician-single,
.musicians-list{
  padding-top:1.9rem;
}

.musician-single > h1,
.musicians-list > h1{
  margin-top:0;
}

.musicians-slider-track{
  gap:18px;
}

.musician-card{
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius-md);
  background:var(--ui-surface);
  box-shadow:var(--ui-shadow-soft);
  height:auto;
  min-height:286px;
  padding:10px 10px 14px;
  transition:transform .24s ease, box-shadow .24s ease, border-color .24s ease;
}

.musician-card:hover{
  transform:translateY(-3px);
  box-shadow:var(--ui-shadow);
  border-color:#c8d8cd;
}

.musician-card-image img{
  border-radius:10px;
}

.musician-card-name a,
.musician-card-name-en a{
  color:var(--ui-primary);
}

.slider-arrow{
  width:38px;
  height:38px;
  border:1px solid rgba(255,255,255,.35);
  background:rgba(29,41,34,.82);
  font-size:25px;
  box-shadow:0 4px 10px rgba(0,0,0,.18);
  transition:transform .2s ease, opacity .2s ease, background-color .2s ease;
}

.slider-arrow:hover{
  transform:translateY(-1px);
  background:rgba(20,32,25,.9);
}

.musicians-list .musician-item,
.performance-list-item{
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius-md);
  padding:1rem;
  margin:0 0 1rem;
  background:var(--ui-surface);
  box-shadow:var(--ui-shadow-soft);
}

.musicians-list .musician-item:nth-child(odd){
  background:var(--ui-surface-soft);
}

.musicians-list .musician-photo a{
  border:1px solid #d7dfd9;
  border-radius:10px;
  overflow:hidden;
}

.musician-badge{
  background:#e9f2e4;
  color:#2a4d3f;
  border:1px solid #d2e4c8;
  font-weight:600;
}

.musician-top,
.publication-top,
.performance-top{
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius-lg);
  padding:1.1rem;
  background:var(--ui-surface);
  box-shadow:var(--ui-shadow-soft);
}

.publication-aside{
  width:300px;
  flex:0 0 300px;
}

.publication-aside .publication-side-extras{
  margin-top:14px;
}

.publication-aside .publication-audio-list audio{
  max-width:100%;
}

.publication-aside .publication-preview-grid{
  grid-template-columns:1fr;
  gap:12px;
}

.musician-sheet{
  --musician-aside-offset:296px;
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius-lg);
  background:rgba(255,255,255,.86);
  box-shadow:var(--ui-shadow-soft);
  padding:1.1rem;
}

.musician-sheet .musician-top{
  border:none;
  border-radius:0;
  box-shadow:none;
  background:transparent;
  padding:0;
}

.musician-sheet .musician-publications{
  margin-top:1.2rem;
}

@media (min-width: 901px){
  .musician-sheet .musician-publications{
    margin-left:var(--musician-aside-offset);
  }
}

.musician-photo img,
.publication-cover img,
.performance-cover img{
  border-radius:12px;
}

.musician-name-en{
  color:var(--ui-primary-deep);
}

.musician-meta,
.publication-meta,
.performance-meta{
  border-top:1px solid var(--ui-line);
  border-bottom:1px solid var(--ui-line);
  background:var(--ui-surface-soft);
  border-radius:10px;
  padding:12px 14px;
}

.publication-body,
.musician-body,
.performance-body{
  margin-top:1rem;
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius-md);
  background:var(--ui-surface);
  box-shadow:var(--ui-shadow-soft);
  padding:1.2rem 1.3rem;
}

.publication-body{
  border-top:1px solid var(--ui-line);
}

.musician-publications-title{
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  background:#2f3e36;
  padding:7px 14px;
  letter-spacing:.04em;
  margin-bottom:1rem;
}

.musician-related-item{
  border:1px solid var(--ui-line);
  background:var(--ui-surface);
  border-radius:10px;
  padding:10px;
  height:132px;
  overflow:hidden;
  gap:12px;
}

.musician-related-info{
  min-width:0;
  overflow:hidden;
}

.musician-related-info > a{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  line-height:1.32;
  max-height:2.64em;
}

.musician-score-type,
.musician-performance-meta{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  line-height:1.35;
  max-height:2.7em;
}

.musician-publication-item{
  border:1px solid var(--ui-line);
  background:var(--ui-surface);
  border-radius:10px;
  padding:10px;
  box-shadow:var(--ui-shadow-soft);
}

.musician-publication-cover img{
  border-radius:8px;
}

.musician-publication-info a{
  color:var(--ui-primary);
}

.musician-related-cover img{
  border-radius:8px;
}

.musician-related-info a:visited,
.musician-publication-info a:visited{
  color:var(--ui-primary);
}

.performance-meta-info a:visited,
.performance-list-item h2 a:visited,
.block-chorphilia-publication-block a:visited{
  color:var(--ui-primary);
}

.legacy-publication-catalog{
  margin-top:2rem;
}

.legacy-publication-content{
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius-lg);
  padding:1.1rem;
  background:rgba(255,255,255,.72);
  box-shadow:var(--ui-shadow-soft);
}

.legacy-publication-columns{
  gap:20px;
}

.block-chorphilia-publication-block .publication_title{
  color:#1f2d24;
  margin-bottom:.65rem;
}

.block-chorphilia-publication-block ul li,
.legacy-publication-left > p{
  margin-bottom:.6rem;
}

.legacy-pubmedia-item > div a{
  display:block;
  border-radius:10px;
  overflow:hidden;
}

.legacy-pubmedia-item img{
  border-radius:10px;
  border:1px solid #dce4de;
}

.publication-extra-block,
.publication-index-intro{
  border:1px solid var(--ui-line);
  border-radius:10px;
  background:var(--ui-surface-soft);
  padding:.8rem .95rem;
}

.publication-detail-block{
  margin-top:1rem;
}

.publication-detail-content{
  font-size:1rem;
  line-height:1.8;
}

.publication-detail-content p{
  margin-bottom:1rem;
}

#body-wrapper iframe[src*="youtube.com"],
#body-wrapper iframe[src*="youtube-nocookie.com"],
#body-wrapper iframe[src*="youtu.be"],
#body-wrapper iframe[src*="vimeo.com"]{
  display:block;
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  aspect-ratio:16 / 9;
  border:0;
}

.publication-preview-item img{
  border-radius:8px;
  border:1px solid #dce4de;
}

.btn,
button,
input[type="submit"],
input[type="button"]{
  border-radius:999px;
  transition:transform .18s ease, box-shadow .2s ease, background-color .2s ease;
}

.btn.btn-primary,
.legacy-contact-form-wrap .btn.btn-primary.form-control,
.legacy-contact-form-wrap button.btn.btn-primary.form-control{
  border-color:#2f746d;
  background:#2f746d;
  color:#fff;
}

.btn.btn-primary:hover,
.legacy-contact-form-wrap .btn.btn-primary.form-control:hover,
.legacy-contact-form-wrap button.btn.btn-primary.form-control:hover{
  background:#245953;
  border-color:#245953;
  transform:translateY(-1px);
  box-shadow:0 9px 18px rgba(36,89,83,.24);
}

input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select{
  border:1px solid #cfd9d2;
  border-radius:10px;
  background:#fff;
  transition:border-color .2s ease, box-shadow .2s ease;
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="tel"]:focus,
textarea:focus,
select:focus{
  outline:none;
  border-color:#5b9c92;
  box-shadow:0 0 0 3px rgba(91,156,146,.2);
}

#footer.section.bg-gray{
  border-top:1px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg, #2d3832 0%, #222c27 100%) !important;
  color:#eff8f3 !important;
  font-size:14px;
}

#footer .footer-row p,
#footer .footer-row strong,
#footer .footer-row a{
  color:#eff8f3 !important;
  font-weight:600;
  opacity:1;
}

#footer .footer-row a{
  text-decoration:none;
}

#footer .footer-row a:hover{
  color:#ffffff !important;
  text-decoration:underline;
}

#footer .footer-row a:visited{
  color:#eff8f3 !important;
}

#footer.section{
  padding:1rem 1rem .9rem;
}

@media (max-width: 900px){
  #header > .container{
    padding:0 1rem;
  }

  #header .navbar{
    min-height:68px;
  }

  #header .navbar-brand img{
    height:50px;
  }

  #body-wrapper > .container{
    padding:0 1rem 2rem;
  }

  .publication-aside{
    width:100%;
    max-width:360px;
    flex:none;
  }

  .publication-top,
  .musician-top,
  .performance-top{
    padding:.9rem;
  }
}

@media (max-width: 768px){
  .musicians-list .musician-item{
    display:block;
  }

  .musicians-list .musician-photo{
    width:100%;
    max-width:280px;
    margin:0 auto 12px;
    flex:none;
  }

  .musician-publications-title{
    display:flex;
    justify-content:center;
    text-align:center;
  }

  .publication-body,
  .musician-body,
  .performance-body{
    padding:1rem;
  }

  .publication-title,
  .performance-title{
    overflow-wrap:anywhere;
    word-break:break-word;
  }

  #footer .columns.footer-row{
    display:flex;
    flex-direction:column;
    gap:.55rem;
    align-items:center;
  }

  #footer .footer-left,
  #footer .footer-center,
  #footer .footer-right{
    width:100%;
    text-align:center;
  }

  #footer .footer-row p,
  #footer .footer-row strong,
  #footer .footer-row a{
    font-size:13px;
    line-height:1.55;
    word-break:break-word;
  }

  #body-wrapper::after{
    content:none;
  }

  html,
  body{
    background:
      radial-gradient(900px 400px at 90% -20%, rgba(154,198,90,.18), transparent 56%),
      radial-gradient(760px 340px at -10% 20%, rgba(47,116,109,.12), transparent 60%),
      var(--ui-bg);
  }

  body::before{
    background-position:right -130px top 240px;
    background-size:500px auto;
    opacity:.32;
  }
}

@media (prefers-reduced-motion:no-preference){
  .musician-card,
  .musicians-list .musician-item,
  .performance-list-item,
  .legacy-publication-content{
    animation:fade-up .45s ease both;
  }
}

@keyframes fade-up{
  from{
    opacity:0;
    transform:translateY(8px);
  }
  to{
    opacity:1;
    transform:translateY(0);
  }
}
