/*
 * JDS Voting: styles for the voting markup (cards, campaign page, nominate popover, directory switch, certificates).
 * Colours, fonts and sizes use the Branding variables only.
 */

/* card button (Best Of: Business Card): Nominate, Vote, Sign in; 44px tap target */
.jds-cbtn,.jds-cbtn:hover,.jds-cbtn:focus,.jds-cbtn:disabled{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;box-sizing:border-box;margin:0;padding:10px 20px;border:1px solid transparent;border-radius:999px;background-image:none;font-family:var(--font-button), sans-serif;font-size:var(--font-size-small);font-weight:600;line-height:1.2;text-align:center;text-transform:none;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s;}
.jds-cbtn{background-color:var(--color-accent);color:var(--color-ink);}
.jds-cbtn:hover,.jds-cbtn:focus-visible{background-color:var(--color-accent-deep);color:var(--color-paper);}
.jds-cbtn:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px;}
.jds-cbtn.is-done,.jds-cbtn.is-done:hover,.jds-cbtn.is-done:disabled{background-color:var(--color-success-bg);border-color:color-mix(in srgb, var(--color-success) 35%, transparent);color:var(--color-success);cursor:default;}
.jds-cbtn.is-done::before{content:"\2713";font-weight:700;}
.jds-cnom.is-done,.jds-cnom.is-done:hover{cursor:pointer;}
.jds-cnom.is-done:hover,.jds-cnom.is-done:focus-visible{border-color:var(--color-success);}
.jds-cbtn--ghost,.jds-cbtn--ghost:hover,.jds-cbtn--ghost:focus{background-color:var(--color-paper);border-color:var(--color-line-strong);color:var(--color-ink);}
.jds-cbtn--ghost:hover,.jds-cbtn--ghost:focus-visible{border-color:var(--color-ink);}
.jds-cbtn:disabled:not(.is-done){opacity:.6;cursor:progress;}

/* campaign card meta (Best Of: Campaign Card) */
.jds-cmeta{display:flex;flex-direction:column;align-items:flex-start;gap:8px;}
.jds-cmeta__chip{display:inline-flex;padding:5px 12px;border-radius:30px;background:var(--color-accent);color:var(--color-ink);font-family:var(--font-body), sans-serif;font-size:var(--font-size-micro);font-weight:700;letter-spacing:.08em;text-transform:uppercase;}
.jds-cmeta__chip--upcoming,.jds-cmeta__chip--between,.jds-cmeta__chip--closed,.jds-cmeta__chip--results,.jds-cmeta__chip--setup{background:var(--color-ink);}
.jds-cmeta__dates{font-family:var(--font-body), sans-serif;font-size:var(--font-size-small);line-height:1.5;color:var(--color-body-text);}

/* winner certificate (Best Of: Winner Certificate) */
.jds-wc{--wc-navy:var(--color-navy);--wc-gold:var(--color-sun-deep);position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;box-sizing:border-box;padding:28px 22px 22px;text-align:center;background:var(--color-cream) radial-gradient(circle at 50% 0,color-mix(in srgb, var(--color-sun-deep) 14%, transparent),transparent 62%);border:3px solid var(--wc-navy);border-radius:4px;box-shadow:inset 0 0 0 5px var(--color-cream),inset 0 0 0 6px var(--wc-navy),0 6px 18px color-mix(in srgb, var(--color-navy) 8%, transparent);color:var(--wc-navy);transition:transform .2s,box-shadow .2s;}
.jds-wc:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 5px var(--color-cream),inset 0 0 0 6px var(--wc-navy),0 10px 26px color-mix(in srgb, var(--color-navy) 14%, transparent);}
.jds-wc svg{display:block;width:100%;height:100%;fill:var(--wc-gold);}
.jds-wc__corner{position:absolute;width:13px;height:13px;}
.jds-wc__corner--tl{top:13px;left:13px;}
.jds-wc__corner--tr{top:13px;right:13px;}
.jds-wc__corner--bl{bottom:13px;left:13px;}
.jds-wc__corner--br{bottom:13px;right:13px;}
.jds-wc__badge{display:flex;flex-direction:column;align-items:center;justify-content:center;width:76px;height:76px;margin:0 0 6px;border-radius:50%;background:var(--wc-navy);border:2px solid var(--wc-gold);box-shadow:0 0 0 3px var(--color-cream),0 0 0 4px var(--wc-gold);color:var(--color-paper);line-height:1;}
.jds-wc__badge-top{font-family:var(--font-body), sans-serif;font-size:8px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;}
.jds-wc__badge-main{margin:3px 0 2px;font-family:var(--font-heading), serif;font-size:var(--font-size-ui);font-style:italic;font-weight:600;}
.jds-wc__badge-year{font-family:var(--font-body), sans-serif;font-size:var(--font-size-micro);font-weight:700;letter-spacing:.1em;color:var(--wc-gold);}
.jds-wc__cat{margin:0;font-family:var(--font-heading), serif;font-size:var(--font-size-title-xs);font-weight:600;line-height:1.15;color:var(--wc-navy);}
.jds-wc__rule{display:flex;align-items:center;gap:8px;margin:2px 0;}
.jds-wc__rule span{display:block;width:36px;height:1px;background:var(--wc-gold);}
.jds-wc__rule svg{width:11px;height:11px;}
.jds-wc__name{margin:0;font-family:var(--font-body), sans-serif;font-size:var(--font-size-lead);font-weight:700;line-height:1.25;color:var(--wc-navy);}
.jds-wc__name a{color:inherit;text-decoration:none;}
.jds-wc__name a:hover{color:var(--color-accent);}
.jds-wc__by{margin:auto 0 0;padding-top:6px;font-family:var(--font-body), sans-serif;font-size:var(--font-size-micro);font-style:italic;color:var(--color-body-text);}

/* campaign template: cmps-status shortcode */
.jds-cstatus{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;max-width:none;margin:0;padding:20px 24px;box-sizing:border-box;border:1px solid var(--color-line);border-radius:20px;background:var(--color-paper);font-family:var(--font-body), sans-serif;}
.jds-cstatus__chip{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--color-accent);color:var(--color-ink);font-family:var(--font-body), sans-serif;font-size:var(--font-size-caption);font-weight:700;line-height:1.2;letter-spacing:2px;text-transform:uppercase;}
.jds-cstatus--upcoming .jds-cstatus__chip,.jds-cstatus--between .jds-cstatus__chip,.jds-cstatus--closed .jds-cstatus__chip{background:var(--color-ink);}
.jds-cstatus__head{margin:0;font-family:var(--font-heading), serif;font-size:var(--font-size-title-xs);font-weight:600;line-height:1.25;color:var(--color-ink);}
.jds-cstatus__text{margin:0;font-size:var(--font-size-small);line-height:1.5;color:var(--color-body-text);}
.jds-cstatus__cta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:0;font-size:var(--font-size-meta);color:var(--color-body-text);}
.jds-cstatus__btn{display:inline-flex;align-items:center;min-height:44px;box-sizing:border-box;padding:10px 22px;border-radius:999px;background:var(--color-accent);color:var(--color-ink);font-family:var(--font-button), sans-serif;font-size:var(--font-size-small);font-weight:600;text-decoration:none;transition:background-color .2s;}
.jds-cstatus__btn:hover,.jds-cstatus__btn:focus-visible{background:var(--color-accent-deep);color:var(--color-paper);}
.jds-cstatus__btn:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px;}
@media (max-width:767px){.jds-cstatus{padding:18px;}.jds-cstatus__head{flex:1 1 100%;font-size:var(--font-size-lead);}.jds-cstatus__cta{margin:0;}}

/* campaign template: cmps-timeline shortcode */
.jds-ctl{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.jds-ctl__step{display:flex;gap:10px;margin:0;padding:12px;border-radius:12px;background:var(--color-paper);border:1px solid color-mix(in srgb, var(--color-ink) 10%, transparent);}
.jds-ctl__step.is-current{border-color:var(--color-accent);background:var(--color-cream);box-shadow:0 14px 30px -18px color-mix(in srgb, var(--color-accent) 60%, transparent);}
.jds-ctl__step.is-done,.jds-ctl__step.is-skipped{opacity:.65;}
.jds-ctl__num{flex:0 0 28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-cream);font-family:var(--font-heading), serif;font-size:var(--font-size-caption);font-weight:600;color:var(--color-ink);}
.jds-ctl__step.is-current .jds-ctl__num{background:var(--color-accent);color:var(--color-ink);}
.jds-ctl__body{display:flex;flex-direction:column;gap:2px;min-width:0;}
.jds-ctl__state{font-family:var(--font-body), sans-serif;font-size:var(--font-size-micro);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-body-text);}
.jds-ctl__step.is-current .jds-ctl__state{color:var(--color-accent-deep);}
.jds-ctl__title{font-family:var(--font-heading), serif;font-size:var(--font-size-ui);font-weight:600;line-height:1.2;color:var(--color-ink);}
.jds-ctl__date{font-family:var(--font-body), sans-serif;font-size:var(--font-size-caption);font-weight:600;color:var(--color-ink);}
.jds-ctl__text{font-family:var(--font-body), sans-serif;font-size:var(--font-size-meta);line-height:1.5;color:var(--color-body-text);}
@media (max-width:1024px){.jds-ctl{grid-template-columns:minmax(0,1fr);gap:12px;}}

/* archive: featured campaign, gallery, logos */
.jds-feat{margin-bottom:48px;display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;box-sizing:border-box;padding:32px;border:1px solid color-mix(in srgb, var(--color-ink) 12%, transparent);border-radius:20px;background:var(--color-paper);box-shadow:0 24px 50px -30px color-mix(in srgb, var(--color-ink) 40%, transparent);font-family:var(--font-body), sans-serif;color:var(--color-ink);}
.jds-feat__logo{width:160px;height:160px;border-radius:50%;object-fit:cover;background:var(--color-cream);}
.jds-feat__title{margin:0 0 8px;font-size:var(--font-size-section);line-height:1.1;}
.jds-feat__title a{color:inherit;text-decoration:none;}
.jds-feat__dates{margin:0 0 10px;font-size:var(--font-size-small);opacity:.75;}
.jds-feat__text{margin:0 0 16px;font-size:var(--font-size-ui);line-height:1.5;}
.jds-feat__btn{display:inline-block;padding:12px 22px;border-radius:999px;background:var(--color-accent);color:var(--color-ink);font-weight:700;text-decoration:none;}
.jds-feat__photos{display:flex;gap:8px;margin-top:18px;}
.jds-feat__photos img{width:64px;height:64px;border-radius:10px;object-fit:cover;}
.jds-cgal{margin:0 0 32px;font-family:var(--font-body), sans-serif;}
.jds-cgal__head{margin:0 0 18px;font-size:var(--font-size-subsection);}
.jds-cgal__title{margin:0 0 12px;font-size:var(--font-size-title-xs);}
.jds-cgal__more{display:inline-block;margin-top:10px;font-weight:700;}
.jds-wc__badge--logo{padding:0;overflow:visible;background:none;border:0;border-radius:0;box-shadow:none;}
.jds-wc__badge--logo img{display:block;width:100%;height:100%;border-radius:0;object-fit:contain;}
.jds-cmeta__logo{width:44px;height:44px;margin-right:10px;border-radius:50%;object-fit:cover;vertical-align:middle;}
@media(max-width:640px){.jds-feat{grid-template-columns:1fr;padding:22px;text-align:center;justify-items:center;}.jds-feat__logo{width:120px;height:120px;}.jds-feat__photos{justify-content:center;}}

/* campaign page: tabs and write-in dialog */
.jds-ctabs{display:inline-flex;gap:4px;margin:4px 0 8px;padding:4px;border:1px solid var(--color-line);border-radius:999px;background:var(--color-paper);}
.jds-ctabs[hidden]{display:none;}
.jds-ctabs__tab,.jds-ctabs__tab:hover,.jds-ctabs__tab:focus{min-height:40px;margin:0;padding:8px 22px;border:0;border-radius:999px;background:transparent;font-family:var(--font-button), sans-serif;font-size:var(--font-size-small);font-weight:600;line-height:1.2;text-transform:none;color:var(--color-body-text);cursor:pointer;}
.jds-ctabs__tab:hover{color:var(--color-ink);}
.jds-ctabs__tab.is-active,.jds-ctabs__tab.is-active:hover{background:var(--color-ink);color:var(--color-paper);}
.jds-ctabs__tab:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px;}
.jds-ctabs__tab[hidden]{display:none;}
.jds-wi{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin:28px 0 0;padding:20px 24px;border:1px dashed var(--color-line-strong);border-radius:20px;font-family:var(--font-body), sans-serif;font-size:var(--font-size-ui);color:var(--color-ink);}
.jds-wi > span{font-family:var(--font-heading), serif;font-size:var(--font-size-title-xs);font-weight:600;line-height:1.25;}
.jds-wi__link,.jds-wi__link:hover,.jds-wi__link:focus{display:inline-flex;align-items:center;min-height:44px;box-sizing:border-box;margin:0;padding:10px 22px;border:1px solid var(--color-ink);border-radius:999px;background:var(--color-paper);font-family:var(--font-button), sans-serif;font-size:var(--font-size-small);font-weight:600;line-height:1.2;color:var(--color-ink);text-decoration:none;text-transform:none;cursor:pointer;transition:background-color .2s,color .2s;}
.jds-wi__link:hover,.jds-wi__link:focus-visible{background:var(--color-ink);color:var(--color-paper);}
.jds-wi__link:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px;}
.jds-wdlg{width:min(480px,calc(100vw - 24px));max-height:calc(100vh - 24px);padding:0;border:0;border-radius:24px;box-shadow:0 30px 70px -24px color-mix(in srgb, var(--color-ink) 55%, transparent);}
.jds-wdlg::backdrop{background:var(--color-overlay);}
.jds-wdlg__form{display:flex;flex-direction:column;gap:16px;margin:0;padding:28px;font-family:var(--font-body), sans-serif;color:var(--color-ink);}
.jds-wdlg h3{margin:0;font-family:var(--font-heading), serif;font-size:var(--font-size-title);font-weight:600;line-height:1.15;}
.jds-wdlg__lead{margin:0;font-size:var(--font-size-small);line-height:1.55;color:var(--color-body-text);}
.jds-wdlg label{display:flex;flex-direction:column;gap:6px;font-size:var(--font-size-small);font-weight:600;}
.jds-wdlg label span{font-weight:400;color:var(--color-body-text);}
.jds-wdlg input,.jds-wdlg select{width:100%;height:48px;box-sizing:border-box;padding:0 16px;border:1px solid var(--color-line-strong);border-radius:12px;background:var(--color-paper);font-family:inherit;font-size:var(--font-size-ui);font-weight:400;color:inherit;}
.jds-wdlg input:focus,.jds-wdlg select:focus{outline:3px solid var(--color-focus-ring);outline-offset:1px;border-color:var(--color-accent);}
.jds-wdlg__msg{margin:0;padding:12px 14px;border-radius:12px;background:var(--color-success-bg);font-size:var(--font-size-small);line-height:1.45;color:var(--color-success);}
.jds-wdlg__msg.is-error{background:var(--color-error-bg);color:var(--color-error);}
.jds-wdlg__msg a{color:inherit;font-weight:700;text-decoration:underline;}
.jds-wdlg__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:4px;}
.jds-wdlg label.jds-wdlg__check{flex-direction:row;align-items:center;gap:10px;font-weight:600;}
.jds-wdlg label.jds-wdlg__check input{width:20px;height:20px;accent-color:var(--color-accent);}
.jds-wdlg__actions button,.jds-wdlg__actions button:hover{min-height:44px;margin:0;padding:10px 22px;border:1px solid var(--color-accent);border-radius:999px;background:var(--color-accent);font-family:var(--font-button), sans-serif;font-size:var(--font-size-small);font-weight:600;text-transform:none;color:var(--color-ink);cursor:pointer;}
.jds-wdlg__actions button:hover{background:var(--color-accent-deep);border-color:var(--color-accent-deep);}
.jds-wdlg__actions .jds-wdlg__cancel,.jds-wdlg__actions .jds-wdlg__cancel:hover{background:var(--color-paper);border-color:var(--color-line-strong);color:var(--color-ink);}
.jds-wdlg__actions .jds-wdlg__cancel:hover{border-color:var(--color-ink);}
.jds-wdlg__actions button:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px;}
.jds-wdlg__actions button:disabled{opacity:.6;cursor:default;}
@media (max-width:767px){.jds-wi{padding:18px;}.jds-wi__link{width:100%;justify-content:center;}.jds-wdlg__form{padding:22px 18px;}.jds-wdlg__actions button{flex:1 1 auto;}}

/* directory: businesses / people switch */
.jds-dswitch{display:inline-flex;gap:4px;margin:4px 0 12px;padding:4px;border:1px solid color-mix(in srgb, var(--color-ink) 12%, transparent);border-radius:999px;background:var(--color-cream);}.jds-dswitch__tab{padding:6px 16px;border-radius:999px;font-family:var(--font-body), sans-serif;font-size:var(--font-size-meta);font-weight:700;line-height:1.2;color:var(--color-body-text);text-decoration:none;}.jds-dswitch__tab:hover{color:var(--color-ink);}.jds-dswitch__tab.is-active{background:var(--color-ink);color:var(--color-paper);}

/* listing single: live campaign box */
.jds-lc{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:0 0 20px;padding:14px 16px;border:1px solid color-mix(in srgb, var(--color-ink) 12%, transparent);border-radius:12px;background:var(--color-cream);font-family:var(--font-body), sans-serif;}.jds-lc__kicker{margin:0;font-size:var(--font-size-micro);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent-deep);}.jds-lc__text{margin:0;font-size:var(--font-size-small);line-height:1.5;color:var(--color-ink);}.jds-lc__list{display:flex;flex-direction:column;gap:6px;width:100%;margin:0;padding:0;list-style:none;}.jds-lc__list li{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;font-size:var(--font-size-meta);font-weight:600;color:var(--color-ink);}.jds-lc__all{font-size:var(--font-size-caption);font-weight:700;color:var(--color-body-text);text-decoration:underline;text-underline-offset:3px;}.jds-lc .jds-cbtn,.jds-lc .jds-cbtn:hover,.jds-lc .jds-cbtn:focus,.jds-lc .jds-cbtn:disabled{display:inline-flex;align-items:center;justify-content:center;margin:0;padding:6px 14px;border:1px solid transparent;border-radius:30px;background-image:none;font-family:inherit;font-size:var(--font-size-meta);font-weight:700;line-height:1.2;text-transform:none;text-decoration:none;white-space:nowrap;cursor:pointer;}.jds-lc .jds-cbtn{background-color:var(--color-accent);color:var(--color-ink);}.jds-lc .jds-cbtn:hover,.jds-lc .jds-cbtn:focus-visible{background-color:var(--color-ink);color:var(--color-paper);}.jds-lc .jds-cbtn.is-done,.jds-lc .jds-cbtn.is-done:hover{background-color:var(--color-success-bg);border-color:color-mix(in srgb, var(--color-success) 30%, transparent);color:var(--color-success);cursor:default;}.jds-lc .jds-cbtn--ghost,.jds-lc .jds-cbtn--ghost:hover{background-color:var(--color-paper);border-color:color-mix(in srgb, var(--color-ink) 20%, transparent);color:var(--color-ink);}

/* campaign page: toast and nominate popover */
.jds-ctoast{position:fixed;left:50%;bottom:24px;z-index:9999;display:flex;align-items:center;gap:12px;transform:translateX(-50%);width:max-content;max-width:min(560px,calc(100vw - 24px));box-sizing:border-box;padding:14px 22px 14px 14px;border-radius:16px;background:var(--color-ink);color:var(--color-paper);font-family:var(--font-body), sans-serif;font-size:var(--font-size-ui);font-weight:600;line-height:1.4;box-shadow:0 24px 50px -18px color-mix(in srgb, var(--color-ink) 60%, transparent);}
.jds-ctoast::before{content:"\2713";flex:0 0 28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-sun);color:var(--color-ink);font-weight:700;}
.jds-ctoast.is-error{background:var(--color-error);}
.jds-ctoast.is-error::before{content:"!";background:var(--color-paper);color:var(--color-error);}
.jds-ctoast[hidden]{display:none;}
.jds-cpop{position:absolute;top:0;left:0;z-index:9998;display:flex;flex-direction:column;gap:12px;width:380px;max-width:calc(100vw - 24px);box-sizing:border-box;padding:18px;border:1px solid var(--color-line);border-radius:20px;background:var(--color-paper);box-shadow:0 30px 60px -24px color-mix(in srgb, var(--color-ink) 50%, transparent);font-family:var(--font-body), sans-serif;}
.jds-cpop[hidden]{display:none;}
.jds-cpop .jds-cnom__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.jds-cpop .jds-cnom__label{margin:0;font-family:var(--font-heading), serif;font-size:var(--font-size-lead);font-weight:600;line-height:1.3;color:var(--color-ink);}
.jds-cpop .jds-cnom__close,.jds-cpop .jds-cnom__close:hover,.jds-cpop .jds-cnom__close:focus{flex:0 0 40px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;margin:-6px -6px 0 0;padding:0;border:1px solid var(--color-line);border-radius:50%;background:var(--color-paper);font-family:var(--font-body), sans-serif;font-size:var(--font-size-title-xs);line-height:1;color:var(--color-ink);cursor:pointer;}
.jds-cpop .jds-cnom__close:hover{border-color:var(--color-ink);}
.jds-cpop .jds-cnom__search,.jds-cpop .jds-cnom__search:focus{width:100%;height:44px;box-sizing:border-box;margin:0;padding:0 18px;border:1px solid var(--color-line-strong);border-radius:999px;background:var(--color-cream);font-family:inherit;font-size:var(--font-size-ui);color:var(--color-ink);outline:none;}
.jds-cpop .jds-cnom__search:focus{border-color:var(--color-accent);background:var(--color-paper);box-shadow:0 0 0 3px var(--color-focus-ring);}
.jds-cpop .jds-cnom__list{display:flex;flex-direction:column;gap:2px;max-height:320px;margin:0 -6px;padding:0 6px;overflow-y:auto;overscroll-behavior:contain;list-style:none;}
.jds-cpop .jds-cnom__list li{margin:0;}
.jds-cpop .jds-cnom__list li[hidden]{display:none;}
.jds-cpop .jds-cnom__opt,.jds-cpop .jds-cnom__opt:hover,.jds-cpop .jds-cnom__opt:focus,.jds-cpop .jds-cnom__opt:disabled{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:44px;box-sizing:border-box;margin:0;padding:10px 12px;border:0;border-radius:12px;background:transparent;font-family:inherit;font-size:var(--font-size-small);font-weight:500;line-height:1.3;text-align:left;text-transform:none;color:var(--color-ink);cursor:pointer;}
.jds-cpop .jds-cnom__opt:hover,.jds-cpop .jds-cnom__opt:focus-visible{background:var(--color-sand);}
.jds-cpop .jds-cnom__opt:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;}
.jds-cpop .jds-cnom__opt span{min-width:0;}
.jds-cpop .jds-cnom__opt em{flex:0 0 auto;font-style:normal;font-size:var(--font-size-caption);font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--color-body-text);}
.jds-cpop .jds-cnom__opt:hover em,.jds-cpop .jds-cnom__opt:focus-visible em{color:var(--color-accent-deep);}
.jds-cpop .jds-cnom__opt.is-done,.jds-cpop .jds-cnom__opt.is-done:hover{background:var(--color-success-bg);cursor:default;color:var(--color-ink);}
.jds-cpop .jds-cnom__opt.is-done em{color:var(--color-success);}
.jds-cpop .jds-cnom__opt.is-done em::before{content:"\2713  ";}
.jds-cpop .jds-cnom__none{margin:0;padding:8px 12px;font-size:var(--font-size-small);color:var(--color-body-text);}
@media (max-width:767px){.jds-cpop{position:fixed;top:auto !important;right:0;bottom:0;left:0 !important;width:auto;max-width:none;max-height:85vh;padding:20px 16px calc(16px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;box-shadow:0 -20px 60px -10px color-mix(in srgb, var(--color-ink) 45%, transparent);}.jds-cpop .jds-cnom__list{max-height:55vh;}}

/* campaign page: voting ballot toolbar (built by the campaign page script) and award groups */
.jds-bt{position:sticky;top:var(--jds-bt-top, 12px);z-index:30;display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin:0 0 28px;padding:14px 16px 14px 22px;box-sizing:border-box;border:1px solid var(--color-line);border-radius:20px;background:var(--color-paper);box-shadow:0 18px 40px -26px color-mix(in srgb, var(--color-ink) 45%, transparent);font-family:var(--font-body), sans-serif;}
.jds-bt__progress{display:flex;flex-direction:column;gap:8px;flex:1 1 220px;min-width:0;}
.jds-bt__count{font-size:var(--font-size-small);color:var(--color-body-text);}
.jds-bt__count strong{font-family:var(--font-heading), serif;font-size:var(--font-size-title-xs);font-weight:600;color:var(--color-ink);}
.jds-bt__count a{font-weight:700;color:var(--color-accent-deep);text-decoration:underline;text-underline-offset:3px;}
.jds-bt__bar{display:block;height:6px;border-radius:999px;background:var(--color-sand);overflow:hidden;}
.jds-bt__bar span{display:block;height:100%;width:0;border-radius:inherit;background:var(--color-teal);transition:width .4s ease;}
.jds-bt__tools{display:flex;flex-wrap:wrap;gap:10px;flex:2 1 420px;justify-content:flex-end;}
.jds-bt .jds-bt__find,.jds-bt .jds-bt__jump{height:44px;box-sizing:border-box;margin:0;padding:0 18px;border:1px solid var(--color-line-strong);border-radius:999px;background-color:var(--color-cream);font-family:inherit;font-size:var(--font-size-small);color:var(--color-ink);}
.jds-bt .jds-bt__find{flex:1 1 200px;min-width:0;}
.jds-bt .jds-bt__jump{flex:1 1 220px;max-width:320px;padding-right:40px;}
.jds-bt .jds-bt__find:focus,.jds-bt .jds-bt__jump:focus{outline:3px solid var(--color-focus-ring);outline-offset:1px;border-color:var(--color-accent);background-color:var(--color-paper);}
.jds-bt__none{flex:1 1 100%;margin:0;font-size:var(--font-size-small);color:var(--color-body-text);}
.jds-bt__none[hidden]{display:none;}
.jds-ag{padding-top:32px;border-top:1px solid var(--color-line);scroll-margin-top:calc(var(--jds-bt-top, 12px) + 120px);}
.jds-ag.is-first{padding-top:0;border-top:0;}
.jds-ag[hidden]{display:none !important;}
.jds-ag__meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:-2px 0 16px;font-family:var(--font-body), sans-serif;font-size:var(--font-size-small);color:var(--color-body-text);}
.jds-ag__chip{display:none;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:var(--color-success-bg);font-size:var(--font-size-caption);font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--color-success);}
.jds-ag__chip::before{content:"\2713";}
.jds-ag.is-voted .jds-ag__chip{display:inline-flex;}
@media (max-width:767px){.jds-bt{padding:14px;border-radius:16px;}.jds-bt__tools{flex-basis:100%;}.jds-bt .jds-bt__jump{max-width:none;}.jds-ag{padding-top:24px;}}

/* campaign page: winner button */

/* business page: awards won */
.jds-ba__list{display:flex;flex-wrap:wrap;gap:24px;}
.jds-ba__item{display:flex;flex-direction:column;align-items:center;gap:6px;width:140px;text-align:center;text-decoration:none;color:var(--color-ink);}
.jds-ba__item:hover .jds-ba__logo{transform:translateY(-2px);}
.jds-ba__logo{display:block;width:104px;height:104px;transition:transform .2s;}
.jds-ba__logo img{display:block;width:100%;height:100%;border-radius:0;object-fit:contain;}
.jds-ba__badge{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;background:var(--color-navy);color:var(--color-cream);border:4px solid var(--color-sun-deep);box-sizing:border-box;font-family:var(--font-heading),serif;font-size:var(--font-size-title-xs);}
.jds-ba__year{font-family:var(--font-body),sans-serif;font-size:var(--font-size-small);font-weight:700;line-height:1.25;}
.jds-ba__awards{font-family:var(--font-body),sans-serif;font-size:var(--font-size-caption);line-height:1.3;color:var(--color-body-text);}

/* winner certificates: compact, four to a row */
.jds-wc{gap:4px;padding:20px 14px 16px;border-width:2px;}
.jds-wc__corner{width:10px;height:10px;}
.jds-wc__corner--tl{top:9px;left:9px;}
.jds-wc__corner--tr{top:9px;right:9px;}
.jds-wc__corner--bl{bottom:9px;left:9px;}
.jds-wc__corner--br{bottom:9px;right:9px;}
.jds-wc__badge{width:60px;height:60px;margin:0 0 4px;}
.jds-wc__cat{font-size:var(--font-size-ui);}
.jds-wc__name{font-size:var(--font-size-ui);}
.jds-wc__rule span{width:28px;}

/* winner tiles: put the class jds-wc-tiles on the listing grid for a card look (logo left, award label, winner name) */
.jds-wc-tiles .jds-wc{display:grid;grid-template-columns:72px minmax(0,1fr);grid-template-areas:"badge cat" "badge name";align-content:center;align-items:center;gap:4px 18px;padding:22px 24px;text-align:left;background:var(--color-paper);border:1px solid var(--color-line);border-radius:20px;box-shadow:none;color:var(--color-ink);}
.jds-wc-tiles .jds-wc:hover{transform:translateY(-2px);box-shadow:0 10px 26px var(--color-shadow-soft);}
.jds-wc-tiles .jds-wc__corner,.jds-wc-tiles .jds-wc__rule{display:none;}
.jds-wc-tiles .jds-wc__badge{grid-area:badge;width:72px;height:72px;margin:0;}
.jds-wc-tiles .jds-wc__cat{grid-area:cat;align-self:end;font-family:var(--font-body),sans-serif;font-size:var(--font-size-caption);font-weight:700;line-height:1.3;letter-spacing:2px;text-transform:uppercase;color:var(--color-sun-deep);}
.jds-wc-tiles .jds-wc__name{grid-area:name;align-self:start;font-family:var(--font-heading),serif;font-size:var(--font-size-title-sm);font-weight:600;line-height:1.15;color:var(--color-ink);}
@media (max-width:767px){
.jds-wc-tiles .jds-wc{grid-template-columns:56px minmax(0,1fr);gap:4px 14px;padding:18px;}
.jds-wc-tiles .jds-wc__badge{width:56px;height:56px;}
.jds-wc-tiles .jds-wc__name{font-size:var(--font-size-title-xs);}
}

/* slimmer timeline and campaign card dates */
.jds-ctl{margin-top:0;gap:8px;}
.jds-ctl__step{padding:10px 12px;}
.jds-cmeta__dates{display:flex;flex-direction:column;gap:2px;}
.jds-cmeta__line{display:block;}
.jds-cmeta__line strong{color:var(--color-ink);}

/* campaign page: only what the site's global classes do not already cover */
.jds-anchor{display:block;height:0;scroll-margin-top:96px;}
.jds-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;}
.jds-stat{display:flex;flex-direction:column;gap:6px;padding:12px 20px;}
.jds-stat-line{display:block;}
.jds-cgal__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;}
.jds-cgal__grid a{display:block;}
.jds-cgal__title{margin:0 0 12px;font-family:var(--font-body), sans-serif;font-size:var(--font-size-lead);}

/* Best Of sponsors on the campaign page: one row per tier, highest first. Each logo sits in a metal frame;
   the tone comes from the Branding award colours (--color-tier-*), lighter and darker shades are mixed from it.
   Platinum: largest, double inner rule and sheen. Gold: single rule and sheen. Silver: sheen. Bronze: plain edge. */
.jds-sp{display:flex;flex-direction:column;gap:48px;margin-top:24px;font-family:var(--font-body),sans-serif;}
.jds-sp__tier{--sp-metal:var(--color-line-strong);--sp-size:120px;--sp-edge:6px;--sp-radius:18px;--sp-name:var(--font-size-small);--sp-rule:0;--sp-sheen:0;}
.jds-sp__tier--platinum{--sp-metal:var(--color-tier-platinum);}
.jds-sp__tier--gold{--sp-metal:var(--color-tier-gold);}
.jds-sp__tier--silver{--sp-metal:var(--color-tier-silver);}
.jds-sp__tier--bronze{--sp-metal:var(--color-tier-bronze);}
.jds-sp__tier--r1{--sp-size:190px;--sp-edge:12px;--sp-radius:28px;--sp-name:var(--font-size-ui);--sp-rule:1;--sp-sheen:1;}
.jds-sp__tier--r2{--sp-size:168px;--sp-edge:10px;--sp-radius:24px;--sp-name:var(--font-size-body);--sp-rule:1;--sp-sheen:1;}
.jds-sp__tier--r3{--sp-size:140px;--sp-edge:8px;--sp-radius:20px;--sp-sheen:1;}
.jds-sp .jds-sp__label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.jds-sp .jds-sp__list{display:flex;flex-wrap:wrap;justify-content:center;gap:40px 36px;margin:0;padding:0;list-style:none;}
.jds-sp__tier--r1 .jds-sp__list{gap:44px 36px;}
.jds-sp__item{margin:0;padding:0;}
.jds-sp .jds-sp__link{display:flex;flex-direction:column;align-items:center;gap:26px;width:var(--sp-size);border-radius:var(--sp-radius);text-align:center;text-decoration:none;color:var(--color-ink);}
.jds-sp .jds-sp__link:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:6px;}
.jds-sp__frame{position:relative;display:block;width:var(--sp-size);aspect-ratio:1;box-sizing:border-box;padding:var(--sp-edge);border-radius:var(--sp-radius);background:linear-gradient(145deg,color-mix(in srgb, var(--sp-metal) 40%, var(--color-paper)) 0%,var(--sp-metal) 38%,color-mix(in srgb, var(--sp-metal) 72%, var(--color-ink)) 62%,color-mix(in srgb, var(--sp-metal) 55%, var(--color-paper)) 100%);box-shadow:0 18px 34px -20px var(--color-shadow-lifted),0 2px 4px var(--color-shadow-soft);transition:transform .25s ease,box-shadow .25s ease;}
.jds-sp__frame::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:var(--sp-sheen);background:linear-gradient(115deg,transparent 35%,color-mix(in srgb, var(--color-paper) 55%, transparent) 48%,transparent 60%) no-repeat;background-size:260% 100%;background-position:100% 0;mix-blend-mode:soft-light;transition:background-position .7s ease;}
.jds-sp__logo{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-sizing:border-box;padding:16%;border-radius:calc(var(--sp-radius) - var(--sp-edge));background:var(--color-paper);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--sp-metal) 60%, var(--color-ink)),inset 0 3px 8px var(--color-shadow-soft);}
.jds-sp__logo::before{content:"";position:absolute;inset:7px;border-radius:calc(var(--sp-radius) - var(--sp-edge) - 6px);border:1px solid color-mix(in srgb, var(--sp-metal) 70%, transparent);opacity:var(--sp-rule);pointer-events:none;}
.jds-sp__tier--r1 .jds-sp__logo::before{box-shadow:0 0 0 3px var(--color-paper),0 0 0 4px color-mix(in srgb, var(--sp-metal) 55%, transparent);}
.jds-sp .jds-sp__logo img{position:relative;display:block;width:100%;height:100%;border-radius:0;object-fit:contain;}
.jds-sp__mono{position:relative;font-family:var(--font-heading),serif;font-size:var(--font-size-title);font-weight:600;line-height:1;letter-spacing:1px;color:color-mix(in srgb, var(--sp-metal) 45%, var(--color-ink));}
.jds-sp__tier--r1 .jds-sp__mono{font-size:var(--font-size-heading-lg);}
.jds-sp__tier--r2 .jds-sp__mono{font-size:var(--font-size-heading);}
.jds-sp__tier--r3 .jds-sp__mono{font-size:var(--font-size-heading-sm);}
.jds-sp__plate{position:absolute;left:50%;bottom:0;z-index:2;transform:translate(-50%,50%);padding:5px 14px;border:1px solid color-mix(in srgb, var(--sp-metal) 80%, var(--color-ink));border-radius:6px;background:linear-gradient(180deg,color-mix(in srgb, var(--sp-metal) 25%, var(--color-paper)),color-mix(in srgb, var(--sp-metal) 50%, var(--color-paper)));box-shadow:0 4px 10px -4px var(--color-shadow-card),inset 0 1px 0 color-mix(in srgb, var(--color-paper) 70%, transparent);font-family:var(--font-body),sans-serif;font-size:var(--font-size-micro);font-weight:700;line-height:1.2;letter-spacing:2px;text-transform:uppercase;white-space:nowrap;color:var(--color-ink);}
.jds-sp__tier--r1 .jds-sp__plate{padding:6px 18px;font-size:var(--font-size-caption);letter-spacing:3px;}
.jds-sp__name{font-size:var(--sp-name);font-weight:600;line-height:1.3;}
.jds-sp__link:hover .jds-sp__frame,.jds-sp__link:focus-visible .jds-sp__frame{transform:translateY(-3px);box-shadow:0 24px 40px -20px var(--color-shadow-lifted),0 2px 4px var(--color-shadow-soft);}
.jds-sp__link:hover .jds-sp__frame::after,.jds-sp__link:focus-visible .jds-sp__frame::after{background-position:0 0;}
.jds-sp__link:hover .jds-sp__name,.jds-sp__link:focus-visible .jds-sp__name{color:var(--color-accent-deep);text-decoration:underline;text-underline-offset:3px;}
@media (prefers-reduced-motion:reduce){.jds-sp__frame,.jds-sp__frame::after{transition:none;}}
@media (max-width:1024px){
.jds-sp__tier--r1{--sp-size:180px;}
.jds-sp__tier--r2{--sp-size:148px;}
.jds-sp__tier--r3{--sp-size:124px;}
}
@media (max-width:767px){
.jds-sp{gap:40px;}
.jds-sp__tier{--sp-size:96px;--sp-edge:5px;--sp-radius:16px;--sp-name:var(--font-size-caption);}
.jds-sp__tier--r1{--sp-size:150px;--sp-edge:9px;--sp-radius:22px;--sp-name:var(--font-size-small);}
.jds-sp__tier--r2{--sp-size:128px;--sp-edge:8px;--sp-radius:20px;--sp-name:var(--font-size-small);}
.jds-sp__tier--r3{--sp-size:108px;--sp-edge:6px;--sp-radius:18px;}
.jds-sp .jds-sp__list,.jds-sp__tier--r1 .jds-sp__list{gap:36px 18px;}
.jds-sp__logo::before{inset:5px;}
.jds-sp__tier--r1 .jds-sp__mono{font-size:var(--font-size-heading);}
.jds-sp__tier--r2 .jds-sp__mono{font-size:var(--font-size-heading-sm);}
.jds-sp__tier--r3 .jds-sp__mono{font-size:var(--font-size-title);}
.jds-sp__tier--r1 .jds-sp__plate{font-size:var(--font-size-micro);letter-spacing:2px;padding:5px 14px;}
}

/* Best Of sponsor badge on a business page (sidebar), kept apart from the Community Sponsor card */
.jds-bs{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:20px;margin-bottom:4px;background:var(--color-paper);border-radius:16px;box-shadow:0 14px 30px -20px var(--color-shadow-card);font-family:var(--font-body),sans-serif;}
.jds-bs__badge{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:30px;background:var(--color-teal-tint);color:var(--color-teal-deep);font-size:var(--font-size-meta);font-weight:700;letter-spacing:2px;text-transform:uppercase;}
.jds-bs .jds-bs__list{display:flex;flex-direction:column;gap:10px;width:100%;margin:0;padding:0;list-style:none;}
.jds-bs .jds-bs__item{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--color-ink);}
.jds-bs__logo{flex:0 0 44px;width:44px;height:44px;border-radius:0;object-fit:contain;}
.jds-bs__text{font-size:var(--font-size-small);font-weight:600;line-height:1.35;}
.jds-bs__item:hover .jds-bs__text{color:var(--color-teal-deep);text-decoration:underline;}
.jds-bs__tier{font-weight:700;white-space:nowrap;color:var(--color-sun-deep);}
.jds-bs__tier--platinum{color:var(--color-navy);}
.jds-bs__tier--silver{color:var(--color-body-text);}
.jds-bs__tier--bronze{color:var(--color-accent-deep);}
/* Awards grouped by directory category (1.14): headings between listing items, picker groups, "This year's awards". */
.jds-lhead{flex:0 0 calc(100% - 16px);display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;box-sizing:border-box;margin:36px 8px 12px;padding:0 0 12px;border-bottom:1px solid var(--color-line-strong);font-family:var(--font-body), sans-serif;}
.jds-lhead:first-child{margin-top:4px;}
.jds-lhead[hidden]{display:none;}
.jds-lhead__title{font-family:var(--font-heading), serif;font-size:var(--font-size-title-lg);font-weight:600;line-height:1.2;color:var(--color-ink);}
.jds-lhead__note{font-size:var(--font-size-small);color:var(--color-body-text);}
.jds-lhead--awards{flex-basis:100%;margin:56px 0 4px;padding-bottom:14px;border-bottom:2px solid var(--color-ink);}
.jds-lhead--awards .jds-lhead__title{font-size:var(--font-size-heading-sm);}
.jds-lhead + .jds-ag{padding-top:8px;border-top:0;}
.jds-cpop .jds-cnom__list li.jds-cnom__group{margin:10px 0 2px;padding:12px 12px 0;border-top:1px solid var(--color-line);font-size:var(--font-size-meta);font-weight:700;line-height:1.3;color:var(--color-ink);}
.jds-cpop .jds-cnom__list li.jds-cnom__group:first-child{margin-top:0;padding-top:4px;border-top:0;}
.jds-acats{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start;gap:28px 32px;margin-top:24px;}
.jds-acats__group--wide{grid-column:1/-1;}
.jds-acats__head{margin:0 0 10px;font-family:var(--font-heading), serif;font-size:var(--font-size-title-xs);font-weight:600;line-height:1.25;color:inherit;}
