:root {
  --primary:#e51c2c;
  --primary-hover:#c51221;
  --yellow:#ffd43b;
  --paper:#fcfbf8;
  --ink:#262522;
  --muted:#77736c;
  --line:#e6e2db;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  color:var(--ink);
  background:var(--paper);
  font-synthesis:none;
  scroll-behavior:smooth;
}
* { box-sizing:border-box; }
body { margin:0; border-top:5px solid var(--primary); }
a { color:inherit; text-decoration:none; }
button,input,select { font:inherit; touch-action:manipulation; }
button { border:0; cursor:pointer; color:inherit; }
button:disabled { cursor:default; opacity:.55; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible { outline:3px solid var(--primary); outline-offset:4px; }
svg { width:20px; height:20px; stroke:currentColor; stroke-width:1.7; fill:none; flex:none; }
[hidden] { display:none!important; }
.wrap { width:calc(100% - 64px); max-width:1020px; margin-inline:auto; }
.demo-banner { display:flex; align-items:center; justify-content:center; gap:7px; min-height:27px; padding:5px 12px; background:#fff2b8; font-size:10px; font-weight:700; color:#675418; }
.demo-description { font-weight:400; }
.demo-dot { width:5px; height:5px; border-radius:50%; background:#9e7d0b; }
.header { display:flex; align-items:center; justify-content:space-between; gap:20px; height:87px; border-bottom:1px solid var(--line); }
.brand { display:inline-flex; align-items:center; font-size:30px; font-weight:850; letter-spacing:-1.4px; line-height:1; color:var(--primary); }
.brand-block { min-width:0; }
.brand-slogan { margin:7px 0 0; color:var(--muted); font-size:10px; line-height:1.4; }
.brand-period { color:var(--primary); position:relative; }
.brand-period:after { content:''; position:absolute; bottom:-2px; left:0; right:0; height:4px; background:var(--yellow); }
.button { display:inline-flex; align-items:center; justify-content:center; gap:14px; min-height:43px; padding:12px 17px; border-radius:7px; font-size:12px; line-height:1.3; font-weight:700; }
.button-primary { background:var(--primary); color:white; }
.button-primary:hover { background:var(--primary-hover); }
.add-company>span { font-size:20px; line-height:12px; }
.button-outline { border:1px solid #d6d1c8; background:transparent; }
.button-outline:hover { background:#f1eee7; }
.ranking-section { padding-top:43px; scroll-margin-top:20px; }
.section-heading { display:flex; justify-content:space-between; align-items:center; gap:25px; margin-bottom:29px; }
h1 { margin:0; font-size:43px; font-weight:780; letter-spacing:-1.9px; line-height:1.15; }
h1>span { color:var(--primary); text-decoration:underline; text-decoration-color:var(--yellow); text-decoration-thickness:5px; text-underline-offset:6px; }
.section-heading p { margin:13px 0 0; font-size:13px; color:var(--muted); line-height:1.6; }
.search-form { display:flex; gap:10px; margin-bottom:18px; }
.search-field { display:flex; align-items:center; gap:10px; flex:1; min-width:0; height:49px; padding:0 14px; border:1px solid #dcd7cf; border-radius:8px; background:white; }
.search-field svg { width:18px; height:18px; color:#8c867c; }
.search-field input { width:100%; min-width:0; border:0; background:none; color:var(--ink); font-size:13px; }
input::placeholder { color:#979086; }
.search-field kbd { font:inherit; font-size:12px; color:#aaa296; border:1px solid var(--line); padding:1px 7px; border-radius:4px; }
.category-field select { height:49px; padding:0 12px; background:white; color:#635e55; border:1px solid #dcd7cf; border-radius:8px; font-size:12px; max-width:170px; }
.ranking-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:15px; }
.sort-control { position:relative; }
.recent-tip { position:absolute; z-index:5; top:calc(100% + 9px); left:0; width:290px; max-width:calc(100vw - 40px); padding:18px 20px; border:1px solid #e3c95d; border-radius:10px; background:#fff8d9; box-shadow:0 8px 24px #4c3b161c; }
.recent-tip:before { content:''; position:absolute; top:-6px; left:28px; width:10px; height:10px; background:#fff8d9; border-top:1px solid #e3c95d; border-left:1px solid #e3c95d; transform:rotate(45deg); }
.recent-tip>strong { display:block; font-size:14px; color:#4c3a0a; }
.recent-tip p { margin:8px 0 12px; font-size:12px; line-height:1.7; color:#79683a; }
.tip-close { position:absolute; top:8px; right:8px; width:28px; height:28px; padding:0; background:none; color:#79683a; font-size:20px; border-radius:4px; }
.tip-close:hover { background:#f7edc3; }
.tip-action { min-height:33px; padding:3px 0; background:none; color:#a92127; font-size:12px; font-weight:700; text-decoration:underline; text-underline-offset:4px; }
.participation-status { display:flex; align-items:center; gap:12px; padding:0 0 12px; font-size:11px; color:var(--muted); }
.participation-status button { padding:5px 0; background:none; color:var(--primary); font-size:11px; font-weight:650; text-decoration:underline; text-underline-offset:3px; }
.sort-field select { min-height:39px; padding:8px 28px 8px 0; border:0; background:transparent; color:var(--ink); font-size:12px; font-weight:650; }
.list-count { font-size:11px; color:var(--muted); }
.company-list { background:#fff; border:1px solid var(--line); border-radius:11px; overflow:clip; }
.company-card { padding:12px 14px; border-bottom:1px solid var(--line); }
.company-card:last-child { border-bottom:0; }
.card-main { display:grid; grid-template-columns:minmax(0,1fr) auto 44px; gap:18px; align-items:center; }
.company-description { display:flex; flex-direction:column; align-items:flex-start; gap:2px; min-width:0; }
.company-description h3 { min-width:0; margin:0; color:var(--ink); font-size:16px; line-height:1.4; font-weight:700; letter-spacing:-.25px; overflow-wrap:anywhere; }
.company-category { flex:none; color:var(--muted); font-size:11px; line-height:1.4; font-weight:400; white-space:nowrap; }
.results-heading { margin:32px 0 15px; font-size:20px; letter-spacing:-.4px; }
.vote-controls { display:grid; grid-template-columns:repeat(2,minmax(157px,max-content)); gap:6px 8px; }
.vote-button { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:44px; padding:11px 12px; border:1px solid #eda7ad; border-radius:7px; background:transparent; color:var(--primary); font-size:11px; font-weight:750; }
.vote-icon { flex:none; font-size:18px; line-height:1; }
.star-icon { display:inline-block; flex:none; width:20px; height:20px; background:#ffda00; clip-path:polygon(50% 0%,65% 32%,100% 38%,75% 64%,80% 100%,50% 83%,20% 100%,25% 64%,0% 38%,35% 32%); vertical-align:-4px; }
.vote-label { white-space:nowrap; }
.vote-count { min-width:20px; padding:3px 5px; border-radius:4px; background:rgba(0,0,0,.07); font-variant-numeric:tabular-nums; font-size:12px; font-weight:800; }
.vote-button.bad:not(:disabled):hover { border-color:var(--primary); }
.vote-button.good { color:#16733d; background:transparent; border-color:#9cc8ae; }
.vote-button.good:not(:disabled):hover { border-color:#16733d; }
.vote-button.selected { opacity:1; box-shadow:0 0 0 1px currentColor; }
.vote-button.bad.selected { color:#fff; background:var(--primary); border-color:var(--primary); box-shadow:0 0 0 1px var(--primary); }
.vote-button.good.selected { background:#0d4c29; border-color:#0d4c29; color:#fff; box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #0d4c29; }
.is-voted .vote-button:not(.selected) { opacity:.6; filter:grayscale(1); color:#77736c; background:transparent; border-color:#d6d1c8; box-shadow:none; }
.is-voted .vote-button { pointer-events:none; }
.vote-state { flex-basis:100%; grid-column:1/-1; text-align:right; font-size:10px; color:#746a5c; }
.is-pending .vote-button { cursor:wait; }
.is-pending .vote-state { color:var(--primary); }
.vote-explanation { margin-bottom:21px; }
.company-more { display:grid; place-items:center; width:44px; min-height:44px; border-radius:6px; background:none; color:#8d8476; font-size:24px; line-height:1; }
.company-more:hover { background:#f5f1e9; color:var(--ink); }
.company-details-counts { margin:24px 0; padding:17px 0; border-block:1px solid var(--line); display:flex; gap:35px; }
.company-details-counts dt { font-size:11px; color:var(--muted); }
.company-details-counts dd { margin:7px 0 0; font-size:23px; font-weight:700; font-variant-numeric:tabular-nums; }
.company-details-counts>div:first-child dd { color:var(--primary); }
.company-details-actions { display:flex; gap:9px; flex-wrap:wrap; }
.company-details-actions .button { flex:1; padding-inline:12px; font-size:11px; white-space:nowrap; }
.respected-search { display:flex; align-items:flex-start; gap:16px; padding:24px; margin-bottom:17px; border:1px solid #ead482; border-radius:11px; background:#fff7d6; }
.respected-search-icon { display:grid; place-items:center; flex-shrink:0; width:34px; height:34px; border-radius:50%; background:var(--yellow); color:#68510b; font-size:21px; font-weight:750; }
.respected-search h2 { margin:2px 0 9px; font-size:17px; line-height:1.5; font-weight:800; letter-spacing:-.15px; color:#51400c; }
.respected-search p { margin:0 0 13px; font-size:12px; line-height:1.7; color:#827044; }
.respected-search button { min-height:34px; padding:4px 0; background:none; color:#9d2029; font-size:12px; font-weight:750; text-decoration:underline; text-underline-offset:4px; }
.saved-section { margin-top:23px; border:1px solid var(--line); border-radius:10px; background:#f7f5ef; }
.saved-section.search-match { border-color:#e3cd7b; }
.saved-section>summary { display:flex; align-items:center; justify-content:space-between; gap:14px; min-height:65px; padding:17px 21px; cursor:pointer; list-style:none; border-radius:10px; }
.saved-section>summary::-webkit-details-marker { display:none; }
.saved-section>summary:hover { background:#f0ede4; }
.saved-section>summary:focus-visible { outline:3px solid var(--primary); outline-offset:4px; }
.saved-title { display:flex; align-items:center; gap:10px; min-width:0; font-size:15px; font-weight:700; }
.saved-name { min-width:0; line-height:1.5; }
.saved-icon { display:grid; place-items:center; flex-shrink:0; width:24px; height:24px; border-radius:50%; background:transparent; font-size:21px; }
.saved-count { flex-shrink:0; padding:3px 7px; border-radius:5px; background:#eae6db; color:#777063; font-size:11px; font-weight:600; font-variant-numeric:tabular-nums; }
.saved-expand { display:flex; align-items:center; flex-shrink:0; gap:12px; color:#8a8274; font-size:11px; }
.saved-chevron { font-size:19px; line-height:1; }
.saved-section[open] .saved-chevron { transform:rotate(180deg); }
.saved-content { padding:0 12px 13px; }
.saved-description { margin:0 8px 15px; color:var(--muted); font-size:11px; line-height:1.7; }
.saved-section .empty-state .button { margin-top:15px; }
.pagination { display:flex; align-items:center; justify-content:center; gap:16px; margin-top:18px; font-size:11px; color:var(--muted); }
.pagination:has(button[hidden]+span:empty) { margin:0; }
.ranking-footnote { margin:19px 0 0; text-align:center; font-size:10px; line-height:1.7; color:#999184; }
.footer { margin-top:35px; padding:22px 0 28px; border-top:1px solid var(--line); display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:15px; }
.footer>span { color:var(--primary); font-size:18px; letter-spacing:-.7px; font-weight:800; }
.footer>div { display:flex; gap:20px; }
.footer-link { font-size:10px; color:#8a8276; background:none; padding:7px 0; }
.footer-link:hover { color:var(--primary); }
.footer-note { flex-basis:100%; margin:0; color:var(--muted); font-size:10px; line-height:1.5; }
.loading-state,.empty-state { padding:45px 20px; text-align:center; border:1px dashed #ded7cc; border-radius:9px; font-size:12px; color:var(--muted); line-height:1.8; }
.empty-state strong { display:block; font-size:17px; color:var(--ink); }
.empty-state p { margin:8px 0 20px; }
.modal { max-width:460px; width:calc(100% - 32px); max-height:calc(100dvh - 40px); overflow:auto; padding:29px; border:1px solid var(--line); border-radius:13px; background:var(--paper); color:var(--ink); box-shadow:0 20px 80px #2d17152b; }
.modal::backdrop { background:#25130f88; backdrop-filter:blur(3px); }
.modal-top { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:21px; }
.eyebrow { font-size:9px; font-weight:750; letter-spacing:1px; color:var(--primary); }
.icon-button { display:grid; place-items:center; flex:none; border:1px solid #e1dbcf; width:30px; height:30px; border-radius:50%; background:none; font-size:22px; line-height:1; }
.modal h2 { margin:0 0 10px; font-size:27px; letter-spacing:-.8px; line-height:1.2; }
.modal-description { margin:0 0 23px; color:var(--muted); font-size:12px; line-height:1.7; }
.modal form { display:flex; flex-direction:column; gap:17px; }
.modal label { display:flex; flex-direction:column; gap:8px; font-size:12px; font-weight:650; }
.modal input,.modal select { width:100%; min-height:45px; padding:12px; border:1px solid #d8d0c3; border-radius:7px; background:#fff; font-size:12px; color:var(--ink); }
.modal small { font-size:10px; font-weight:400; color:var(--muted); line-height:1.5; }
.form-note { margin:0; font-size:11px; line-height:1.7; color:var(--muted); }
.form-error { font-size:12px; color:#b31624; margin:0; line-height:1.6; white-space:pre-line; }
.form-error:empty { display:none; }
.full-width { width:100%; }
.honeypot { position:absolute; left:-10000px; top:0; }
.info-modal p,.info-modal li { font-size:12px; line-height:1.9; color:var(--muted); }
.info-modal strong { color:var(--ink); }
.info-modal h3 { font-size:14px; margin:23px 0 7px; }
.info-modal ul { padding-left:18px; }
.info-modal li { margin-bottom:8px; padding-left:3px; }
.challenge-modal { text-align:center; }
.challenge-modal>p { font-size:12px; color:var(--muted); }
#challenge-widget { display:flex; justify-content:center; margin:24px 0; }
.challenge-modal .button { margin-top:20px; }
.toast { position:fixed; left:50%; bottom:max(20px,env(safe-area-inset-bottom)); transform:translateX(-50%); z-index:100; width:max-content; max-width:calc(100% - 32px); padding:14px 20px; border-radius:8px; background:#2a2521; border-left:4px solid var(--yellow); color:white; font-size:12px; line-height:1.7; box-shadow:0 6px 30px #27191422; }
.sr-only,.skip-link:not(:focus) { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link:focus { position:fixed; top:10px; left:10px; padding:15px; background:#fff; border:2px solid var(--primary); z-index:100; }
.noscript { position:fixed; bottom:0; left:0; right:0; padding:20px; background:var(--primary); color:white; font-size:14px; text-align:center; }
@media(max-width:850px) {
  .wrap { width:calc(100% - 40px); }
  h1 { font-size:36px; letter-spacing:-1.5px; }
  .company-card { padding:12px 14px; }
  .card-main { grid-template-columns:minmax(0,1fr) auto 44px; gap:12px; }
  .vote-button { padding-inline:9px; }
  .vote-controls { grid-template-columns:repeat(2,minmax(148px,max-content)); }
}
@media(max-width:700px) {
  .company-card { padding:8px 10px; }
  .card-main { grid-template-columns:minmax(0,1fr) 44px; gap:4px 6px; }
  .saved-section>summary { min-height:52px; padding:10px 13px; }
  .saved-content { padding:0 6px 7px; }
  .company-description { grid-column:1; grid-row:1; }
  .company-more { grid-column:2; grid-row:1; }
  .vote-controls { grid-column:1/-1; grid-row:2; display:flex; flex-wrap:wrap; }
  .vote-button { flex:1 1 0; width:auto; min-width:max-content; }
}
@media(max-width:600px) {
  body { border-top-width:4px; }
  .wrap { width:calc(100% - 32px); }
  .demo-banner { font-size:8px; gap:5px; }
  .header { height:72px; }
  .brand { font-size:24px; letter-spacing:-1px; }
  .header>.button { min-height:39px; padding:11px 12px; font-size:10px; gap:5px; }
  .ranking-section { padding-top:29px; }
  .section-heading { margin-bottom:22px; }
  h1 { font-size:35px; }
  .section-heading p { font-size:12px; margin-top:11px; }
  .search-form { gap:7px; margin-bottom:12px; }
  .search-field { height:45px; padding:0 10px; gap:7px; }
  .search-field input { font-size:12px; }
  .search-field svg { width:16px; height:16px; }
  .search-field kbd { display:none; }
  .category-field select { height:45px; max-width:131px; font-size:10px; padding:0 6px; }
  .ranking-toolbar { margin-bottom:12px; }
  .sort-field select { font-size:11px; }
  .list-count { font-size:10px; }
  .respected-search { padding:19px 16px; gap:12px; }
  .respected-search h2 { font-size:14px; }
  .respected-search-icon { width:28px; height:28px; font-size:18px; }
  .company-description h3 { font-size:14px; }
  .company-category { font-size:10px; }
  .vote-controls { gap:3px 6px; }
  .vote-button { display:flex; flex-wrap:nowrap; min-height:44px; gap:4px; padding:7px 6px; font-size:10px; }
  .vote-button .vote-icon { font-size:16px; }
  .vote-button .star-icon { width:16px; height:16px; }
  .vote-count { min-width:18px; padding:2px 4px; line-height:1.25; white-space:nowrap; }
  .ranking-footnote { font-size:9px; margin-top:17px; }
  .footer { margin-top:26px; }
  .footer>div { gap:15px; }
  .footer-link { font-size:9px; }
  .footer>span { font-size:16px; }
  .modal { padding:23px; }
  .modal h2 { font-size:25px; }
  .modal-top .eyebrow { font-size:8px; }
  .challenge-modal { padding:20px 12px; }
  .toast { font-size:11px; padding:13px 17px; }
}
@media(max-width:359px) {
  .wrap { width:calc(100% - 24px); }
  h1 { font-size:31px; }
  .brand { font-size:22px; }
  .header>.button { font-size:9px; }
}
@media(prefers-reduced-motion:reduce) {
  :root { scroll-behavior:auto; }
}

.red-section { border-color:#eda7ad; background:#fff7f7; }
.red-section summary { color:var(--primary); }
.red-section .saved-count { background:#ffe1e4; color:var(--primary); }


#red-section { margin-top:0; }
.open-voting { margin-top:35px; scroll-margin-top:20px; }
.open-voting .results-heading { margin:0 0 16px; }
