@font-face{font-family:'Poppins';font-weight:400;font-display:swap;src:url('fonts/poppins-400.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-weight:600;font-display:swap;src:url('fonts/poppins-600.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-weight:700;font-display:swap;src:url('fonts/poppins-700.woff2') format('woff2')}
/* Fraunces variable — display/heading + logo wordmark (SOFT/WONK axes preserved) */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:400 900;font-display:swap;src:url('fonts/fraunces-upright.woff2') format('woff2')}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:400 900;font-display:swap;src:url('fonts/fraunces-italic.woff2') format('woff2')}

:root{
  --green:#2E5A4C; --green-deep:#1F4036; --olive:#3C6E5D; --ink:#44403c; --stone:#e7e5e4;
  --taupe:#735c47; --cream:#faf9f6; --line:#ecebe5; --muted:#6f6b63;
}
*{box-sizing:border-box}
body{margin:0;font-family:'Poppins',system-ui,sans-serif;color:var(--ink);background:var(--cream);line-height:1.5}
main{max-width:48rem;margin:0 auto;padding:1.5rem}
a{color:var(--green)}
h1,h2{font-family:'Fraunces',serif;font-weight:600;letter-spacing:-.01em;margin:0}

/* header */
.show-header,.landing-header{background:var(--green);color:#fff;margin:-1.5rem -1.5rem 1rem;padding:1.25rem 1.5rem;border-radius:0 0 10px 10px}
.show-header h1,.landing-header h1{color:#fff;font-size:1.5rem}
.show-dates,.show-location,.show-updated{margin:.15rem 0 0;font-size:.85rem;opacity:.9}
.pdf-link{display:inline-block;margin-top:.6rem;background:var(--olive);color:#fff;padding:.4rem .8rem;border-radius:6px;text-decoration:none;font-size:.85rem}

/* toolbar */
.show-toolbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;background:var(--stone);padding:.6rem .75rem;border-radius:8px;margin-bottom:1rem}
.show-toolbar input[type=search]{flex:1 1 12rem;min-width:0;padding:.4rem .6rem;border:1px solid #cbcbc4;border-radius:6px;font:inherit}
.show-toolbar input[type=number]{width:6rem;padding:.4rem .6rem;border:1px solid #cbcbc4;border-radius:6px;font:inherit}
.toolbar-toggle{font-size:.85rem;display:flex;align-items:center;gap:.3rem}
.result-count{font-size:.8rem;color:var(--muted)}
.no-results{color:var(--muted);font-style:italic}

/* class blocks */
.class-block{background:#fff;border:1px solid var(--line);border-radius:8px;padding:.75rem .9rem;margin-bottom:.6rem}
.class-head{display:flex;align-items:baseline;gap:.5rem}
.class-num{font-family:'Fraunces',serif;font-weight:700;background:var(--green);color:#fff;border-radius:5px;padding:0 .45rem;font-size:.85rem}
.class-name{font-weight:600;color:var(--green)}
.class-note{margin:.3rem 0 0;font-style:italic;color:var(--taupe);font-size:.85rem}
.no-entrants{margin:.4rem 0 0;color:var(--muted);font-style:italic;font-size:.85rem}

/* entrants: cards on mobile */
.entrants{width:100%;border-collapse:collapse;margin-top:.4rem}
.entrants,.entrants tbody{display:block}
.entrants-head{display:none}
.entrant{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"num llama" "num farm" "num exhibitor";column-gap:.6rem;padding:.4rem 0;border-top:1px solid var(--line)}
.entrant-num{grid-area:num;align-self:center;font-family:'Fraunces',serif;font-weight:700;color:var(--olive);background:#e4ede8;border-radius:6px;min-width:1.8rem;height:1.8rem;display:flex;align-items:center;justify-content:center;font-size:.85rem}
.entrant-llama{grid-area:llama;font-weight:600;font-size:.95rem}
.entrant-farm{grid-area:farm;color:var(--muted);font-size:.8rem}
.entrant-exhibitor{grid-area:exhibitor;color:var(--muted);font-size:.8rem}
.entrant-farm:empty,.entrant-exhibitor:empty{display:none}

/* landing */
.show-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}
.show-card a{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:8px;padding:.8rem 1rem;text-decoration:none}
.show-card-name{font-weight:600;color:var(--green)}
.show-card-loc{color:var(--muted);font-size:.85rem}
.empty-state{color:var(--muted)}

/* settings form */
.settings-form{display:flex;flex-direction:column;gap:.3rem;max-width:24rem}
.settings-form label{font-weight:600;font-size:.85rem;margin-top:.5rem}
.settings-form input{padding:.4rem .6rem;border:1px solid #cbcbc4;border-radius:6px;font:inherit}
.settings-form button{margin-top:1rem;background:var(--green);color:#fff;border:0;border-radius:6px;padding:.5rem 1rem;font:inherit;cursor:pointer}
.suggestions{list-style:none;margin:.25rem 0 0;padding:0;border:1px solid var(--line);border-radius:6px;background:#fff}
.suggestions:empty{display:none}
.suggestions li{padding:.3rem .6rem;cursor:pointer}
.suggestions li:hover{background:var(--stone)}

/* desktop: entrants become a natural table */
@media (min-width:48rem){
  .entrants,.entrants tbody{display:revert}
  .entrants-head{display:table-header-group}
  .entrant{display:table-row}
  .entrant>td{display:table-cell;padding:.35rem .5rem;border-top:1px solid var(--line);vertical-align:top}
  .entrant-num{background:none;color:var(--olive);height:auto;min-width:0}
  .entrant-farm:empty,.entrant-exhibitor:empty{display:table-cell}
  .entrant-farm:empty::before,.entrant-exhibitor:empty::before{content:"\2014";color:var(--muted)}
  .entrants-head th{text-align:left;font-size:.7rem;text-transform:uppercase;color:var(--muted);padding:.2rem .5rem}
}

/* print */
@media print{
  /* WeasyPrint ignores `display:revert`, so the table parts are set explicitly
     here (otherwise .entrants stays display:block and the header/body columns
     don't share a table layout → misaligned headings). */
  @page{size:letter;margin:0.75in}
  body{background:#fff}
  main{max-width:none;margin:0;padding:0}
  .show-toolbar,.pdf-link,.no-results{display:none}
  /* Content runs flush to the 0.75in page margins — no extra left/right inset. */
  .show-header{background:#fff;color:var(--green);border-bottom:2px solid var(--green);border-radius:0;margin:0 0 1rem;padding-left:0;padding-right:0}
  .show-header h1{color:var(--green)}
  .class-block{break-inside:avoid;border:0;border-radius:0;margin:0 0 .45rem;padding:0}
  .class-note{margin:.1rem 0 0}
  .no-entrants{margin:.1rem 0 0}
  .entrants{display:table;width:100%;table-layout:fixed;margin-top:.15rem}
  .entrants tbody{display:table-row-group}
  .entrants-head{display:table-header-group}
  .entrants-head th{text-align:left;font-size:.6rem;text-transform:uppercase;color:var(--muted);padding:.18rem .4rem}
  .entrant{display:table-row}
  .entrant>td{display:table-cell;padding:.18rem .4rem;border-top:1px solid var(--line);vertical-align:top;overflow-wrap:break-word}
  .entrants-head th:first-child,.entrant>td:first-child{padding-left:0}
  .entrants-head th:last-child,.entrant>td:last-child{padding-right:0}
  /* Smaller print type to reduce wrapping and fit more rows per page. */
  /* Plain "#<num> — <name>" heading instead of the bold pine badge. */
  .class-head{gap:.3rem}
  .class-num{background:none;color:var(--green);padding:0;font-size:.9rem}
  .class-num::before{content:"#"}
  .class-name{color:var(--green);font-size:.9rem}
  .class-name::before{content:"— "}
  .entrant-llama{font-size:.78rem}
  .entrant-farm,.entrant-exhibitor{font-size:.68rem}
  .entrant-num{background:none;color:var(--olive);height:auto;min-width:0;border-radius:0;font-size:.68rem}
  .entrants-head th:nth-child(1),.entrant-num{width:6%}
  .entrants-head th:nth-child(2),.entrant-llama{width:36%}
  .entrants-head th:nth-child(3),.entrant-farm{width:32%}
  .entrants-head th:nth-child(4),.entrant-exhibitor{width:26%}
  .entrant-farm:empty,.entrant-exhibitor:empty{display:table-cell}
  .entrant-farm:empty::before,.entrant-exhibitor:empty::before{content:"\2014";color:var(--muted)}
}
