/* ==========================================================================
   Pulsar Theme — Sidebar Widget Styles
   Loaded on homepage and single post pages.
   ========================================================================== */

/* --- Base widget --- */
.pls-widget{background:var(--pls-surface);border:1px solid var(--pls-border-soft);border-radius:var(--pls-radius);padding:20px;box-shadow:var(--pls-shadow-sm);min-width:0;max-width:100%}
/* Ad banner: no side padding, so a 300px unit fits the 320px sidebar. The
   title keeps its horizontal padding, to stay in line with the other widgets. */
.pls-widget--spot{padding:20px 0}
.pls-widget--spot .pls-widget__title{margin:0 20px 16px}
.pls-widget-spot__slot{display:flex;flex-direction:column;justify-content:center;align-items:stretch;overflow:visible;line-height:0}
.pls-widget-spot__slot > *{max-width:100%}
.pls-widget-spot__slot ins.adsbygoogle{display:block;margin:0 auto;min-height:250px;width:100%;min-width:1px}

.pls-widget__title{font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--pls-mute);margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--pls-border-soft);display:flex;align-items:center;gap:8px}

/* --- Poll --- */
.pls-widget-poll__question{font-size:16px;font-weight:600;line-height:1.4;margin:0 0 14px;color:var(--pls-ink)}
.pls-widget-poll__options{display:flex;flex-direction:column;gap:8px}
.pls-widget-poll__option{position:relative;display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--pls-border);border-radius:var(--pls-radius-sm);background:var(--pls-bg);cursor:pointer;font-size:14px;text-align:left;transition:border-color .15s;overflow:hidden}
.pls-widget-poll__option input[type="radio"],.pls-widget-poll__option input[type="checkbox"]{flex-shrink:0;margin:0;width:18px;height:18px;accent-color:var(--pls-brand)}
.pls-widget-poll__option input:disabled{cursor:not-allowed}
.pls-widget-poll__option:has(input:disabled){opacity:.5;cursor:not-allowed}
.pls-widget-poll__hint{margin:0 0 12px;font-size:12px;color:var(--pls-mute);line-height:1.4}
.pls-widget-poll__option:hover:not([disabled]){border-color:var(--pls-brand)}
.pls-widget-poll__option--voted{cursor:default}
.pls-widget-poll__option--selected{border-color:#e5f5ec;background:rgb(231 245 238)}
.pls-widget-poll__option--selected::before{content:"✓";position:absolute;left:10px;top:50%;transform:translateY(-50%);z-index:2;color:var(--pls-success);font-weight:700;font-size:14px;line-height:1}
.pls-widget-poll__label{position:relative;z-index:1;color:var(--pls-ink)}
.pls-widget-poll__option--selected .pls-widget-poll__label{padding-left:18px;color:var(--pls-success);font-weight:600}
.pls-widget-poll__pct{position:relative;z-index:1;font-weight:700;color:var(--pls-ink);font-size:13px;margin-left:auto}
.pls-widget-poll__option--selected .pls-widget-poll__pct{color:var(--pls-success)}
.pls-widget-poll__bar{position:absolute;left:0;top:0;height:100%;background:var(--pls-brand-soft);transition:width .5s ease;z-index:0}
.pls-widget-poll__option--selected .pls-widget-poll__bar{background:rgba(45,122,111,.22)}
.pls-widget-poll__vote-btn{display:block;width:100%;margin-top:14px;padding:10px;border:none;border-radius:var(--pls-radius-sm);background:var(--pls-brand);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}
.pls-widget-poll__vote-btn:hover{background:var(--pls-brand-dark,#1550b0)}
.pls-widget-poll__vote-btn:disabled{opacity:.6;cursor:not-allowed}
.pls-widget__title-row{display:flex;align-items:center;justify-content:space-between;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--pls-border-soft)}
.pls-widget__title-row .pls-widget__title{margin:0;padding:0;border:none}
.pls-widget-poll__total{font-size:14px;color:var(--pls-mute);margin:0;white-space:nowrap}
.pls-widget-poll__msg{margin:10px 0 0;font-size:13px;color:#b34146;text-align:center}
.pls-widget-poll__notice{margin:10px 0 0 !important;font-size:12px;color:var(--pls-mute);text-align:center;line-height:1.4}
.pls-widget-poll__notice a{color:var(--pls-brand);text-decoration:none}
.pls-widget-poll__notice a:hover{text-decoration:underline}
/* Inline variant, inside an article: the same card, with editorial margins.
   Against the sidebar widget: a smaller label, a bigger question, and slightly
   larger text on the answers. */
.pls-widget-poll--inline{margin:28px 0;max-width:100%}
.pls-widget-poll--inline .pls-widget__title{font-size:14px;font-weight:700;letter-spacing:.5px}
.pls-widget-poll--inline .pls-widget-poll__question{font-size:22px;line-height:1.3}
.pls-widget-poll--inline .pls-widget-poll__option{font-size:16px;padding:13px 16px}
.pls-widget-poll--inline .pls-widget-poll__pct{font-size:15px}

/* --- Live Event --- */
.pls-widget-live-event__cover{position:relative;border-radius:var(--pls-radius-sm);overflow:hidden;margin-bottom:12px}
.pls-widget-live-event__cover img{width:100%;height:auto;display:block}
.pls-widget-live-event__badge{position:absolute;top:10px;right:10px;padding:4px 10px;border-radius:calc(4px * var(--pls-r));font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:#fff;display:inline-flex;align-items:center;gap:4px}
.pls-widget-live-event__badge--scheduled{background:var(--pls-brand)}
.pls-widget-live-event__badge--live{background:var(--pls-live);animation:pls-pulse 1.5s infinite}
.pls-widget-live-event__badge--ended{background:var(--pls-mute)}
.pls-widget-live-event__dot{width:8px;height:8px;border-radius:50%;background:var(--pls-live);display:inline-block;animation:pls-pulse 1.5s infinite}
.pls-widget-live-event__title{font-size:16px;font-weight:600;line-height:1.35;margin:0 0 6px}
.pls-widget-live-event__title a{color:inherit;text-decoration:none}
.pls-widget-live-event__title a:hover{color:var(--pls-brand)}
.pls-widget-live-event__date{font-size:13px;color:var(--pls-mute);margin:0 0 12px}
/* ── Sidebar call to action buttons ──────────────────────────────────
   One set of rules: 10px padding, 14px semibold, 8px radius, 1.2 line height,
   so they stand the same height whichever widget they are in. */
.pls-widget-app-week__btn,
.pls-widget-app-promo__btn,
.pls-widget-deal-countdown__btn,
.pls-widget-apple-store__btn,
.pls-widget-live-event__btn,
.pls-widget-app-update__btn,
.pls-widget-forum__link,
.pls-widget-my-badges__btn,
.pls-widget-my-stats__btn,
.pls-widget-appvertise__btn{
    display:flex;align-items:center;justify-content:center;gap:6px;
    width:100%;
    padding:10px;
    background:var(--pls-brand);color:#fff;
    border:none;border-radius:var(--pls-radius-sm);
    font-size:14px;font-weight:600;line-height:1.2;
    text-align:center;text-decoration:none;
    cursor:pointer;box-sizing:border-box;
    transition:background .15s
}
.pls-widget-app-week__btn:hover,
.pls-widget-app-promo__btn:hover,
.pls-widget-deal-countdown__btn:hover,
.pls-widget-apple-store__btn:hover,
.pls-widget-live-event__btn:hover,
.pls-widget-app-update__btn:hover,
.pls-widget-forum__link:hover,
.pls-widget-my-badges__btn:hover,
.pls-widget-my-stats__btn:hover,
.pls-widget-appvertise__btn:hover{background:var(--pls-brand-dark);color:#fff}

/* The live status stays red, for urgency */
.pls-widget-live-event--live .pls-widget-live-event__btn{background:var(--pls-live)}
.pls-widget-live-event--live .pls-widget-live-event__btn:hover{background:#a11}

/* Apple Store: arrow micro-interaction su hover (preservata) */

.pls-widget-live-event--live .pls-widget__title{color:var(--pls-live)}

/* --- Authors --- */
.pls-widget-authors__list{display:flex;flex-direction:column;gap:0}
.pls-widget-authors__item{display:flex;align-items:center;gap:12px;padding:10px;margin:0 -10px;border-bottom:1px solid var(--pls-border-soft);border-radius:var(--pls-radius-sm);transition:background .1s}
.pls-widget-authors__item:last-child{border-bottom:none}
.pls-widget-authors__item:hover{background:var(--pls-bg)}
.pls-widget-authors__avatar{width:40px;height:40px;border-radius:50%;flex-shrink:0;object-fit:cover}
.pls-widget-authors__info{flex:1}
.pls-widget-authors__name{display:block;font-size:14px;font-weight:600;color:var(--pls-ink)}
.pls-widget-authors__count{display:block;font-size:12px;color:var(--pls-mute)}

/* --- Calendar --- */
.pls-widget-calendar__wrap{overflow:hidden}
.pls-widget-calendar__wrap table{width:100%;border-collapse:collapse;font-size:13px}
.pls-widget-calendar__wrap caption{font-size:14px;font-weight:600;padding:8px 0;text-align:center}
.pls-widget-calendar__wrap thead th{font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:var(--pls-mute);padding:6px 0;text-align:center;font-weight:600}
.pls-widget-calendar__wrap td{text-align:center;padding:6px 2px;color:var(--pls-ink2)}
.pls-widget-calendar__wrap td a{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--pls-brand);color:#fff;border-radius:50%;font-weight:600;font-size:12px}
.pls-widget-calendar__wrap td a:hover{background:var(--pls-brand-dark);color:#fff}
.pls-widget-calendar__wrap td#today{font-weight:700}
.pls-widget-calendar__wrap td#today a{background:#b8471d} /* accent scuro: AA contrast 5:1 vs bianco */
.pls-widget-calendar__wrap tfoot td{padding:8px 0;font-size:12px}
.pls-widget-calendar__wrap tfoot a{color:var(--pls-brand);font-weight:600}
.pls-widget-calendar__wrap .pad{color:transparent}
.pls-widget-calendar__wrap nav.wp-calendar-nav{display:flex;justify-content:space-between;padding:8px 0;font-size:13px}
.pls-widget-calendar__wrap nav.wp-calendar-nav a{color:var(--pls-brand);font-weight:600}

/* --- Widget Tabs (Most Commented / Most Viewed) — pillola brand --- */
.pls-widget-tabs{position:relative;display:flex;gap:0;margin-bottom:14px;background:var(--pls-bg);border-radius:var(--pls-radius-sm);padding:3px;isolation:isolate}
.pls-widget-tabs::before{content:"";position:absolute;top:3px;bottom:3px;left:0;width:var(--pls-tabs-w,33.333%);transform:translateX(var(--pls-tabs-x,0));background:var(--pls-brand);border-radius:calc(6px * var(--pls-r));transition:transform .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1),opacity .15s;z-index:0;pointer-events:none;box-shadow:0 1px 2px rgba(30,99,212,.25)}
.pls-widget-tabs:not([data-tabs-ready])::before{opacity:0}
.pls-widget-tabs__btn{position:relative;z-index:1;flex:1;padding:6px 12px;font-size:12px;font-weight:600;border-radius:calc(6px * var(--pls-r));cursor:pointer;text-align:center;color:var(--pls-mute);transition:color .25s;border:0;background:transparent}
.pls-widget-tabs__btn--active{color:#fff}
.pls-widget-tabs__btn:hover:not(.pls-widget-tabs__btn--active){color:var(--pls-ink2)}
.pls-widget-period{display:none}
.pls-widget-period--active{display:block}

/* Stage: every slide is rendered, only the default one is visible.
   The others are revealed through :has() when item N is hovered. */
.pls-mv__stage{position:relative;margin-bottom:18px}
.pls-mv__slide{display:none}
.pls-mv__slide--default{display:block}
.pls-mv__slide-cover{position:relative;aspect-ratio:16/9;border-radius:calc(12px * var(--pls-r));overflow:hidden;margin-bottom:10px}
.pls-mv__slide-cover img{width:100%;height:100%;object-fit:cover;display:block}
.pls-mv__slide-rank{position:absolute;bottom:10px;left:10px;background:rgba(15,29,54,.85);color:#fff;font-size:10px;font-weight:700;letter-spacing:.8px;padding:5px 10px;border-radius:calc(999px * var(--pls-r))}
/* Two lines, always. The title was already cut after the second, but a short
   one took a single line and the widget changed height every time the featured
   article swapped under the cursor. `min-height` is two lines of this very
   line-height, so the space is there whether the words fill it or not. */
.pls-mv__slide-title{font-size:15px;font-weight:700;line-height:1.3;color:var(--pls-ink);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}
.pls-mv__slide:hover .pls-mv__slide-title{color:var(--pls-brand)}

/* Hover swap: hides the default and shows the slide matching the hovered item. */
.pls-mv:has(.pls-mv__item:hover) .pls-mv__slide--default{display:none}
.pls-mv:has(.pls-mv__item[data-rank="2"]:hover) .pls-mv__slide[data-rank="2"]{display:block}
.pls-mv:has(.pls-mv__item[data-rank="3"]:hover) .pls-mv__slide[data-rank="3"]{display:block}
.pls-mv:has(.pls-mv__item[data-rank="4"]:hover) .pls-mv__slide[data-rank="4"]{display:block}
.pls-mv:has(.pls-mv__item[data-rank="5"]:hover) .pls-mv__slide[data-rank="5"]{display:block}

/* Lista 2-5 */
.pls-mv__list{list-style:none;margin:0;padding:0;border-top:1px dashed var(--pls-border);display:flex;flex-direction:column}
.pls-mv__item{display:flex;gap:10px;align-items:center;padding:16px 0;border-bottom:1px solid var(--pls-border-soft)}
.pls-mv__item:last-child{border-bottom:none}
.pls-mv__num{flex-shrink:0;font-size:18px;font-weight:800;color:var(--pls-mute);min-width:22px;line-height:1.1;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.pls-mv__item:hover .pls-mv__num{color:var(--pls-brand)}
.pls-mv__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.pls-mv__title{font-size:13px;font-weight:600;line-height:1.4;color:var(--pls-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pls-mv__title:hover{color:var(--pls-brand)}
.pls-mv__meta{font-size:12px;color:var(--pls-mute);display:flex;align-items:center;gap:5px}
.pls-mv__meta-icon{flex-shrink:0;opacity:.7}
.pls-widget__empty{font-size:13px;color:var(--pls-mute);text-align:center;padding:16px 0}

/* --- Most commented: a cover with the comment count overlaid, plus the list ---
   The same shape as the most read widget, with a large number over the cover.
   Hovering titles 2 to 5 swaps the featured slide, again through :has(). */
.pls-mc__stage{position:relative;margin-bottom:18px}
.pls-mc__slide{display:none;text-decoration:none}
.pls-mc__slide--default{display:block}
.pls-mc__slide-cover{position:relative;aspect-ratio:16/9;border-radius:calc(12px * var(--pls-r));overflow:hidden;margin-bottom:10px}
.pls-mc__slide-cover img{width:100%;height:100%;object-fit:cover;display:block}
.pls-mc__slide-overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(15,29,54,.85) 100%);pointer-events:none}
.pls-mc__slide-stat{position:absolute;left:14px;right:14px;bottom:12px;color:#fff;display:flex;flex-direction:column;line-height:1}
.pls-mc__slide-stat-num{font-size:34px;font-weight:800;letter-spacing:-1.2px;line-height:1}
.pls-mc__slide-stat-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;opacity:.92;margin-top:5px}
.pls-mc__slide-title{font-size:15px;font-weight:700;line-height:1.4;color:var(--pls-ink);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.8em}
.pls-mc__slide:hover .pls-mc__slide-title{color:var(--pls-brand)}

/* Hover-swap */
.pls-mc:has(.pls-mc__item:hover) .pls-mc__slide--default{display:none}
.pls-mc:has(.pls-mc__item[data-rank="2"]:hover) .pls-mc__slide[data-rank="2"]{display:block}
.pls-mc:has(.pls-mc__item[data-rank="3"]:hover) .pls-mc__slide[data-rank="3"]{display:block}
.pls-mc:has(.pls-mc__item[data-rank="4"]:hover) .pls-mc__slide[data-rank="4"]{display:block}
.pls-mc:has(.pls-mc__item[data-rank="5"]:hover) .pls-mc__slide[data-rank="5"]{display:block}

/* The list: number, title and a comment pill on the right */
.pls-mc__list{list-style:none;margin:0;padding:0;border-top:1px dashed var(--pls-border);display:flex;flex-direction:column}
.pls-mc__item{display:flex;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid var(--pls-border-soft)}
.pls-mc__item:last-child{border-bottom:none}
.pls-mc__num{flex-shrink:0;font-size:16px;font-weight:800;color:var(--pls-mute);min-width:18px;line-height:1.1;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.pls-mc__item:hover .pls-mc__num{color:var(--pls-brand)}
.pls-mc__title{flex:1;min-width:0;font-size:13px;font-weight:600;line-height:1.4;color:var(--pls-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pls-mc__title:hover,.pls-mc__item:has(.pls-mc__pill:hover) .pls-mc__title{color:var(--pls-brand)}
.pls-mc__pill{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;background:var(--pls-comment-bg,var(--pls-brand-soft));color:var(--pls-comment-ink,var(--pls-brand));padding:5px 10px;border-radius:calc(8px * var(--pls-r));font-size:12px;font-weight:700;line-height:1;transition:transform .15s,background .15s,color .15s}
.pls-mc__item:hover .pls-mc__pill{background:var(--pls-brand);color:#fff;transform:scale(1.04)}
.pls-mc__pill svg{width:13px;height:13px}

/* --- Events --- */
.pls-widget-events__item{display:flex;gap:12px;padding:10px 0;align-items:center}
.pls-widget-events__item--border{border-top:1px solid var(--pls-border-soft)}
.pls-widget-events__date{width:46px;height:46px;border-radius:calc(10px * var(--pls-r));background:var(--pls-brand-soft);color:var(--pls-brand);display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0}
.pls-widget-events__day{font-size:17px;font-weight:800;line-height:1}
.pls-widget-events__month{font-size:9px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}
.pls-widget-events__date--tba{background:var(--pls-bg);color:var(--pls-mute)}
.pls-widget-events__info{flex:1;min-width:0}
.pls-widget-events__title{display:block;font-size:13.5px;font-weight:600;line-height:1.3;color:var(--pls-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .15s}
.pls-widget-events__title--link:hover{color:var(--pls-brand)}
.pls-widget-events__desc{display:block;font-size:11px;color:var(--pls-ink2);margin-top:2px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pls-widget-events__time{display:block;font-size:11px;color:var(--pls-mute);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pls-widget-events__cal{background:var(--pls-brand);border:1px solid var(--pls-brand);padding:5px 8px;border-radius:calc(6px * var(--pls-r));font-size:11px;color:#fff;font-weight:600;flex-shrink:0;transition:background-color .15s,color .15s,border-color .15s,transform .15s,box-shadow .15s;text-decoration:none;display:inline-block;line-height:1.4;cursor:pointer;font-family:inherit}
.pls-widget-events__cal:hover{background:transparent;border-color:var(--pls-brand);color:var(--pls-brand)}
.pls-widget-events__cal--disabled{color:var(--pls-mute);border-color:var(--pls-border-soft);background:var(--pls-bg);cursor:not-allowed;pointer-events:none;opacity:.65}
.pls-widget-events__cal--disabled:hover{border-color:var(--pls-border-soft);color:var(--pls-mute)}
.pls-widget-events__cal-opt{display:flex;align-items:center;gap:8px;padding:8px 10px;font-size:13px;color:var(--pls-ink);text-decoration:none;border-radius:calc(6px * var(--pls-r));transition:background .12s,color .12s;line-height:1.2;white-space:nowrap}
.pls-widget-events__cal-opt:hover{background:var(--pls-brand-soft);color:var(--pls-brand)}
.pls-widget-events__cal-opt svg{flex-shrink:0;opacity:.7}
.pls-widget-events__cal-opt:hover svg{opacity:1}
.pls-widget-events__cal-wrap[data-open="1"] .pls-widget-events__cal{border-color:var(--pls-brand);color:var(--pls-brand)}
.pls-widget-live-event__btn{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.pls-widget-live-event__btn-arrow{flex-shrink:0;transition:transform .18s ease}
.pls-widget-live-event__btn:hover .pls-widget-live-event__btn-arrow{transform:translateX(3px)}

/* Sizes come from the shared call to action rules above; only the top margin here. */

/* Style comes from the shared call to action rules; only a scoped top margin here. */

/* --- Widget: User Menu (logged-in) --- */
.pls-widget-user-menu{padding:0;border:none;background:transparent;box-shadow:none}
/* Avoid a flash: hide the promo immediately for signed in visitors, before the
   /me request comes back. */
html.pls-auth #pls-widget-account-promo{display:none !important}

.pls-widget-user-menu__card-wrap{display:flex;align-items:center;background:var(--pls-surface);border:1px solid var(--pls-border-soft);border-radius:var(--pls-radius);margin-bottom:12px;height:80px}
.pls-widget-user-menu__card{display:flex;align-items:center;gap:12px;padding:16px;flex:1;min-width:0}
.pls-widget-user-menu__avatar-wrap{position:relative;width:50px;height:50px;flex-shrink:0;border-radius:50%}
.pls-widget-user-menu__avatar{width:50px;height:50px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid var(--pls-brand-soft);display:block}
.pls-widget-user-menu__avatar-ph{width:50px;height:50px;border-radius:50%;background:var(--pls-brand-soft);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--pls-brand)}
.pls-widget-user-menu__avatar-overlay{position:absolute;inset:0;border-radius:50%;background:rgba(15,29,54,.6);color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;pointer-events:none}
.pls-widget-user-menu__card:hover .pls-widget-user-menu__avatar-overlay{opacity:1}
.pls-widget-user-menu__info{min-width:0}
.pls-widget-user-menu__name{font-size:15px;font-weight:600;color:var(--pls-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pls-widget-user-menu__email{font-size:13px;color:var(--pls-mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
/* The two ways in, side by side under "Your account". They are separate links,
   so the card around them is a plain container, not an anchor. */
.pls-widget-user-menu__badge{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--pls-brand);margin-top:2px}
.pls-widget-user-menu__badge a{color:inherit;transition:color .15s}
.pls-widget-user-menu__badge a:hover{color:var(--pls-brand-dark);text-decoration:underline}
.pls-widget-user-menu__badge span{color:var(--pls-mute);font-weight:400}
.pls-widget-user-menu__card--guest{cursor:default}
.pls-widget-user-menu__nav{background:var(--pls-surface);border:1px solid var(--pls-border-soft);border-radius:var(--pls-radius);overflow:hidden}
.pls-widget-user-menu__link{display:flex;align-items:center;gap:10px;padding:11px 16px;font-size:13px;font-weight:500;color:var(--pls-ink2);border-bottom:1px solid var(--pls-border-soft);transition:background .1s,color .1s}
.pls-widget-user-menu__link:last-child{border-bottom:none}
.pls-widget-user-menu__link:hover{background:var(--pls-brand-soft);color:var(--pls-brand)}
.pls-widget-user-menu__link--active{background:var(--pls-brand-soft);color:var(--pls-brand);font-weight:600}
.pls-widget-user-menu__link svg{flex-shrink:0;color:var(--pls-mute)}
.pls-widget-user-menu__link:hover svg,.pls-widget-user-menu__link--active svg{color:var(--pls-brand)}
.pls-widget-user-menu__count{margin-left:auto;background:var(--pls-brand);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:calc(6px * var(--pls-r));min-width:18px;text-align:center}

@media(max-width:1024px){
.pls-widget{padding:16px}
}

@media(max-width:640px){
.pls-widget{padding:14px}
.pls-widget__title{font-size:13px;margin:0 0 12px;padding-bottom:10px}
.pls-mv__num{font-size:16px;min-width:20px}
.pls-mv__title{font-size:12.5px}
.pls-mv__item{padding:14px 0}
.pls-mv__slide-title{font-size:14px}

.pls-widget-user-menu{width:100%;max-width:none;padding:0}
.pls-widget-user-menu__card,.pls-widget-user-menu__nav{width:100%}
}

/* --- Recent Comments widget --- */
.pls-rc__list{list-style:none;margin:0;padding:0}
.pls-rc__item{border-bottom:1px solid var(--pls-border-soft)}
.pls-rc__item:last-child{border-bottom:none}
.pls-rc__link{display:flex;gap:10px;padding:12px 0;text-decoration:none;color:inherit;align-items:flex-start}
.pls-rc__link:hover .pls-rc__author{color:var(--pls-brand)}
.pls-rc__avatar{border-radius:50%;flex-shrink:0}
.pls-rc__body{min-width:0;flex:1}
.pls-rc__author{font-size:13px;font-weight:600;color:var(--pls-ink);display:inline}
.pls-rc__time{font-size:11px;color:var(--pls-mute);margin-left:6px}
.pls-rc__text{font-size:13px;color:var(--pls-ink2);line-height:1.4;margin:3px 0 4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pls-rc__post{font-size:11px;color:var(--pls-mute);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ──────────────────────────────────────────────
   Promo widgets, as a sidebar marquee.
   The --sidebar modifiers reuse the homepage partials, and the .pls-widget-*
   container drops its default padding so the promo fills the whole card.
   ────────────────────────────────────────────── */
/* Base marquee rules, repeated from home.css for single posts and archives:
   home.css is loaded on the homepage only, and without this block the widget
   collapses into a vertical list everywhere else. */

/* Article widget: a standard card with a full bleed image.
   The padding is taken off the widget and put only where it is needed, on the
   title and the body, so the image reaches the edges on its own. */
.pls-widget--article{padding:0;overflow:hidden}
.pls-widget--article .pls-widget__title{margin:0;padding:20px 20px 14px;border-bottom:1px solid var(--pls-border-soft)}
.pls-widget--article .pls-card{background:transparent;border:0;padding:0;box-shadow:none;border-radius:0;overflow:visible}
.pls-widget--article .pls-card__cover{margin:0;border-radius:0;overflow:hidden;background:var(--pls-bg);aspect-ratio:auto}
.pls-widget--article.pls-widget .pls-card--standard .pls-card__cover .pls-img,
.pls-widget--article.pls-widget .pls-card__cover .pls-img,
.pls-widget--article.pls-widget .pls-card__cover img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain;display:block;border-radius:0;max-height:none;transform:none}
.pls-widget--article .pls-card__body{padding:18px 20px 20px}
.pls-widget--article .pls-card__title{font-size:17px;line-height:1.35}
.pls-widget--article .pls-card__excerpt{display:none}

/* ── Folding the account links away ───────────────────────────────────
   The chevron sits beside the account card, not inside it: the card is a link
   to the profile, and a button inside a link is neither valid markup nor
   something a keyboard can reach twice. Open is the starting state, and the
   arrow points up — the way it does on the sites this is modelled on. */
.pls-widget-user-menu__card-wrap{position:relative}
.pls-widget-user-menu__fold{
  position:absolute;top:50%;right:12px;transform:translateY(-50%);
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;padding:0;
  border:0;border-radius:calc(8px * var(--pls-r));
  background:transparent;color:var(--pls-mute);cursor:pointer;
  transition:background .18s ease,color .18s ease;
}
.pls-widget-user-menu__fold:hover{background:var(--pls-brand-soft);color:var(--pls-brand)}
.pls-widget-user-menu__fold svg{transform:rotate(180deg);transition:transform .22s ease}
.pls-widget-user-menu__fold[aria-expanded="false"] svg{transform:rotate(0deg)}
/* The card leaves room for it, so a long name does not run underneath. */
.pls-widget-user-menu__card-wrap:has(.pls-widget-user-menu__fold) .pls-widget-user-menu__card{padding-right:52px}
.pls-widget-user-menu__nav[hidden]{display:none}

@media (prefers-reduced-motion: reduce){
  .pls-widget-user-menu__fold,
  .pls-widget-user-menu__fold svg{transition:none}
}

/* --- Widget: Social --- */
/* Two per row, and a button that asks for the whole row gets it. The shape is
   the one the hero uses for the same object, so a channel looks the same
   wherever the site draws it. */
.pls-wsoc{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pls-wsoc__btn{display:flex;align-items:center;gap:9px;padding:10px 12px;min-width:0;background:var(--pls-surface);border:1px solid var(--pls-border-soft);border-radius:calc(10px * var(--pls-r));text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s}
.pls-wsoc__btn:hover{border-color:var(--pls-border);box-shadow:0 2px 6px rgba(15,29,54,.06);transform:translateY(-1px)}
.pls-wsoc__btn--wide{grid-column:1 / -1}
.pls-wsoc__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px}
.pls-wsoc__icon svg{width:18px;height:18px}
.pls-wsoc__count{font-weight:700;color:var(--pls-ink);font-size:14px;letter-spacing:-.2px}
.pls-wsoc__name{color:var(--pls-mute);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* One button per line. */
.pls-wsoc--single{grid-template-columns:1fr}
/* Filled buttons, the same arrangement the hero row uses: the network's colour
   behind the button, the mark in white on a darker square, the figure at the
   far end. `--pls-soc` is written on each button by the template; a button of
   your own that carries an image instead of an icon has none, and takes the
   site's own colour. */
.pls-wsoc--flat .pls-wsoc__btn{background:var(--pls-soc,var(--pls-brand));border:0;color:#fff;padding:0 12px 0 0;gap:11px;overflow:hidden}
.pls-wsoc--flat .pls-wsoc__btn:hover{box-shadow:0 4px 12px rgba(15,29,54,.16)}
.pls-wsoc--flat .pls-wsoc__icon{align-self:stretch;width:44px;min-height:40px;background:rgba(0,0,0,.16);color:#fff}
.pls-wsoc--flat .pls-wsoc__img{margin-left:12px}
.pls-wsoc--flat .pls-wsoc__name{order:2;color:#fff;font-weight:600;flex:1 1 auto}
.pls-wsoc--flat .pls-wsoc__count{order:3;color:#fff;margin-left:auto;flex-shrink:0}
/* A button of your own has no figure beside it, so its name is centred as it is
   in the minimal style. */
.pls-wsoc--flat .pls-wsoc__btn--own{padding-right:0}
/* An image of your own, in the place the icon would have taken. Its corners
   follow the theme like every other shape: square on a preset that squares
   everything off. */
.pls-wsoc__img{flex-shrink:0;width:20px;height:20px;object-fit:contain;border-radius:calc(4px * var(--pls-r))}
/* A button of your own sits centred: it carries a name you wrote rather than a
   channel and a figure, so there is no column of numbers for it to line up
   with. The icon travels with the text instead of holding the left edge. */
.pls-wsoc__btn--own{justify-content:center}
/* A stripe of the brand down the left edge. Decoration, so it is drawn rather
   than added as a border: a border would move the text of that one button and
   break the line the others keep. Inherits the button's own rounding. */
.pls-wsoc__btn--mark{position:relative;overflow:hidden}
.pls-wsoc__btn--mark::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--pls-brand);border-radius:calc(10px * var(--pls-r)) 0 0 calc(10px * var(--pls-r))}

/* --- Most read (grid) ---
   A grid of cover images that works in a sidebar column and in the footer
   widget area without a variant class: the tiles ask for a minimum width and
   the container decides how many fit on a row. The fixed column counts are
   there for the footer, where a two or four column band is a layout choice
   rather than a consequence of the available width. */
.pls-mri__grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}
.pls-mri__grid--2{grid-template-columns:repeat(2,1fr)}
.pls-mri__grid--3{grid-template-columns:repeat(3,1fr)}
.pls-mri__grid--4{grid-template-columns:repeat(4,1fr)}
.pls-mri__tile{display:block;min-width:0;text-decoration:none;color:inherit}
.pls-mri__frame{position:relative;display:block;overflow:hidden;border-radius:var(--pls-radius-sm);background:var(--pls-border-soft);aspect-ratio:16/9}
.pls-mri__frame img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.pls-mri__tile:hover .pls-mri__frame img,.pls-mri__tile:focus-visible .pls-mri__frame img{transform:scale(1.06)}
.pls-mri__tile:focus-visible{outline:2px solid var(--pls-brand);outline-offset:3px;border-radius:var(--pls-radius-sm)}
.pls-mri__rank{position:absolute;left:6px;top:6px;min-width:20px;height:20px;padding:0 5px;border-radius:calc(4px * var(--pls-r));background:rgba(0,0,0,.62);color:#fff;font-size:11px;font-weight:700;line-height:20px;text-align:center}
.pls-mri__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:7px;font-size:13px;font-weight:600;line-height:1.35;color:var(--pls-ink)}
.pls-mri__tile:hover .pls-mri__title{color:var(--pls-brand)}
/* Motion is decoration here: the tile is a link either way. */
@media (prefers-reduced-motion:reduce){.pls-mri__frame img{transition:none}.pls-mri__tile:hover .pls-mri__frame img{transform:none}}
