/* Expo Page Builder — Classes section (list layout)
   Everything is scoped under .epb-classes so Flatsome/theme styles don't leak in. */

@font-face{font-family:"EPB Archivo";src:url(../fonts/epb-archivo-latin.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"EPB Archivo";src:url(../fonts/epb-archivo-latin-ext.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

.epb-classes{
  --epb-accent:#e4572e;      /* dates */
  --epb-highlight:#e4572e;   /* highlighter behind class name on hover */
  --epb-row-hover:#f3f3f3;   /* row shade on hover */
  --epb-btn-bg:#000;         /* register button */
  --epb-btn-text:#fff;
  --epb-ink:#000;
  --epb-muted:#5c5c5c;
  --epb-line:#000;
  --epb-font:"EPB Archivo","Helvetica Neue",Arial,sans-serif;
  container-type:inline-size;container-name:epb;
  font-family:var(--epb-font);color:#1a1a1a;font-size:16px;line-height:1.5;
  margin:0 0 2em;text-align:left;
}
.epb-classes *{box-sizing:border-box}
.epb-classes img{max-width:none}
.epb-classes .epb-heading,.epb-classes .epb-day-title,.epb-classes .epb-time b,.epb-classes .epb-title,.epb-classes .epb-btn{
  font-family:var(--epb-font);font-stretch:125%;font-variation-settings:"wdth" 125;text-transform:uppercase;
}

/* ---- Header: solid black band ---- */
.epb-classes .epb-head{display:flex;flex-wrap:wrap;gap:22px 64px;align-items:flex-end;background:var(--epb-head-bg,#000);color:var(--epb-head-fg,#fff);padding:clamp(28px,6.5cqi,76px);margin:0 0 64px}
.epb-classes .epb-head-main{flex:1 1 440px;max-width:100%}
.epb-classes .epb-intro{flex:1 1 280px;min-width:0;max-width:46ch;margin:0;font-size:16px;line-height:1.55;color:#d6d6d6;color:color-mix(in srgb,var(--epb-head-fg,#fff) 84%,var(--epb-head-bg,#000));letter-spacing:.01em}
.epb-classes .epb-eyebrow{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.16em;line-height:1.4;text-transform:uppercase;color:var(--epb-head-fg,#fff);border:1px solid rgba(255,255,255,.55);border-color:color-mix(in srgb,var(--epb-head-fg,#fff) 55%,transparent);padding:6px 10px;margin:0 0 22px}
.epb-classes .epb-heading{font-size:clamp(28px,5.4vw,64px);font-size:clamp(28px,6.2cqi,64px);line-height:.95;letter-spacing:-.035em;font-weight:900;color:var(--epb-head-fg,#fff);margin:0;padding:0}
.epb-classes .epb-none{margin:0;font-size:15px;color:var(--epb-muted)}

/* ---- Day heading ---- */
.epb-classes .epb-day{margin:0 0 72px}
.epb-classes .epb-day:last-child{margin-bottom:0}
.epb-classes .epb-day-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 26px;padding:0;font-size:28px;font-weight:900;letter-spacing:-.03em;line-height:1;color:#000}
.epb-classes .epb-day-date{color:var(--epb-accent)}

/* ---- Class rows ---- */
.epb-classes .epb-list{border-top:1px solid var(--epb-line)}
.epb-classes .epb-card{display:flex;align-items:center;min-width:0;padding:22px 12px;margin:0;border-bottom:1px solid var(--epb-line)}
.epb-classes .epb-media{flex:0 0 190px;position:relative;overflow:hidden;aspect-ratio:4/3;background:#e9e9e9}
.epb-classes .epb-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;margin:0}
.epb-classes .epb-content{flex:1 1 0;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:20px 32px;padding:0 0 0 32px}

.epb-classes .epb-top{flex:0 0 160px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.epb-classes .epb-time{line-height:1;color:#000}
.epb-classes .epb-time b{font-size:24px;font-weight:900;letter-spacing:-.03em}
.epb-classes .epb-time small{font-size:11px;font-weight:700;margin-left:4px;letter-spacing:.06em}
.epb-classes .epb-price{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;line-height:1;color:#000;border:1px solid #000;padding:5px 8px 4px}
.epb-classes .epb-brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.epb-classes .epb-brand-label{font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--epb-muted);line-height:1}
.epb-classes .epb-brand img{height:34px;width:auto;max-width:160px;display:block;object-fit:contain;object-position:left center;margin:0}
.epb-classes .epb-brand-name{font-size:14px;font-weight:700;color:#000;line-height:1.2}

.epb-classes .epb-body{flex:3 1 240px;min-width:0}
.epb-classes .epb-title{font-size:20px;line-height:1.05;letter-spacing:-.03em;font-weight:900;color:#000;margin:0 0 8px;padding:0;text-wrap:balance}
.epb-classes .epb-desc{font-size:15px;line-height:1.5;color:#3d3d3d;margin:0 0 10px;letter-spacing:.005em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.epb-classes .epb-room{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;letter-spacing:.12em;line-height:1.3;text-transform:uppercase;color:#000}
.epb-classes .epb-room svg{width:13px;height:13px;flex:none}

.epb-classes .epb-foot{flex:1 0 200px;display:flex;flex-direction:column;align-items:stretch;gap:16px;min-width:0}
.epb-classes .epb-host{display:flex;align-items:center;gap:12px;min-width:0}
.epb-classes .epb-host > div{min-width:0}
.epb-classes .epb-host img{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:none;margin:0}
.epb-classes .epb-host-label{display:block;font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--epb-muted);line-height:1.4}
.epb-classes .epb-host-name{display:block;font-size:15px;font-weight:600;color:#000;line-height:1.25;overflow-wrap:anywhere}

.epb-classes .epb-btn{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;margin:0;background:var(--epb-btn-bg);color:var(--epb-btn-text);border:0;border-radius:0;padding:0 18px;height:50px;font-size:13px;font-weight:800;letter-spacing:.02em;line-height:1;text-decoration:none;box-shadow:none;transition:background .2s}
.epb-classes .epb-btn{-webkit-tap-highlight-color:transparent}
.epb-classes .epb-btn:focus{color:var(--epb-btn-text);text-decoration:none}
/* hover only for devices with a real pointer (mouse/trackpad) so it never "sticks" after a tap */
@media (hover:hover) and (pointer:fine){
  .epb-classes .epb-btn:hover{background:color-mix(in srgb,var(--epb-btn-bg) 82%,#fff);color:var(--epb-btn-text);text-decoration:none}
}
/* press feedback while a finger/mouse is down */
.epb-classes .epb-btn:active{background:color-mix(in srgb,var(--epb-btn-bg) 78%,#fff)}
.epb-classes .epb-btn:focus-visible{outline:2px solid var(--epb-accent);outline-offset:2px}
.epb-classes .epb-btn svg{width:18px;height:18px;flex:none}
.epb-classes .epb-btn--row{display:none}
/* photo + title link to the same register URL */
.epb-classes a.epb-media{display:block;text-decoration:none;-webkit-tap-highlight-color:transparent}
.epb-classes .epb-title a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
.epb-classes .epb-title a:focus-visible{outline:2px solid var(--epb-accent);outline-offset:2px}
.epb-classes .epb-card{transition:background .25s ease,box-shadow .25s ease}
.epb-classes .epb-title a{background:linear-gradient(color-mix(in srgb,var(--epb-highlight) 45%,transparent),color-mix(in srgb,var(--epb-highlight) 45%,transparent)) 0 92%/0% 45% no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background-size .35s ease}
@media (hover:hover) and (pointer:fine){
  /* hovering the photo or the class name: shade the row + sweep a highlighter behind the name */
  .epb-classes .epb-card:has(.epb-title a:hover, a.epb-media:hover){background:var(--epb-row-hover)}
  .epb-classes .epb-card:has(.epb-title a:hover, a.epb-media:hover) .epb-title a{background-size:100% 45%}
}

/* ---- Medium columns (e.g. a half-width Flatsome column or tablet): stack details beside the photo ---- */
@media (min-width:550px) and (max-width:900px){
  .epb-classes .epb-card{align-items:flex-start}
  .epb-classes .epb-media{flex-basis:200px}
  .epb-classes .epb-content{flex-direction:column;align-items:stretch;gap:14px;padding-left:24px}
  .epb-classes .epb-top{flex:none;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 14px}
  .epb-classes .epb-brand{flex-direction:row;align-items:center;gap:8px;margin-left:auto}
  .epb-classes .epb-brand img{height:22px}
  .epb-classes .epb-body{flex:none}
  .epb-classes .epb-foot{flex:none;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
  .epb-classes .epb-host{flex:1 1 180px}
  .epb-classes .epb-btn{width:auto;height:44px;margin-left:auto}
}
@container epb (min-width:561px) and (max-width:860px){
  .epb-classes .epb-card{align-items:flex-start}
  .epb-classes .epb-media{flex-basis:200px}
  .epb-classes .epb-content{flex-direction:column;align-items:stretch;gap:14px;padding-left:24px}
  .epb-classes .epb-top{flex:none;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 14px}
  .epb-classes .epb-brand{flex-direction:row;align-items:center;gap:8px;margin-left:auto}
  .epb-classes .epb-brand img{height:22px}
  .epb-classes .epb-body{flex:none}
  .epb-classes .epb-foot{flex:none;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
  .epb-classes .epb-host{flex:1 1 180px}
  .epb-classes .epb-btn{width:auto;height:44px;margin-left:auto}
}

/* ---- Phone / narrow columns: compact ruled agenda rows ----
   Same rules twice: @media for older browsers, @container for narrow Flatsome columns. */
@media (max-width:549px){
  .epb-classes .epb-head{padding:26px 22px;margin-bottom:36px;gap:14px}
  .epb-classes .epb-eyebrow{font-size:9.5px;margin-bottom:14px;padding:5px 8px}
  .epb-classes .epb-heading{font-size:30px}
  .epb-classes .epb-intro{font-size:14px;line-height:1.5}
  .epb-classes .epb-day{margin-bottom:36px}
  .epb-classes .epb-day-title{font-size:18px;margin-bottom:12px}
  .epb-classes .epb-card{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:start;padding:14px 0}
  .epb-classes .epb-media{grid-column:1;aspect-ratio:1;width:92px}
  .epb-classes .epb-content{grid-column:2;flex-direction:row;gap:6px 8px;padding:0 0 0 14px}
  .epb-classes .epb-top,.epb-classes .epb-body,.epb-classes .epb-foot{display:contents}
  .epb-classes .epb-time{order:1}
  .epb-classes .epb-time b{font-size:13px;letter-spacing:0}
  .epb-classes .epb-time small{font-size:10px;margin-left:3px}
  .epb-classes .epb-price{order:2;font-size:9.5px;padding:3px 5px 2px}
  .epb-classes .epb-room{order:3;font-size:10px;gap:4px;color:var(--epb-muted)}
  .epb-classes .epb-room svg{width:10px;height:10px}
  .epb-classes .epb-title{order:4;flex:1 1 100%;font-size:20px;line-height:1.08;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
  .epb-classes .epb-desc{display:none}
  .epb-classes .epb-host{order:5;flex:1 1 100%;gap:7px}
  .epb-classes .epb-host img{width:18px;height:18px}
  .epb-classes .epb-host-label{display:none}
  .epb-classes .epb-host-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .epb-classes .epb-brand{order:6;flex:1 1 auto}
  .epb-classes .epb-brand-label{display:none}
  .epb-classes .epb-brand img{height:17px;max-width:100px}
  .epb-classes .epb-brand-name{font-size:11px}
  .epb-classes .epb-btn{order:7;width:auto;height:30px;padding:0 10px;font-size:10px;gap:6px;margin:2px 0 0 auto}
  .epb-classes .epb-btn svg{width:12px;height:12px}
  /* phones: swap the small inline button for a full-width bar under the row */
  .epb-classes .epb-foot .epb-btn{display:none}
  .epb-classes .epb-btn--row{display:flex;grid-column:1 / -1;order:0;width:100%;height:42px;margin:12px 0 0;padding:0 14px;font-size:11px;gap:10px;background:var(--epb-btn-bg);color:var(--epb-btn-text);border:0}
  .epb-classes .epb-btn--row:focus{color:var(--epb-btn-text)}
  .epb-classes .epb-btn--row:active{background:color-mix(in srgb,var(--epb-btn-bg) 78%,#fff);color:var(--epb-btn-text)}
  .epb-classes .epb-btn--row svg{width:15px;height:15px}
}
@container epb (max-width:560px){
  .epb-classes .epb-head{padding:26px 22px;margin-bottom:36px;gap:14px}
  .epb-classes .epb-eyebrow{font-size:9.5px;margin-bottom:14px;padding:5px 8px}
  .epb-classes .epb-heading{font-size:30px}
  .epb-classes .epb-intro{font-size:14px;line-height:1.5}
  .epb-classes .epb-day{margin-bottom:36px}
  .epb-classes .epb-day-title{font-size:18px;margin-bottom:12px}
  .epb-classes .epb-card{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:start;padding:14px 0}
  .epb-classes .epb-media{grid-column:1;aspect-ratio:1;width:92px}
  .epb-classes .epb-content{grid-column:2;flex-direction:row;gap:6px 8px;padding:0 0 0 14px}
  .epb-classes .epb-top,.epb-classes .epb-body,.epb-classes .epb-foot{display:contents}
  .epb-classes .epb-time{order:1}
  .epb-classes .epb-time b{font-size:13px;letter-spacing:0}
  .epb-classes .epb-time small{font-size:10px;margin-left:3px}
  .epb-classes .epb-price{order:2;font-size:9.5px;padding:3px 5px 2px}
  .epb-classes .epb-room{order:3;font-size:10px;gap:4px;color:var(--epb-muted)}
  .epb-classes .epb-room svg{width:10px;height:10px}
  .epb-classes .epb-title{order:4;flex:1 1 100%;font-size:20px;line-height:1.08;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
  .epb-classes .epb-desc{display:none}
  .epb-classes .epb-host{order:5;flex:1 1 100%;gap:7px}
  .epb-classes .epb-host img{width:18px;height:18px}
  .epb-classes .epb-host-label{display:none}
  .epb-classes .epb-host-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .epb-classes .epb-brand{order:6;flex:1 1 auto}
  .epb-classes .epb-brand-label{display:none}
  .epb-classes .epb-brand img{height:17px;max-width:100px}
  .epb-classes .epb-brand-name{font-size:11px}
  .epb-classes .epb-btn{order:7;width:auto;height:30px;padding:0 10px;font-size:10px;gap:6px;margin:2px 0 0 auto}
  .epb-classes .epb-btn svg{width:12px;height:12px}
  /* phones: swap the small inline button for a full-width bar under the row */
  .epb-classes .epb-foot .epb-btn{display:none}
  .epb-classes .epb-btn--row{display:flex;grid-column:1 / -1;order:0;width:100%;height:42px;margin:12px 0 0;padding:0 14px;font-size:11px;gap:10px;background:var(--epb-btn-bg);color:var(--epb-btn-text);border:0}
  .epb-classes .epb-btn--row:focus{color:var(--epb-btn-text)}
  .epb-classes .epb-btn--row:active{background:color-mix(in srgb,var(--epb-btn-bg) 78%,#fff);color:var(--epb-btn-text)}
  .epb-classes .epb-btn--row svg{width:15px;height:15px}
}

/* ---- "Read More" for long descriptions (button is added by the script only when the text is cut off) ---- */
.epb-classes .epb-desc{transition:max-height .35s ease}
.epb-classes .epb-desc.is-open{display:block;-webkit-line-clamp:unset;overflow:hidden}
.epb-classes .epb-more{display:flex;width:max-content;align-items:center;gap:5px;margin:-4px 0 12px;padding:2px 0;border:0;border-radius:0;background:none;box-shadow:none;min-height:0;height:auto;color:#000;font:700 11px/1.2 var(--epb-font);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;-webkit-tap-highlight-color:transparent}
.epb-classes .epb-more[hidden]{display:none}
.epb-classes .epb-more span{background:linear-gradient(currentColor,currentColor) 0 100%/100% 1.5px no-repeat;padding-bottom:2px}
.epb-classes .epb-more svg{width:11px;height:11px;flex:none;transition:transform .3s ease}
.epb-classes .epb-more[aria-expanded="true"] svg{transform:rotate(180deg)}
.epb-classes .epb-more:focus-visible{outline:2px solid var(--epb-accent);outline-offset:3px}
@media (hover:hover) and (pointer:fine){ .epb-classes .epb-more:hover{color:var(--epb-accent)} }
@media (max-width:549px){ .epb-classes .epb-more{display:none} }
@container epb (max-width:560px){ .epb-classes .epb-more{display:none} }

/* header background image (optional) */
.epb-classes .epb-head.has-img{position:relative;isolation:isolate;overflow:hidden;background-color:var(--epb-head-bg,#000);background-image:var(--epb-head-img);background-position:center;background-size:cover;background-repeat:no-repeat}
.epb-classes .epb-head.has-img::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--epb-head-bg,#000);opacity:var(--epb-head-dim,.5);pointer-events:none}
.epb-classes .epb-head.has-img .epb-intro{color:var(--epb-head-fg,#fff);opacity:.9}
