/*!
 * jQuery UI CSS Framework 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/category/theming/
 */

/* Layout helpers
----------------------------------*/

.ui-helper-hidden {
	display: none;
}
.ui-helper-hidden-accessible {
	border: 0;
	clip: rect(0 0 0 0);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
}
.ui-helper-reset {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	line-height: 1.3;
	text-decoration: none;
	font-size: 100%;
	list-style: none;
}
.ui-helper-clearfix:before,
.ui-helper-clearfix:after {
	content: "";
	display: table;
	border-collapse: collapse;
}
.ui-helper-clearfix:after {
	clear: both;
}
.ui-helper-zfix {
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	position: absolute;
	opacity: 0;
}

.ui-front {
	z-index: 100;
}


/* Interaction Cues
----------------------------------*/
.ui-state-disabled {
	cursor: default !important;
	pointer-events: none;
}


/* Icons
----------------------------------*/
.ui-icon {
	display: inline-block;
	vertical-align: middle;
	margin-top: -.25em;
	position: relative;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
}

.ui-widget-icon-block {
	left: 50%;
	margin-left: -8px;
	display: block;
}

/* Misc visuals
----------------------------------*/

/* Overlays */
.ui-widget-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
/*!
 * jQuery UI CSS Framework 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/category/theming/
 *
 * To view and modify this theme, visit https://jqueryui.com/themeroller/
 */

/*






 */



/* Component containers
----------------------------------*/

.ui-widget {
	font-family: Arial,Helvetica,sans-serif/*{ffDefault}*/;
	font-size: 1em/*{fsDefault}*/;
}
.ui-widget .ui-widget {
	font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
	font-family: Arial,Helvetica,sans-serif/*{ffDefault}*/;
	font-size: 1em;
}
.ui-widget.ui-widget-content {
	border: 1px solid #c5c5c5/*{borderColorDefault}*/;
}
.ui-widget-content {
	border: 1px solid #dddddd/*{borderColorContent}*/;
	background: #ffffff/*{bgColorContent}*/ /*{bgImgUrlContent}*/ /*{bgContentXPos}*/ /*{bgContentYPos}*/ /*{bgContentRepeat}*/;
	color: #333333/*{fcContent}*/;
}
.ui-widget-content a {
	color: #333333/*{fcContent}*/;
}
.ui-widget-header {
	border: 1px solid #dddddd/*{borderColorHeader}*/;
	background: #e9e9e9/*{bgColorHeader}*/ /*{bgImgUrlHeader}*/ /*{bgHeaderXPos}*/ /*{bgHeaderYPos}*/ /*{bgHeaderRepeat}*/;
	color: #333333/*{fcHeader}*/;
	font-weight: bold;
}
.ui-widget-header a {
	color: #333333/*{fcHeader}*/;
}

/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default,
.ui-button,

/* We use html here because we need a greater specificity to make sure disabled
works properly when clicked or hovered */
html .ui-button.ui-state-disabled:hover,
html .ui-button.ui-state-disabled:active {
	border: 1px solid #c5c5c5/*{borderColorDefault}*/;
	background: #f6f6f6/*{bgColorDefault}*/ /*{bgImgUrlDefault}*/ /*{bgDefaultXPos}*/ /*{bgDefaultYPos}*/ /*{bgDefaultRepeat}*/;
	font-weight: normal/*{fwDefault}*/;
	color: #454545/*{fcDefault}*/;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited,
a.ui-button,
a:link.ui-button,
a:visited.ui-button,
.ui-button {
	color: #454545/*{fcDefault}*/;
	text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus,
.ui-button:hover,
.ui-button:focus {
	border: 1px solid #cccccc/*{borderColorHover}*/;
	background: #ededed/*{bgColorHover}*/ /*{bgImgUrlHover}*/ /*{bgHoverXPos}*/ /*{bgHoverYPos}*/ /*{bgHoverRepeat}*/;
	font-weight: normal/*{fwDefault}*/;
	color: #2b2b2b/*{fcHover}*/;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited,
.ui-state-focus a,
.ui-state-focus a:hover,
.ui-state-focus a:link,
.ui-state-focus a:visited,
a.ui-button:hover,
a.ui-button:focus {
	color: #2b2b2b/*{fcHover}*/;
	text-decoration: none;
}

.ui-visual-focus {
	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
	border: 1px solid #003eff/*{borderColorActive}*/;
	background: #007fff/*{bgColorActive}*/ /*{bgImgUrlActive}*/ /*{bgActiveXPos}*/ /*{bgActiveYPos}*/ /*{bgActiveRepeat}*/;
	font-weight: normal/*{fwDefault}*/;
	color: #ffffff/*{fcActive}*/;
}
.ui-icon-background,
.ui-state-active .ui-icon-background {
	border: #003eff/*{borderColorActive}*/;
	background-color: #ffffff/*{fcActive}*/;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
	color: #ffffff/*{fcActive}*/;
	text-decoration: none;
}

/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
	border: 1px solid #dad55e/*{borderColorHighlight}*/;
	background: #fffa90/*{bgColorHighlight}*/ /*{bgImgUrlHighlight}*/ /*{bgHighlightXPos}*/ /*{bgHighlightYPos}*/ /*{bgHighlightRepeat}*/;
	color: #777620/*{fcHighlight}*/;
}
.ui-state-checked {
	border: 1px solid #dad55e/*{borderColorHighlight}*/;
	background: #fffa90/*{bgColorHighlight}*/;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
	color: #777620/*{fcHighlight}*/;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
	border: 1px solid #f1a899/*{borderColorError}*/;
	background: #fddfdf/*{bgColorError}*/ /*{bgImgUrlError}*/ /*{bgErrorXPos}*/ /*{bgErrorYPos}*/ /*{bgErrorRepeat}*/;
	color: #5f3f3f/*{fcError}*/;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
	color: #5f3f3f/*{fcError}*/;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
	color: #5f3f3f/*{fcError}*/;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
	font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
	opacity: .7;
	font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
	opacity: .35;
	background-image: none;
}

/* Icons
----------------------------------*/

/* states and images */
.ui-icon {
	width: 16px;
	height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_444444_256x240-42f3fd7ecbd1e18e5e9c5cbbc2ba9ce4d81a388258a81833d38819a1406ff48d.png)/*{iconsContent}*/;
}
.ui-widget-header .ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_444444_256x240-42f3fd7ecbd1e18e5e9c5cbbc2ba9ce4d81a388258a81833d38819a1406ff48d.png)/*{iconsHeader}*/;
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_555555_256x240-9dab1725ee38e87989a48796505748157d0238ac72c25a072f5162aa61e2da06.png)/*{iconsHover}*/;
}
.ui-state-active .ui-icon,
.ui-button:active .ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_ffffff_256x240-6d81fc3fac3b17a25f4ef3eee1394642d38b1adba5c7442acef3b3c8b045cbe7.png)/*{iconsActive}*/;
}
.ui-state-highlight .ui-icon,
.ui-button .ui-state-highlight.ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_777620_256x240-91e1ea5f253e72e2e9402cff2bb58fa98b5faa49f9ded999c760013b94ead7f8.png)/*{iconsHighlight}*/;
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_cc0000_256x240-6efc1db612130b63222e0f6bf54d37392c3f2bdb2c10ba50f5d0f1e14d63af61.png)/*{iconsError}*/;
}
.ui-button .ui-icon {
	background-image: url(/assets/jquery-ui/ui-icons_777777_256x240-943d9bc18134619d37406debd81636b63881363a019513c1d6e6cb13b5c5fb30.png)/*{iconsDefault}*/;
}

/* positioning */
/* Three classes needed to override `.ui-button:hover .ui-icon` */
.ui-icon-blank.ui-icon-blank.ui-icon-blank {
	background-image: none;
}
.ui-icon-caret-1-n { background-position: 0 0; }
.ui-icon-caret-1-ne { background-position: -16px 0; }
.ui-icon-caret-1-e { background-position: -32px 0; }
.ui-icon-caret-1-se { background-position: -48px 0; }
.ui-icon-caret-1-s { background-position: -65px 0; }
.ui-icon-caret-1-sw { background-position: -80px 0; }
.ui-icon-caret-1-w { background-position: -96px 0; }
.ui-icon-caret-1-nw { background-position: -112px 0; }
.ui-icon-caret-2-n-s { background-position: -128px 0; }
.ui-icon-caret-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -65px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -65px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
	border-top-left-radius: 3px/*{cornerRadius}*/;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
	border-top-right-radius: 3px/*{cornerRadius}*/;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
	border-bottom-left-radius: 3px/*{cornerRadius}*/;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
	border-bottom-right-radius: 3px/*{cornerRadius}*/;
}

/* Overlays */
.ui-widget-overlay {
	background: #aaaaaa/*{bgColorOverlay}*/ /*{bgImgUrlOverlay}*/ /*{bgOverlayXPos}*/ /*{bgOverlayYPos}*/ /*{bgOverlayRepeat}*/;
	opacity: .3/*{opacityOverlay}*/;
}
.ui-widget-shadow {
	box-shadow: 0/*{offsetLeftShadow}*/ 0/*{offsetTopShadow}*/ 5px/*{thicknessShadow}*/ #666666/*{bgColorShadow}*/;
}
/*!
 * jQuery UI Accordion 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/accordion/#theming
 */
/*

 */

.ui-accordion .ui-accordion-header {
	display: block;
	cursor: pointer;
	position: relative;
	margin: 2px 0 0 0;
	padding: .5em .5em .5em .7em;
	font-size: 100%;
}
.ui-accordion .ui-accordion-content {
	padding: 1em 2.2em;
	border-top: 0;
	overflow: auto;
}
/*!
 * jQuery UI Autocomplete 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/autocomplete/#theming
 */
/*

 */

.ui-autocomplete {
	position: absolute;
	top: 0;
	left: 0;
	cursor: default;
}
/*!
 * jQuery UI Button 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/button/#theming
 */
/*

 */

.ui-button {
	padding: .4em 1em;
	display: inline-block;
	position: relative;
	line-height: normal;
	margin-right: .1em;
	cursor: pointer;
	vertical-align: middle;
	text-align: center;
	-webkit-user-select: none;
	user-select: none;
}

.ui-button,
.ui-button:link,
.ui-button:visited,
.ui-button:hover,
.ui-button:active {
	text-decoration: none;
}

/* to make room for the icon, a width needs to be set here */
.ui-button-icon-only {
	width: 2em;
	box-sizing: border-box;
	text-indent: -9999px;
	white-space: nowrap;
}

/* no icon support for input elements */
input.ui-button.ui-button-icon-only {
	text-indent: 0;
}

/* button icon element(s) */
.ui-button-icon-only .ui-icon {
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -8px;
	margin-left: -8px;
}

.ui-button.ui-icon-notext .ui-icon {
	padding: 0;
	width: 2.1em;
	height: 2.1em;
	text-indent: -9999px;
	white-space: nowrap;

}

input.ui-button.ui-icon-notext .ui-icon {
	width: auto;
	height: auto;
	text-indent: 0;
	white-space: normal;
	padding: .4em 1em;
}

/* workarounds */
/* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
	border: 0;
	padding: 0;
}
/*!
 * jQuery UI Checkboxradio 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/checkboxradio/#theming
 */
/*

 */


.ui-checkboxradio-label .ui-icon-background {
	box-shadow: inset 1px 1px 1px #ccc;
	border-radius: .12em;
	border: none;
}
.ui-checkboxradio-radio-label .ui-icon-background {
	width: 16px;
	height: 16px;
	border-radius: 1em;
	overflow: visible;
	border: none;
}
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
	background-image: none;
	width: 8px;
	height: 8px;
	border-width: 4px;
	border-style: solid;
}
.ui-checkboxradio-disabled {
	pointer-events: none;
}
/*!
 * jQuery UI Controlgroup 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/controlgroup/#theming
 */
/*

 */


.ui-controlgroup {
	vertical-align: middle;
	display: inline-block;
}
.ui-controlgroup > .ui-controlgroup-item {
	float: left;
	margin-left: 0;
	margin-right: 0;
}
.ui-controlgroup > .ui-controlgroup-item:focus,
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
	z-index: 9999;
}
.ui-controlgroup-vertical > .ui-controlgroup-item {
	display: block;
	float: none;
	width: 100%;
	margin-top: 0;
	margin-bottom: 0;
	text-align: left;
}
.ui-controlgroup-vertical .ui-controlgroup-item {
	box-sizing: border-box;
}
.ui-controlgroup .ui-controlgroup-label {
	padding: .4em 1em;
}
.ui-controlgroup .ui-controlgroup-label span {
	font-size: 80%;
}
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
	border-left: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
	border-top: none;
}
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
	border-right: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
	border-bottom: none;
}

/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {
	width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
	border-top-style: solid;
}

/*!
 * jQuery UI Datepicker 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/datepicker/#theming
 */
/*

 */

.ui-datepicker {
	width: 17em;
	padding: .2em .2em 0;
	display: none;
}
.ui-datepicker .ui-datepicker-header {
	position: relative;
	padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
	position: absolute;
	top: 2px;
	width: 1.8em;
	height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
	top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
	left: 2px;
}
.ui-datepicker .ui-datepicker-next {
	right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
	left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
	right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
	display: block;
	position: absolute;
	left: 50%;
	margin-left: -8px;
	top: 50%;
	margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
	margin: 0 2.3em;
	line-height: 1.8em;
	text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
	font-size: 1em;
	margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
	width: 45%;
}
.ui-datepicker table {
	width: 100%;
	font-size: .9em;
	border-collapse: collapse;
	margin: 0 0 .4em;
}
.ui-datepicker th {
	padding: .7em .3em;
	text-align: center;
	font-weight: bold;
	border: 0;
}
.ui-datepicker td {
	border: 0;
	padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
	display: block;
	padding: .2em;
	text-align: right;
	text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
	background-image: none;
	margin: .7em 0 0 0;
	padding: 0 .2em;
	border-left: 0;
	border-right: 0;
	border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
	float: right;
	margin: .5em .2em .4em;
	cursor: pointer;
	padding: .2em .6em .3em .6em;
	width: auto;
	overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
	float: left;
}

/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
	width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
	float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
	width: 95%;
	margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
	width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
	width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
	width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
	border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
	clear: left;
}
.ui-datepicker-row-break {
	clear: both;
	width: 100%;
	font-size: 0;
}

/* RTL support */
.ui-datepicker-rtl {
	direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
	right: 2px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
	left: 2px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
	right: 1px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
	left: 1px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
	clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
	float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
	float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
	border-right-width: 0;
	border-left-width: 1px;
}

/* Icons */
.ui-datepicker .ui-icon {
	display: block;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
	left: .5em;
	top: .3em;
}
/*!
 * jQuery UI Dialog 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/dialog/#theming
 */
/*

 */

.ui-dialog {
	position: absolute;
	top: 0;
	left: 0;
	padding: .2em;
	outline: 0;
}
.ui-dialog .ui-dialog-titlebar {
	padding: .4em 1em;
	position: relative;
}
.ui-dialog .ui-dialog-title {
	float: left;
	margin: .1em 0;
	white-space: nowrap;
	width: 90%;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-dialog .ui-dialog-titlebar-close {
	position: absolute;
	right: .3em;
	top: 50%;
	width: 20px;
	margin: -10px 0 0 0;
	padding: 1px;
	height: 20px;
}
.ui-dialog .ui-dialog-content {
	position: relative;
	border: 0;
	padding: .5em 1em;
	background: none;
	overflow: auto;
}
.ui-dialog .ui-dialog-buttonpane {
	text-align: left;
	border-width: 1px 0 0 0;
	background-image: none;
	margin-top: .5em;
	padding: .3em 1em .5em .4em;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
	float: right;
}
.ui-dialog .ui-dialog-buttonpane button {
	margin: .5em .4em .5em 0;
	cursor: pointer;
}
.ui-dialog .ui-resizable-n {
	height: 2px;
	top: 0;
}
.ui-dialog .ui-resizable-e {
	width: 2px;
	right: 0;
}
.ui-dialog .ui-resizable-s {
	height: 2px;
	bottom: 0;
}
.ui-dialog .ui-resizable-w {
	width: 2px;
	left: 0;
}
.ui-dialog .ui-resizable-se,
.ui-dialog .ui-resizable-sw,
.ui-dialog .ui-resizable-ne,
.ui-dialog .ui-resizable-nw {
	width: 7px;
	height: 7px;
}
.ui-dialog .ui-resizable-se {
	right: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-sw {
	left: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-ne {
	right: 0;
	top: 0;
}
.ui-dialog .ui-resizable-nw {
	left: 0;
	top: 0;
}
.ui-draggable .ui-dialog-titlebar {
	cursor: move;
}
/*!
 * jQuery UI Draggable 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 */
/*

 */

.ui-draggable-handle {
	touch-action: none;
}
/*!
 * jQuery UI Menu 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/menu/#theming
 */
/*

 */

.ui-menu {
	list-style: none;
	padding: 0;
	margin: 0;
	display: block;
	outline: 0;
}
.ui-menu .ui-menu {
	position: absolute;
}
.ui-menu .ui-menu-item {
	margin: 0;
	cursor: pointer;
}
.ui-menu .ui-menu-item-wrapper {
	position: relative;
	padding: 3px 1em 3px .4em;
}
.ui-menu .ui-menu-divider {
	margin: 5px 0;
	height: 0;
	font-size: 0;
	line-height: 0;
	border-width: 1px 0 0 0;
}
.ui-menu .ui-state-focus,
.ui-menu .ui-state-active {
	margin: -1px;
}

/* icon support */
.ui-menu-icons {
	position: relative;
}
.ui-menu-icons .ui-menu-item-wrapper {
	padding-left: 2em;
}

/* left-aligned */
.ui-menu .ui-icon {
	position: absolute;
	top: 0;
	bottom: 0;
	left: .2em;
	margin: auto 0;
}

/* right-aligned */
.ui-menu .ui-menu-icon {
	left: auto;
	right: 0;
}
/*!
 * jQuery UI Progressbar 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/progressbar/#theming
 */
/*

 */

.ui-progressbar {
	height: 2em;
	text-align: left;
	overflow: hidden;
}
.ui-progressbar .ui-progressbar-value {
	margin: -1px;
	height: 100%;
}
.ui-progressbar .ui-progressbar-overlay {
	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
	height: 100%;
	opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
	background-image: none;
}
/*!
 * jQuery UI Resizable 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 */
/*

 */

.ui-resizable {
	position: relative;
}
.ui-resizable-handle {
	position: absolute;
	font-size: 0.1px;
	display: block;
	touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
.ui-resizable-autohide .ui-resizable-handle {
	display: none;
}
.ui-resizable-n {
	cursor: n-resize;
	height: 7px;
	width: 100%;
	top: -5px;
	left: 0;
}
.ui-resizable-s {
	cursor: s-resize;
	height: 7px;
	width: 100%;
	bottom: -5px;
	left: 0;
}
.ui-resizable-e {
	cursor: e-resize;
	width: 7px;
	right: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-w {
	cursor: w-resize;
	width: 7px;
	left: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-se {
	cursor: se-resize;
	width: 12px;
	height: 12px;
	right: 1px;
	bottom: 1px;
}
.ui-resizable-sw {
	cursor: sw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	bottom: -5px;
}
.ui-resizable-nw {
	cursor: nw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	top: -5px;
}
.ui-resizable-ne {
	cursor: ne-resize;
	width: 9px;
	height: 9px;
	right: -5px;
	top: -5px;
}
/*!
 * jQuery UI Selectable 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 */
/*

 */

.ui-selectable {
	touch-action: none;
}
.ui-selectable-helper {
	position: absolute;
	z-index: 100;
	border: 1px dotted black;
}
/*!
 * jQuery UI Selectmenu 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/selectmenu/#theming
 */
/*

 */

.ui-selectmenu-menu {
	padding: 0;
	margin: 0;
	position: absolute;
	top: 0;
	left: 0;
	display: none;
}
.ui-selectmenu-menu .ui-menu {
	overflow: auto;
	overflow-x: hidden;
	padding-bottom: 1px;
}
.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
	font-size: 1em;
	font-weight: bold;
	line-height: 1.5;
	padding: 2px 0.4em;
	margin: 0.5em 0 0 0;
	height: auto;
	border: 0;
}
.ui-selectmenu-open {
	display: block;
}
.ui-selectmenu-text {
	display: block;
	margin-right: 20px;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-selectmenu-button.ui-button {
	text-align: left;
	white-space: nowrap;
	width: 14em;
}
.ui-selectmenu-icon.ui-icon {
	float: right;
	margin-top: 0;
}
/*!
 * jQuery UI Sortable 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 */
/*

 */

.ui-sortable-handle {
	touch-action: none;
}
/*!
 * jQuery UI Slider 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/slider/#theming
 */
/*

 */

.ui-slider {
	position: relative;
	text-align: left;
}
.ui-slider .ui-slider-handle {
	position: absolute;
	z-index: 2;
	width: 1.2em;
	height: 1.2em;
	cursor: pointer;
	touch-action: none;
}
.ui-slider .ui-slider-range {
	position: absolute;
	z-index: 1;
	font-size: .7em;
	display: block;
	border: 0;
	background-position: 0 0;
}

.ui-slider-horizontal {
	height: .8em;
}
.ui-slider-horizontal .ui-slider-handle {
	top: -.3em;
	margin-left: -.6em;
}
.ui-slider-horizontal .ui-slider-range {
	top: 0;
	height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
	left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
	right: 0;
}

.ui-slider-vertical {
	width: .8em;
	height: 100px;
}
.ui-slider-vertical .ui-slider-handle {
	left: -.3em;
	margin-left: 0;
	margin-bottom: -.6em;
}
.ui-slider-vertical .ui-slider-range {
	left: 0;
	width: 100%;
}
.ui-slider-vertical .ui-slider-range-min {
	bottom: 0;
}
.ui-slider-vertical .ui-slider-range-max {
	top: 0;
}
/*!
 * jQuery UI Spinner 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/spinner/#theming
 */
/*

 */

.ui-spinner {
	position: relative;
	display: inline-block;
	overflow: hidden;
	padding: 0;
	vertical-align: middle;
}
.ui-spinner-input {
	border: none;
	background: none;
	color: inherit;
	padding: .222em 0;
	margin: .2em 0;
	vertical-align: middle;
	margin-left: .4em;
	margin-right: 2em;
}
.ui-spinner-button {
	width: 1.6em;
	height: 50%;
	font-size: .5em;
	padding: 0;
	margin: 0;
	text-align: center;
	position: absolute;
	cursor: default;
	display: block;
	overflow: hidden;
	right: 0;
}
/* more specificity required here to override default borders */
.ui-spinner a.ui-spinner-button {
	border-top-style: none;
	border-bottom-style: none;
	border-right-style: none;
}
.ui-spinner-up {
	top: 0;
}
.ui-spinner-down {
	bottom: 0;
}
/*!
 * jQuery UI Tabs 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/tabs/#theming
 */
/*

 */

.ui-tabs {
	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
	padding: .2em;
}
.ui-tabs .ui-tabs-nav {
	margin: 0;
	padding: .2em .2em 0;
}
.ui-tabs .ui-tabs-nav li {
	list-style: none;
	float: left;
	position: relative;
	top: 0;
	margin: 1px .2em 0 0;
	border-bottom-width: 0;
	padding: 0;
	white-space: nowrap;
}
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
	float: left;
	padding: .5em 1em;
	text-decoration: none;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
	margin-bottom: -1px;
	padding-bottom: 1px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
	cursor: text;
}
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
	cursor: pointer;
}
.ui-tabs .ui-tabs-panel {
	display: block;
	border-width: 0;
	padding: 1em 1.4em;
	background: none;
}
/*!
 * jQuery UI Tooltip 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/tooltip/#theming
 */
/*

 */

.ui-tooltip {
	padding: 8px;
	position: absolute;
	z-index: 9999;
	max-width: 300px;
}
body .ui-tooltip {
	border-width: 2px;
}
/*!
 * jQuery UI CSS Framework 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/category/theming/
 */
/*




















 */

/*!
 * jQuery UI CSS Framework 1.14.2
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 *
 * https://api.jqueryui.com/category/theming/
 */
/*


 */

/*
 * ============================================================
 *  HELPFUL VILLAGE — Design System
 *  Version 1.0
 *
 *  Usage: <link rel="stylesheet" href="helpfulvillage.css">
 *  Font:  <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800&display=swap" rel="stylesheet">
 * ============================================================
 */

/* ── Design Tokens ─────────────────────────────────────────── */

:root {

  /* Green — dominant brand color (from HV logo roof) */
  --hv-green:        #4AAE2A;
  --hv-green-rgb:    74, 174, 42; /* channels of --hv-green, for rgba() glows/tints (per-village override sets this) */
  --hv-green-dark:   #339018;   /* hover states */
  --hv-green-deep:   #236010;   /* dark text on green backgrounds */
  --hv-green-light:  #EEF8E8;   /* pale tint for backgrounds */
  --hv-green-mid:    #B8E0A0;   /* mid tone for avatars, borders */

  /* Navy — secondary brand color (from HV logo "VILLAGE") */
  --hv-navy:         #1A2A6C;
  --hv-navy-deep:    #111d52;   /* darkest navy — event hero background */
  --hv-navy-mid:     #223280;   /* mid navy */
  --hv-navy-light:   #E8EBF8;

  /* Yellow — accent color (from HV logo sun), three levels:
     --hv-yellow-active  : help/action buttons  (most saturated)
     --hv-yellow-soft    : flash notices, draft buttons (mid)
     --hv-yellow-header  : section card headers (palest)        */
  --hv-yellow-active: #FBF0A0;  /* help pill background */
  --hv-yellow-border: #E8D870;  /* help pill border */
  --hv-yellow-soft:   #FEFAE8;  /* flash notice, draft btn */
  --hv-yellow-mid:    #F5E080;  /* flash icon circle, borders */
  --hv-yellow-header: #FEFCF0;  /* card section headers */
  --hv-yellow-light:  #FFFEF5;  /* almost-white, draft btn bg */

  /* Warm neutrals */
  --hv-white:        #FFFFFF;
  --hv-warm-white:   #FDFDF9;
  --hv-page-bg:      #F6F7F2;   /* page background */
  --hv-card-bg:      #FEFEFB;   /* card background */
  --hv-border:       #DDE3D4;   /* default border */
  --hv-border-warm:  #D0D8C4;   /* input border */

  /* Text */
  --hv-text:         #162010;
  --hv-text-mid:     #384830;
  --hv-text-light:   #6A7860;
  --hv-error:        #C03020;

  /* Typography — senior-friendly sizes */
  --hv-sz-xs:    17px;
  --hv-sz-sm:    19px;
  --hv-sz-base:  22px;
  --hv-sz-md:    23px;
  --hv-sz-lg:    28px;
  --hv-sz-xl:    36px;

  /* Spacing & shape */
  --hv-input-h:  64px;   /* tall inputs for easy tapping */
  --hv-r:        10px;   /* default border radius */
  --hv-r-lg:     16px;   /* cards */
  --hv-r-pill:   100px;  /* pills & round buttons */
}

/* ── Reset ──────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ── Base ───────────────────────────────────────────────────── */
body {
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-base);
  background: var(--hv-page-bg);
  color: var(--hv-text);
  line-height: 1.6;
  min-height: 100vh;
}

/* Editable-page content: villages may set a default font via theme_colors[:editable_font]
   (emitted as --hv-editable-font by village_theme_style_tag). Unset -> inherits the page
   default (Nunito). Inline fonts the editor saves still win. */
.editable_page { font-family: var(--hv-editable-font, inherit); }

/* Editable-page content on the full editable-page views (editable_pages/show and the
   villages/index homepage) defaults to the more legible Atkinson Hyperlegible instead of
   Nunito. A village-set --hv-editable-font still wins; inline editor fonts still win. */
.editable_pages.show .editable_page,
.villages.index .editable_page { font-family: var(--hv-editable-font, 'Atkinson Hyperlegible'), sans-serif; }

/* Editable-page heading/link colours: villages may set these via theme_colors
   (emitted as --hv-editable-* by village_theme_style_tag). Unset -> inherit, so
   villages that customize nothing keep the default V2 heading colours. */
.editable_page h1 { color: var(--hv-editable-h1, inherit); }
.editable_page h2 { color: var(--hv-editable-h2, inherit); }
.editable_page h3 { color: var(--hv-editable-h3, inherit); }
.editable_page h4 { color: var(--hv-editable-h4, inherit); }
.editable_page a  { color: var(--hv-editable-link, var(--hv-green)); }

/* Legacy `class="button"` links in admin-authored content. V1 styled these via
   main.css, which the V2 layout no longer loads — restyle them as the V2
   primary action button. Scoped to .editable_page so the generic class name
   can't leak into hv-* UI. */
.editable_page .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 32px;
  border-radius: var(--hv-r-pill);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  cursor: pointer;
  background: var(--hv-green);
  color: #fff;
  border: 2.5px solid var(--hv-green);
  box-shadow: 0 4px 16px rgba(var(--hv-green-rgb),0.30);
  text-decoration: none;
  transition: all 0.2s ease;
}
.editable_page .button:hover {
  background: var(--hv-green-dark);
  border-color: var(--hv-green-dark);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 6px 22px rgba(var(--hv-green-rgb),0.40);
}

/* Restore list indentation inside rendered content. The global reset (`* { padding:0 }`
   above) zeroes the browser-default left padding on ul/ol, which collapses bullets and
   every indent level flush-left once the saved HTML renders — even though TinyMCE shows
   them indented in its own iframe. Scoped to content areas so the hv-* nav menus that
   rely on the zeroed reset are untouched. Nested lists inherit this, so each TinyMCE
   indent level steps in; inline padding-left the editor may emit still wins over this. */
.editable_page ul,
.editable_page ol,
.ev-description ul,
.ev-description ol { padding-left: 40px; margin: 0.5em 0; }
.editable_page li,
.ev-description li { margin-bottom: 4px; }

/* Constrain media in rendered CMS content to its container. Villages paste images
   into TinyMCE at natural size, so stored content holds things like width="1200";
   without this they bleed off the page. V1 had this rule as
   `div.mobile_editable_page img` (editable_pages.scss) on its separate mobile
   template — V2 has no mobile template, so the rule was lost in the migration.

   Deliberately NOT wrapped in a media query: overflow depends on the *container*,
   not the viewport. The .hv_flex_container columns go flex:1 at min-width:500px,
   making right_col roughly a quarter of the page, so a wide image bleeds on
   desktop too. max-width:100% is inert whenever the image already fits, so there
   is nothing to gate.

   height:auto is required, not cosmetic: stored content carries height attributes
   alongside width, so max-width alone shrinks the width while the browser honors
   the height attribute — distorting the image. Split from iframe below because
   height:auto collapses an iframe.

   No !important — village stylesheets load after this file (the layout yields
   :head_css after helpfulvillage), so villages can still override. */
.editable_page img,
.editable_page video,
.editable_page iframe { max-width: 100%; }

.editable_page img,
.editable_page video { height: auto; }

/* ── Screen-reader-only ─────────────────────────────────────── */
/* Visually hidden but still announced by assistive tech (skip links, etc.).
   Stays permanently off-screen — not revealed on focus. */
.sr-only { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

/* ── Default link colour ────────────────────────────────────── */
.hv-page-wrap a         { color: var(--hv-green-dark); }
.hv-page-wrap a:hover   { color: var(--hv-green); }
.hv-page-wrap a:visited { color: var(--hv-green-deep); }

/* Editable-page (CMS) content links keep their colour after being visited,
   matching the `.editable_page a` rule above — the visited colour must equal the
   link colour whether a village customizes it via --hv-editable-link (e.g.
   Pasadena) or falls back to --hv-green. Same specificity (0,2,1) as
   `.hv-page-wrap a:visited`, so this must sit AFTER it to win the tie. */
.editable_page a:visited { color: var(--hv-editable-link, var(--hv-green)); }

/* …but a `class="button"` link stays white after being visited: the visited
   rule above (0,2,1) outranks the base `.editable_page .button` (0,2,0), so it
   would otherwise repaint the button text with the link colour. */
.editable_page .button:visited { color: #fff; }

/* Button-style links keep white text regardless of the above */
.hv-page-wrap a.hv-btn,
.hv-page-wrap a.hv-btn-primary,
.hv-page-wrap a.hv-btn-view,
.hv-page-wrap a.hv-btn-search,
.hv-page-wrap a.hv-btn-volunteer { color: #fff; }
.hv-page-wrap a.hv-btn:hover,
.hv-page-wrap a.hv-btn-primary:hover,
.hv-page-wrap a.hv-btn-view:hover,
.hv-page-wrap a.hv-btn-search:hover,
.hv-page-wrap a.hv-btn-volunteer:hover { color: #fff; }

/* Secondary has a light-yellow background — must use navy text, not white */
.hv-page-wrap a.hv-btn-secondary,
.ui-widget-content a.hv-btn-secondary { color: var(--hv-btn-secondary-text, var(--hv-navy)); }
.hv-page-wrap a.hv-btn-secondary:hover,
.ui-widget-content a.hv-btn-secondary:hover { color: var(--hv-btn-secondary-text, var(--hv-navy)); }

/* Ghost is transparent — must use the dark muted text color, not white */
.hv-page-wrap a.hv-btn-ghost,
.ui-widget-content a.hv-btn-ghost { color: var(--hv-text-light); }
.hv-page-wrap a.hv-btn-ghost:hover,
.ui-widget-content a.hv-btn-ghost:hover { color: var(--hv-text); }

/* ── Header (logo column + stacked top-bar / nav column) ──────
   Single sticky shell so the big left-column logo visually spans
   both the top utility row and the nav row, with the green accent
   underline below the whole header instead of cutting between them. */
.hv-header {
  background: var(--hv-white);
  border-bottom: 4px solid var(--hv-green);
  display: flex;
  align-items: stretch;
  position: sticky;
  top: 0;
  z-index: 20;
  box-shadow: 0 2px 12px rgba(30,60,20,0.08);
}

.hv-header-logo {
  display: flex;
  align-items: center;
  padding: 0 28px;
  flex-shrink: 0;
  border-right: 1px solid var(--hv-border);
}

/* No village's logo may eat more than 280px of the header. Logos are sized by
   height (_logo sets it inline: 88px horizontal, 104px vertical), so a wide
   band like Sausalito's 640x122 upload comes out ~462px and starves the nav.
   .hv-header-logo is border-box, so 280px is the whole column including its
   paddings. object-fit keeps the aspect ratio inside the clamped box: without
   it the image would squash horizontally, and overriding the inline height
   instead would let tall logos render at intrinsic size and blow up the header. */
.hv-header-logo { max-width: 280px; }
.hv-header-logo img {
  max-width: 100%;
  object-fit: contain;
}

.hv-header-right {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

/* Villages with a banner: the header now stacks top-bar + banner + nav, so it is
   too tall to pin — render it static. Banner-less villages keep the sticky header. */
.hv-header--with-banner { position: static; }

/* ── Top utility bar (search + user controls) ─────────────── */
.hv-top-bar {
  background: var(--hv-white);
  border-bottom: 1px solid var(--hv-border);
  padding: 10px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.hv-logo-img {
  height: 52px;
  width: auto;
}

/* ── Nav bar ────────────────────────────────────────────────── */
.hv-nav {
  background: var(--hv-white);
  padding: 0 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  position: relative; /* anchors absolutely-positioned .hv-nav-logo */
}
.hv-nav-logo {
  position: absolute;
  right: 40px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  line-height: 0;
}

.hv-nav-item {
  display: inline-block;
  padding: 18px 24px;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-text-mid);
  text-decoration: none;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  transition: color 0.15s, border-color 0.15s;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  white-space: nowrap;
}

.hv-nav-item:hover { color: var(--hv-green); border-bottom-color: var(--hv-green-mid); }
.hv-nav-item.active { color: var(--hv-navy); border-bottom-color: var(--hv-navy); font-weight: 800; }

/* ── Nav dropdowns ───────────────────────────────────────────── */
.hv-nav-dropdown { position: relative; }

.hv-nav-sub {
  display: none;
  position: absolute;
  top: calc(100% + 2px);
  left: 0;
  background: var(--hv-white);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r);
  min-width: 230px;
  box-shadow: 0 6px 20px rgba(30,60,20,0.12);
  z-index: 200;
}

/* Hover-open only for hover-capable devices: iPadOS keeps :hover applied
   after a tap, which would defeat the touch tap-toggle's "second tap closes". */
@media (hover: hover) {
  .hv-nav-dropdown:hover .hv-nav-sub { display: block; }
}
/* Touch path — menu_.js toggles .is-open when (hover: none) */
.hv-nav-dropdown.is-open .hv-nav-sub { display: block; }

.hv-nav-sub-item {
  display: block;
  padding: 13px 20px;
  font-size: var(--hv-sz-sm);
  font-weight: 600;
  color: var(--hv-text-mid);
  text-decoration: none;
  border-bottom: 1px solid var(--hv-border);
  white-space: nowrap;
  transition: background 0.12s, color 0.12s;
}

.hv-nav-sub-item:last-child { border-bottom: none; }
.hv-nav-sub-item:hover { background: var(--hv-green-light); color: var(--hv-navy); }

/* Keyboard focus inside the dropdowns (mouse uses :hover above). The global
   :focus-visible ring sits outside the element; inside a bordered dropdown that
   gets clipped, so re-assert an inset ring + highlight for nav triggers/items. */
.hv-nav-item:focus-visible,
.hv-nav-sub-item:focus-visible {
  outline: 3px solid var(--hv-yellow-mid);
  outline-offset: -3px;
  background: var(--hv-green-light);
  color: var(--hv-navy);
}

.hv-nav-sub-header {
  padding: 10px 20px 8px;
  font-size: var(--hv-sz-xs);
  font-weight: 800;
  color: var(--hv-text-light);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-bottom: 1px solid var(--hv-border);
  background: var(--hv-green-light);
}

/* ── Sub-submenu (flyout) ────────────────────────────────────── */
.hv-nav-sub-group { position: relative; }

.hv-nav-sub-item--has-children::after {
  content: " ›";
  float: right;
  color: var(--hv-text-light);
}

.hv-nav-sub-sub {
  display: none;
  position: absolute;
  left: 100%;
  top: -2px;
  background: var(--hv-white);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r);
  min-width: 220px;
  box-shadow: 0 6px 20px rgba(30,60,20,0.12);
  z-index: 300;
}

@media (hover: hover) {
  .hv-nav-sub-group:hover > .hv-nav-sub-sub { display: block; }
}
.hv-nav-sub-group.is-open > .hv-nav-sub-sub { display: block; }

/* Flip to the LEFT of the parent when the default right-side position would
   overflow the viewport. Toggled by initNavSubmenuFlip in menu_.js. */
.hv-nav-sub-sub.hv-nav-sub-sub--flip-left {
  left: auto;
  right: 100%;
}

@media (max-width: 900px) {
  .hv-header-logo { padding: 0 16px; }
  /* The horizontal nav gives way to the hamburger + accordion panel */
  .hv-nav { display: none; }
}

/* ── Mobile nav (views_mobile/layouts/application) ─────────── */
.hv-hamburger {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  padding: 8px;
  background: none;
  border: none;
  cursor: pointer;
  border-radius: 8px;
}
.hv-hamburger span {
  display: block;
  height: 2px;
  background: var(--hv-navy);
  border-radius: 2px;
  transition: transform 0.2s, opacity 0.2s;
}
.hv-hamburger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hv-hamburger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.hv-hamburger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.hv-mobile-panel {
  display: none;
  position: fixed;
  top: 90px;
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--hv-white);
  overflow-y: auto;
  z-index: 18;
  border-top: 2px solid var(--hv-green-mid);
}
.hv-mobile-panel.is-open { display: block; }

.hv-mob-user-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 2px solid var(--hv-green-mid);
  background: var(--hv-green-light);
}
.hv-mob-user-name {
  font-size: 16px;
  font-weight: 700;
  color: var(--hv-navy);
}
/* Signed-in user accordion at the top of the mobile panel (My Profile /
   My Agenda / Change Password / Sign out) — keeps the old user row's visual
   identity (green summary, heavier separator) while behaving like the
   hv-mob-group accordions below it. Signed-out still uses .hv-mob-user-row. */
.hv-mob-user-group { border-bottom: 2px solid var(--hv-green-mid); }
.hv-mob-user-group > .hv-mob-summary { background: var(--hv-green-light); }

.hv-mob-group {
  border-bottom: 1px solid var(--hv-green-light);
}
.hv-mob-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  font-size: 17px;
  font-weight: 700;
  color: var(--hv-navy);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.hv-mob-summary::-webkit-details-marker { display: none; }
.hv-mob-summary::after {
  content: '›';
  font-size: 22px;
  color: var(--hv-green);
  transition: transform 0.2s;
  flex-shrink: 0;
}
details.hv-mob-group[open] > .hv-mob-summary::after { transform: rotate(90deg); }

.hv-mob-sub {
  background: var(--hv-green-light);
  padding: 6px 0;
}
.hv-mob-sub-link,
.hv-mob-sub .hv-nav-sub-item {
  display: block;
  padding: 13px 28px;
  font-size: 16px;
  color: var(--hv-navy);
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--hv-green-rgb),0.12);
}
.hv-mob-sub-link:last-child,
.hv-mob-sub .hv-nav-sub-item:last-child { border-bottom: none; }
.hv-mob-sub-link:active,
.hv-mob-sub .hv-nav-sub-item:active { background: var(--hv-green-mid); }

/* Nested accordion (sub-sub level, e.g. Admin > People Mgmt) */
.hv-mob-sub-group {
  border-bottom: 1px solid rgba(var(--hv-green-rgb),0.12);
}
.hv-mob-sub-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 28px;
  font-size: 16px;
  font-weight: 600;
  color: var(--hv-navy);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.hv-mob-sub-summary::-webkit-details-marker { display: none; }
.hv-mob-sub-summary::after {
  content: '›';
  font-size: 18px;
  color: var(--hv-green);
  transition: transform 0.2s;
  flex-shrink: 0;
}
details.hv-mob-sub-group[open] > .hv-mob-sub-summary::after { transform: rotate(90deg); }

.hv-mob-sub-sub {
  background: rgba(255,255,255,0.55);
  padding: 4px 0;
}
.hv-mob-sub-sub .hv-mob-sub-link {
  padding-left: 40px;
  font-size: 15px;
}
/* Admin-built custom menus can nest deeper than Admin > People Mgmt does, so
   keep indenting one more level rather than letting them all sit flush. */
.hv-mob-sub-sub .hv-mob-sub-group > .hv-mob-sub-summary { padding-left: 40px; }
.hv-mob-sub-sub .hv-mob-sub-sub .hv-mob-sub-link,
.hv-mob-sub-sub .hv-mob-sub-sub .hv-mob-sub-group > .hv-mob-sub-summary { padding-left: 52px; }

/* Top-level plain link (no children) */
.hv-mob-plain-link {
  display: block;
  padding: 16px 20px;
  font-size: 17px;
  font-weight: 700;
  color: var(--hv-navy);
  text-decoration: none;
  border-bottom: 1px solid var(--hv-green-light);
}
.hv-mob-plain-link:active { background: var(--hv-green-light); }

/* ── Desktop-layout hamburger + panel reuse (iPad / ≤900px) ───
   The desktop layout renders the same hamburger + panel as the phone
   layout, hidden above 900px. Rules live AFTER the base .hv-hamburger /
   .hv-mobile-panel definitions so they win at equal specificity.
   Ancestry scope (.hv-header …) leaves the phone top-bar hamburger alone;
   body:not(.mobile) leaves wide landscape phones (>900px) alone. */
.hv-header .hv-hamburger { display: none; }
@media (max-width: 900px) {
  .hv-header .hv-hamburger { display: flex; }
  #search-person-hv input { max-width: 140px; }
}
@media (min-width: 901px) {
  body:not(.mobile) .hv-mobile-panel { display: none; }
}

/* ── Bottom bar ─────────────────────────────────────────────── */
.hv-bottom-bar {
  background: var(--hv-footer-bg, var(--hv-white));
  border-top: 4px solid var(--hv-yellow-mid);
  padding: 14px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: var(--hv-sz-xs);
  color: var(--hv-footer-text, var(--hv-text-light));
  box-shadow: 0 -2px 10px rgba(30,60,20,0.06);
}

.hv-bottom-bar img { height: 36px; width: auto; }

/* ── Village banner (per-village top banner, see _village_banner2) ──── */
.hv-village-banner {
  position: relative;
  width: 100%;
  text-align: center;
  overflow: hidden;
}
.hv-village-banner-img {
  display: block;
  margin: 0 auto;
  max-width: 100%;
  height: auto;
}

/* Social icons overlay */
.hv-banner-socials {
  position: absolute;
  top: 20px;
  right: 15px;
  display: flex;
  align-items: center;
  gap: 6px;
  z-index: 2;
}
.hv-banner-socials.is-left { right: auto; left: 150px; }
.hv-banner-socials a { display: inline-flex; }
.hv-banner-socials img { height: 33px; width: auto; display: block; }

/* Overlaid logo */
.hv-banner-logo {
  position: absolute;
  z-index: 2;
  display: inline-block;
}
.hv-banner-logo img { display: block; height: 100%; width: auto; }

/* Action buttons overlay */
.hv-banner-actions {
  position: absolute;
  right: 35px;
  bottom: 10px;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  z-index: 2;
}
.hv-banner-actions.is-top {
  bottom: auto;
  top: 10px;
  flex-direction: column;
  align-items: stretch;
  max-width: 300px;
}
.hv-banner-btn {
  display: inline-block;
  padding: 10px 20px;
  min-width: 120px;
  font-weight: bold;
  text-align: center;
  text-decoration: none;
  border: 0;
  border-radius: 4px;
  cursor: pointer;
  font-family: inherit;
  font-size: 16px;
  line-height: 1.2;
}
.hv-banner-btn:hover { opacity: 0.92; }

/* Hide overlays on narrow screens; the image still shows */
@media (max-width: 900px) {
  .hv-banner-socials,
  .hv-banner-logo,
  .hv-banner-actions { display: none; }
}

/* ── Page wrap ──────────────────────────────────────────────── */
.hv-page-wrap {
  max-width: 1200px; /* 840px; */
  margin: 0 auto;
  padding: 44px 24px 100px;
}
.service_requests.new .hv-page-wrap,
.service_requests.create .hv-page-wrap { max-width: 960px; }

/* ── Page title row ─────────────────────────────────────────── */
.hv-page-title-row {
  display: flex;
  flex-wrap: wrap; /* action buttons drop below the title on narrow screens instead of overflowing */
  align-items: center;
  gap: 18px;
  margin-bottom: 36px;
}

.hv-page-icon {
  width: 62px;
  height: 62px;
  background: var(--hv-green);
  border-radius: var(--hv-r);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 4px 16px rgba(var(--hv-green-rgb),0.32);
}

.hv-page-icon svg { width: 30px; height: 30px; stroke: white; fill: none; }

.hv-page-title {
  font-size: var(--hv-sz-xl);
  font-weight: 800;
  color: var(--hv-navy);
  line-height: 1.15;
  /* This is the page's <h1> (or carries role=heading aria-level=1). Reset the
     UA heading margin so promoting the old <div> to <h1> doesn't shift layout. */
  margin: 0;
}

.hv-page-subtitle {
  font-size: var(--hv-sz-sm);
  color: var(--hv-text-light);
  margin-top: 4px;
  font-weight: 500;
}

/* ── Buttons ────────────────────────────────────────────────── */

/* Base button */
.hv-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  height: 66px;
  padding: 0 36px;
  border-radius: var(--hv-r-pill);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-md);
  font-weight: 800;
  cursor: pointer;
  border: 2.5px solid transparent;
  transition: all 0.15s;
  white-space: nowrap;
  text-decoration: none;
  /* <input type="submit"> keeps the native push-button look in WebKit, which
     paints it grey and ignores the variant background below. Every .hv-btn-*
     variant sets its own background, so resetting the appearance is safe. */
  appearance: none;
  -webkit-appearance: none;
}

/* Disabled state — used by App.StripePayment.notReady() while the Stripe
   Payment Element is still mounting, and any other JS that toggles the
   disabled prop instead of painting inline colors */
.hv-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  box-shadow: none;
}

/* Primary — green, for main submit/save actions */
.hv-btn-primary {
  background: var(--hv-green);
  color: white;
  border-color: var(--hv-green);
  box-shadow: 0 4px 16px rgba(var(--hv-green-rgb),0.30);
}

.hv-btn-primary:hover {
  background: var(--hv-green-dark);
  border-color: var(--hv-green-dark);
  transform: translateY(-2px);
  box-shadow: 0 6px 22px rgba(var(--hv-green-rgb),0.40);
}

/* Secondary — yellow, for draft/save-later actions */
.hv-btn-secondary {
  background: var(--hv-btn-secondary-bg, var(--hv-yellow-light));
  color: var(--hv-btn-secondary-text, var(--hv-navy));
  border-color: var(--hv-btn-secondary-border, var(--hv-yellow-mid));
}

.hv-btn-secondary:hover {
  background: var(--hv-btn-secondary-hover-bg, var(--hv-yellow-mid));
  transform: translateY(-1px);
}

/* Ghost — for cancel/back */
.hv-btn-ghost {
  background: transparent;
  color: var(--hv-text-light);
  border-color: var(--hv-border-warm);
}

.hv-btn-ghost:hover {
  color: var(--hv-text);
  border-color: var(--hv-text-light);
}

/* Danger — soft red, for destructive delete actions */
.hv-btn-danger {
  background: #fee2e2;
  color: #991b1b;
  border-color: #fca5a5;
}

.hv-btn-danger:hover {
  background: #fecaca;
  border-color: #f87171;
  transform: translateY(-1px);
}

/* Anchor .hv-btn defaults to white text (see a.hv-btn rule above); override so
   danger anchors keep the soft dark-red foreground. */
.hv-page-wrap a.hv-btn-danger,
.hv-page-wrap a.hv-btn-danger:hover { color: #991b1b; }

/* Help pill — yellow action button (e.g. phone help) */
.hv-help-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #FBF0A0;
  color: var(--hv-navy);
  border: 2.5px solid #E8D870;
  padding: 10px 22px;
  border-radius: var(--hv-r-pill);
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  box-shadow: 0 1px 6px rgba(200,170,0,0.15);
  transition: background 0.15s, box-shadow 0.15s, transform 0.15s;
  cursor: pointer;
  text-decoration: none;
}

.hv-help-pill:hover {
  background: #F5E870;
  border-color: #D4C440;
  transform: translateY(-1px);
  box-shadow: 0 3px 10px rgba(200,170,0,0.22);
}

/* Search button (inside search bar) */
.hv-search-btn {
  height: var(--hv-input-h);
  padding: 0 30px;
  background: var(--hv-green);
  border: none;
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  color: white;
  cursor: pointer;
  transition: background 0.15s;
  white-space: nowrap;
  flex-shrink: 0;
}

.hv-search-btn:hover { background: var(--hv-green-dark); }

/* ── Search bar ─────────────────────────────────────────────── */
.hv-search-section { margin-bottom: 20px; }

.hv-search-wrap {
  background: var(--hv-card-bg);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r);
  display: flex;
  align-items: center;
  overflow: hidden;
  box-shadow: 0 1px 6px rgba(30,60,20,0.05);
  transition: border-color 0.15s, box-shadow 0.15s;
}

.hv-search-wrap:focus-within {
  border-color: var(--hv-green);
  box-shadow: 0 0 0 4px rgba(var(--hv-green-rgb),0.13);
}

.hv-search-icon { padding: 0 18px; color: var(--hv-text-light); flex-shrink: 0; }

.hv-search-wrap input {
  flex: 1;
  min-width: 0; /* a flex item won't shrink below its intrinsic width otherwise, pushing the Search button out on a phone */
  height: var(--hv-input-h);
  border: none;
  background: transparent;
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-md);
  color: var(--hv-text);
  outline: none;
}

.hv-search-wrap input::placeholder { color: #A8B8A0; font-style: italic; }

@media (max-width: 640px) {
  .hv-search-wrap .hv-search-icon { padding: 0 10px; }
  .hv-search-wrap .hv-search-btn { padding: 0 16px; }
}

/* ── Cards ──────────────────────────────────────────────────── */
.hv-card {
  background: var(--hv-card-bg);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r-lg);
  overflow: hidden;
  box-shadow: 0 1px 8px rgba(30,60,20,0.05);
}

/* Numbered section card (with pale yellow header) */
.hv-card-header {
  padding: 16px 26px;
  border-bottom: 2px solid var(--hv-border);
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--hv-yellow-header);
}

.hv-card-num {
  width: 36px;
  height: 36px;
  background: var(--hv-green);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  color: white;
  flex-shrink: 0;
  box-shadow: 0 2px 6px rgba(var(--hv-green-rgb),0.30);
}

.hv-card-title {
  font-size: var(--hv-sz-md);
  font-weight: 800;
  color: var(--hv-navy);
}

.hv-card-body { padding: 28px 26px; }

/* Card entrance animation */
.hv-card { animation: hvRiseIn 0.35s ease both; }
.hv-card:nth-child(1){animation-delay:0.00s}
.hv-card:nth-child(2){animation-delay:0.06s}
.hv-card:nth-child(3){animation-delay:0.12s}
.hv-card:nth-child(4){animation-delay:0.18s}
.hv-card:nth-child(5){animation-delay:0.24s}
.hv-card:nth-child(6){animation-delay:0.30s}

@keyframes hvRiseIn {
  from { opacity:0; transform:translateY(14px); }
  to   { opacity:1; transform:translateY(0); }
}

/* ── Form fields ────────────────────────────────────────────── */
.hv-field-group { margin-bottom: 24px; }
.hv-field-group:last-child { margin-bottom: 0; }
.hv-field       { margin-bottom: 20px; }
.hv-field:last-child { margin-bottom: 0; }

.hv-label {
  display: block;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-text-mid);
  margin-bottom: 10px;
  letter-spacing: 0.01em;
}

.hv-required {
  color: var(--hv-error);
  margin-left: 3px;
  font-size: 22px;
  vertical-align: middle;
  line-height: 1;
}

.hv-input {
  width: 100%;
  height: var(--hv-input-h);
  padding: 0 20px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  background: var(--hv-white);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-md);
  color: var(--hv-text);
  outline: none;
  appearance: none;
  transition: border-color 0.15s, box-shadow 0.15s;
}

.hv-input:focus {
  border-color: var(--hv-green);
  box-shadow: 0 0 0 4px rgba(var(--hv-green-rgb),0.13);
  background: var(--hv-warm-white);
}

.hv-input::placeholder { color: #B0C0A8; font-style: italic; }

/* Read-only field — same shape as hv-input but non-editable appearance */
.hv-static-val {
  width: 100%;
  min-height: var(--hv-input-h);
  padding: 0 20px;
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r);
  background: var(--hv-page-bg);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-md);
  color: var(--hv-text);
  display: flex;
  align-items: center;
}

select.hv-input {
  display: block;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%234AAE2A' stroke-width='2.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 18px center;
  padding-right: 48px;
  cursor: pointer;
  box-shadow: none !important;
}

textarea.hv-input {
  height: auto;
  padding: 18px 20px;
  min-height: 120px;
  line-height: 1.55;
  resize: vertical;
}

.hv-field-hint {
  font-size: var(--hv-sz-xs);
  color: var(--hv-text-light);
  margin-top: 7px;
  display: flex;
  align-items: center;
  gap: 6px;
}

/* Inline validation error message + invalid-field treatment.
   (WCAG 3.3.1 Error Identification / 3.3.3 Error Suggestion.) The error text is
   referenced from the field via aria-describedby; the red border is paired with
   that text + aria-invalid, so meaning is not conveyed by colour alone (1.4.1). */
.hv-field-error {
  font-size: var(--hv-sz-xs);
  color: var(--hv-error);
  font-weight: 600;
  margin-top: 7px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.hv-input[aria-invalid="true"] { border-color: var(--hv-error); }

/* ── Checkbox rows ──────────────────────────────────────────── */
.hv-check-row {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 20px 22px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  cursor: pointer;
  margin-bottom: 12px;
  background: var(--hv-white);
  transition: border-color 0.15s, background 0.15s;
}

.hv-check-row:last-child { margin-bottom: 0; }

.hv-check-row:hover {
  border-color: var(--hv-green);
  background: var(--hv-green-light);
}

.hv-check-row input[type="checkbox"] {
  appearance: none;
  width: 34px;
  height: 34px;
  border: 2.5px solid var(--hv-border-warm);
  border-radius: 7px;
  background: var(--hv-white);
  flex-shrink: 0;
  cursor: pointer;
  transition: all 0.15s;
  position: relative;
}

.hv-check-row input[type="checkbox"]:checked {
  background: var(--hv-green);
  border-color: var(--hv-green);
}

.hv-check-row input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 7px;
  top: 8px;
  width: 16px;
  height: 9px;
  border-left: 3px solid white;
  border-bottom: 3px solid white;
  transform: rotate(-45deg);
}

.hv-check-row input[type="checkbox"]:focus {
  outline: none;
  box-shadow: 0 0 0 4px rgba(var(--hv-green-rgb),0.20);
}

/* ── Styled file upload ─────────────────────────────────────── */
.hv-file-upload {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.hv-file-upload .hv-file-input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}
.hv-file-name {
  font-size: var(--hv-sz-sm);
  color: var(--hv-text-light);
  font-style: italic;
  min-width: 0;
  word-break: break-all;
}

.hv-check-title { font-size: var(--hv-sz-base); font-weight: 700; color: var(--hv-text); }
.hv-check-desc  { font-size: 16px; color: var(--hv-text-light); margin-top: 3px; }

/* ── Member display ─────────────────────────────────────────── */
.hv-member-row {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 20px 22px;
  background: var(--hv-green-light);
  border: 2px solid var(--hv-green-mid);
  border-radius: var(--hv-r);
}

.hv-member-avatar {
  width: 58px;
  height: 58px;
  background: var(--hv-green-mid);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--hv-sz-md);
  font-weight: 800;
  color: var(--hv-green-deep);
  flex-shrink: 0;
}

.hv-member-name { font-size: var(--hv-sz-md); font-weight: 700; color: var(--hv-navy); }
.hv-member-addr { font-size: var(--hv-sz-sm); color: var(--hv-text-mid); margin-top: 3px; }

/* ── Duration button grid ───────────────────────────────────── */
.hv-dur-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.hv-dur-btn {
  padding: 18px 10px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  background: var(--hv-white);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-base);
  font-weight: 700;
  color: var(--hv-text-mid);
  cursor: pointer;
  text-align: center;
  transition: all 0.15s;
}

.hv-dur-btn:hover {
  border-color: var(--hv-green);
  color: var(--hv-green-dark);
  background: var(--hv-green-light);
}

.hv-dur-btn.hv-selected {
  background: var(--hv-green);
  border-color: var(--hv-green);
  color: white;
  font-weight: 800;
  box-shadow: 0 3px 10px rgba(var(--hv-green-rgb),0.30);
}

/* ── Flash / alert notices ──────────────────────────────────── */
.hv-flash {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--hv-yellow-light);
  border: 2px solid var(--hv-yellow-mid);
  border-radius: var(--hv-r);
  padding: 18px 20px;
  margin-bottom: 28px;
  animation: hvRiseIn 0.3s ease both;
}

.hv-flash-icon {
  width: 44px;
  height: 44px;
  background: var(--hv-yellow-mid);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.hv-flash-icon svg { width: 22px; height: 22px; stroke: var(--hv-navy); stroke-width: 3; fill: none; }
.hv-flash-text { flex: 1; font-size: var(--hv-sz-base); font-weight: 600; color: var(--hv-navy); }

.hv-flash-dismiss {
  width: 36px;
  height: 36px;
  background: #D8D4C8;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.15s;
}

.hv-flash-dismiss:hover { background: #C4C0B4; }
.hv-flash-dismiss svg { width: 14px; height: 14px; stroke: var(--hv-text-mid); stroke-width: 2.5; fill: none; }

/* ── Info strip ─────────────────────────────────────────────── */
.hv-info-strip {
  background: var(--hv-green-light);
  border: 2px solid var(--hv-green-mid);
  border-radius: var(--hv-r);
  padding: 14px 20px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: var(--hv-sz-sm);
  color: var(--hv-green-deep);
  font-weight: 600;
}

.hv-info-strip svg { stroke: var(--hv-green); flex-shrink: 0; fill: none; }

/* ── Layout helpers ─────────────────────────────────────────── */
.hv-grid-2   { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.hv-grid-3   { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }
.hv-grid-sidebar { display: grid; grid-template-columns: 1fr 300px; gap: 24px; align-items: start; }
.hv-grid-campaign { display: grid; grid-template-columns: 3fr 2fr; gap: 24px; align-items: start; }
.hv-grid-addr { display: grid; grid-template-columns: 110px 1fr; gap: 14px; }
.hv-divider  { height: 2px; background: var(--hv-border); margin: 24px 0; border-radius: 2px; }
.hv-sep-dashed { margin-top: 20px; padding-top: 20px; border-top: 2px dashed var(--hv-border); }
.hv-btn-row  { display: flex; gap: 14px; flex-wrap: wrap; }
.hv-mb-0     { margin-bottom: 0 !important; }

/* ── Focus ring ─────────────────────────────────────────────── */
:focus-visible { outline: 3px solid var(--hv-yellow-mid); outline-offset: 3px; }

/* ── Tablet / iPad portrait (form grids stack) ──────────────── */
@media (max-width: 900px) {
  .hv-grid-2,
  .hv-grid-3,
  .hv-grid-sidebar,
  .hv-grid-campaign { grid-template-columns: 1fr; }
  .hv-grid-campaign .hv-campaign-aside { order: -1; }
}

/* ── Mobile (form pages) ─────────────────────────────────────── */
@media (max-width: 620px) {
  .hv-top-bar,
  .hv-bottom-bar    { padding: 12px 18px; }
  .hv-page-wrap     { padding: 28px 16px 80px; }
  /* Fundraising show2: the donation form shell nests _form2's own hv-cards;
     flatten it so the inner boxes align with the 16px page gutter. The navy
     header keeps its background and becomes a standalone section banner. */
  .fc2-form-shell   { border: none; background: transparent; box-shadow: none; overflow: visible; }
  .fc2-form-shell > .hv-card-header { border-radius: var(--hv-r-lg); margin-bottom: 16px; }
  .fc2-form-shell > .hv-card-body   { padding: 0; }
  .hv-card-body,
  .hv-submit-area   { padding: 22px 18px; }
  .hv-card-header   { padding: 16px 18px; }
  .hv-grid-addr     { grid-template-columns: 1fr; }
  .hv-dur-grid      { grid-template-columns: 1fr 1fr; }
  .hv-btn-row       { flex-direction: column; }
  .hv-btn-row .hv-btn { width: 100%; }
  .hv-logo-img      { height: 40px; }
}

/* ── Village Talk (posts/index) groups + interactions panel ──── */
/* Section heading shared by the desktop sidebar cards and the mobile panel. */
.hv-posts-side-title {
  font-size: var(--hv-sz-xs);
  font-weight: 600;
  color: var(--hv-text-mid);
  margin-bottom: 10px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
/* Mobile collapsible panel: hidden on desktop, shown ≤620px (below). */
.hv-posts-mobile-panel { display: none; margin-bottom: 16px; }
.hv-posts-mobile-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 18px;
  cursor: pointer;
  list-style: none;
  font-size: var(--hv-sz-sm);
  font-weight: 600;
  color: var(--hv-text-dark);
}
.hv-posts-mobile-summary::-webkit-details-marker { display: none; }
.hv-posts-mobile-caret { transition: transform .15s ease; }
.hv-posts-mobile-panel[open] .hv-posts-mobile-caret { transform: rotate(180deg); }
.hv-posts-mobile-body { padding: 0 18px 16px; }
/* Flat sections inside the mobile panel (no nested cards), divided by a rule. */
.hv-posts-side-section { padding: 14px 0; border-top: 1px solid var(--hv-border); }
.hv-posts-side-section:first-child { padding-top: 4px; border-top: none; }

@media (max-width: 620px) {
  .hv-posts-sidebar      { display: none; }
  .hv-posts-mobile-panel { display: block; }
}

/* ── Blog post (blog_posts/show2) archive ────────────────────── */
/* Desktop shows the .hv-blog-sidebar column; ≤620px it's hidden and the archive
   collapses into .hv-blog-mobile-panel above the post. Reuses the shared
   .hv-posts-mobile-summary/-body/-caret styling above. */
.hv-blog-mobile-panel { display: none; margin-bottom: 16px; }
.hv-blog-mobile-panel[open] .hv-posts-mobile-caret { transform: rotate(180deg); }

@media (max-width: 620px) {
  .hv-blog-sidebar      { display: none; }
  .hv-blog-mobile-panel { display: block; }
}

/* ── Detail / Show page ──────────────────────────────────────── */

/* Summary & trip table cards */
.hv-table-card {
  background: var(--hv-card-bg);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r-lg);
  overflow: hidden;
  box-shadow: 0 1px 8px rgba(30,60,20,0.05);
  margin-bottom: 22px;
}

.hv-col-headers {
  display: grid;
  background: var(--hv-green-light);
  border-bottom: 2px solid var(--hv-border);
  padding: 12px 22px;
}

.hv-col-headers.summary-cols {
  grid-template-columns: 160px 120px 120px 100px 1fr 180px 180px;
}

.hv-col-headers.trip-cols {
  grid-template-columns: 1fr 1fr 200px 200px 120px;
}

.hv-col-header {
  font-size: var(--hv-sz-xs);
  font-weight: 800;
  color: var(--hv-green-deep);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.hv-data-row {
  display: grid;
  padding: 18px 22px;
  border-bottom: 2px solid var(--hv-border);
  align-items: center;
}

.hv-data-row:last-child { border-bottom: none; }

.hv-data-row.summary-cols {
  grid-template-columns: 160px 120px 120px 100px 1fr 180px 180px;
}

.hv-data-row.trip-cols {
  grid-template-columns: 1fr 1fr 200px 200px 120px;
}

.hv-cell {
  font-size: var(--hv-sz-sm);
  color: var(--hv-text);
  padding-right: 12px;
  line-height: 1.4;
}

.hv-cell-date   { font-weight: 800; color: var(--hv-navy); }
.hv-cell-status { font-weight: 700; color: var(--hv-green-dark); }

.hv-member-link {
  font-weight: 700;
  color: var(--hv-green-dark);
  text-decoration: underline;
}

.hv-badge-important {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--hv-yellow-active);
  border: 2px solid var(--hv-yellow-border);
  color: var(--hv-navy);
  font-size: 12px;
  font-weight: 800;
  padding: 2px 10px;
  border-radius: var(--hv-r-pill);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-right: 4px;
}

/* Trip actions footer */
.hv-trip-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  padding: 16px 22px;
  border-top: 2px solid var(--hv-border);
  background: var(--hv-yellow-header);
}

/* Two-column detail layout */
.hv-detail-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
  align-items: start;
}

/* Info card */
.hv-info-card {
  background: var(--hv-card-bg);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r-lg);
  overflow: hidden;
  box-shadow: 0 1px 8px rgba(30,60,20,0.05);
  margin-bottom: 18px;
}

/* Info rows */
.hv-info-row {
  display: flex;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--hv-border);
  font-size: var(--hv-sz-sm);
  line-height: 1.5;
}

.hv-info-row:last-child { border-bottom: none; padding-bottom: 0; }
.hv-info-row:first-child { padding-top: 0; }

.hv-info-label {
  font-weight: 700;
  color: var(--hv-text-mid);
  flex-shrink: 0;
  min-width: 140px;
}

.hv-info-value { color: var(--hv-text); flex: 1; }

.hv-info-link {
  color: var(--hv-green-dark);
  font-weight: 700;
  text-decoration: underline;
}

/* Collapsible sections */
.hv-collapsible {
  background: var(--hv-card-bg);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r);
  margin-bottom: 8px;
  overflow: hidden;
}

.hv-collapsible-trigger {
  width: 100%;
  padding: 16px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: none;
  border: none;
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-navy);
  cursor: pointer;
  text-align: left;
  transition: background 0.15s;
}

.hv-collapsible-trigger:hover { background: var(--hv-green-light); }

.hv-collapsible-trigger svg {
  width: 18px;
  height: 18px;
  stroke: var(--hv-text-light);
  fill: none;
  transition: transform 0.2s;
  flex-shrink: 0;
}

.hv-collapsible.hv-open .hv-collapsible-trigger svg { transform: rotate(180deg); }

.hv-collapsible-body {
  display: none;
  padding: 16px 20px;
  border-top: 2px solid var(--hv-border);
  font-size: var(--hv-sz-sm);
  color: var(--hv-text-mid);
}

.hv-collapsible.hv-open .hv-collapsible-body { display: block; }

/* Volunteer CTA button */
.hv-btn-volunteer {
  width: 100%;
  height: 66px;
  background: var(--hv-green);
  color: white;
  border: none;
  border-radius: var(--hv-r);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-md);
  font-weight: 800;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  box-shadow: 0 4px 16px rgba(var(--hv-green-rgb),0.32);
  transition: background 0.15s, transform 0.15s, box-shadow 0.15s;
  text-decoration: none;
  margin-bottom: 18px;
}

.hv-btn-volunteer:hover {
  background: var(--hv-green-dark);
  transform: translateY(-2px);
  box-shadow: 0 6px 22px rgba(var(--hv-green-rgb),0.42);
}

/* Admin search inputs */
.hv-search-row { display: flex; gap: 10px; align-items: center; margin-bottom: 14px; }

.hv-search-input {
  width: 100%;
  height: 48px;
  padding: 0 16px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  background: var(--hv-white);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  color: var(--hv-text);
  outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
}

.hv-search-input:focus {
  border-color: var(--hv-green);
  box-shadow: 0 0 0 3px rgba(var(--hv-green-rgb),0.13);
}

.hv-search-input::placeholder { color: #B0C0A8; font-style: italic; }

.hv-btn-search {
  height: 48px;
  padding: 0 24px;
  background: var(--hv-green);
  color: white;
  border: none;
  border-radius: var(--hv-r);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  cursor: pointer;
  transition: background 0.15s;
  white-space: nowrap;
}

.hv-btn-search:hover { background: var(--hv-green-dark); }

.hv-text-link {
  font-size: var(--hv-sz-sm);
  color: var(--hv-green-dark);
  text-decoration: underline;
  display: block;
  margin-bottom: 6px;
  font-weight: 600;
}

/* Page title row (detail variant — space-between) */
.hv-page-title-row-detail {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 28px;
  flex-wrap: wrap;
  gap: 16px;
}

.hv-page-title-left { display: flex; align-items: center; gap: 18px; }

/* ── Detail page responsive ──────────────────────────────────── */
@media (max-width: 860px) {
  .hv-detail-grid { grid-template-columns: 1fr; }
  .hv-col-headers.summary-cols,
  .hv-data-row.summary-cols {
    grid-template-columns: 100px 80px 80px 70px 1fr 130px 110px;
    font-size:var(--hv-sz-sm);
  }
}

@media (max-width: 620px) {
  .hv-col-headers.summary-cols,
  .hv-data-row.summary-cols { display: none; }
  .hv-col-headers.trip-cols,
  .hv-data-row.trip-cols { grid-template-columns: 1fr 1fr; }
  .hv-data-row.trip-cols .hv-cell:nth-child(3),
  .hv-data-row.trip-cols .hv-cell:nth-child(4) { display: none; }
}

/* ── List of Requests (index2) ───────────────────────────────── */

/* Tab strip */
.hv-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--hv-border);
  margin-bottom: 0;
}

.hv-tab {
  display: inline-block;
  padding: 14px 32px;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-text-light);
  cursor: pointer;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  transition: color 0.15s, border-color 0.15s;
  text-decoration: none;
}

.hv-tab:hover { color: var(--hv-green); }
.hv-tab.active { color: var(--hv-navy); border-bottom-color: var(--hv-navy); }

/* Filter header row */
.hv-table-filters {
  background: var(--hv-yellow-header);
  border-bottom: 2px solid var(--hv-border);
  padding: 14px 22px;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.hv-filter-label {
  font-size: var(--hv-sz-xs);
  font-weight: 700;
  color: var(--hv-text-light);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-right: 4px;
}

.hv-filter-select {
  height: 40px;
  padding: 0 36px 0 14px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  background: var(--hv-white);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 600;
  color: var(--hv-text);
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%234AAE2A' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  cursor: pointer;
  transition: border-color 0.15s;
}

.hv-filter-select:focus {
  border-color: var(--hv-green);
  box-shadow: 0 0 0 3px rgba(var(--hv-green-rgb),0.13);
}

/* Index column headers — 8-column grid */
.hv-col-headers.index-cols {
  grid-template-columns: 130px 80px 80px 100px 160px 200px 1fr 80px;
  padding: 12px 22px;
  border-bottom: 2px solid var(--hv-border);
  column-gap: 16px;
}

/* Request rows */
.hv-req-row {
  display: grid;
  padding: 20px 22px;
  border-bottom: 2px solid var(--hv-border);
  align-items: start;
  transition: background 0.12s;
  column-gap: 8px;
}

.hv-req-row.index-cols {
  grid-template-columns: 130px 80px 80px 100px 160px 200px 1fr 80px;
}

.hv-req-row:last-child { border-bottom: none; }
.hv-req-row:hover { background: var(--hv-green-light); }
.hv-req-row--overdue           { background: #fff0f0; }
.hv-req-row--overdue:hover     { background: #ffd6d6; }
.hv-req-row--new               { background: #e8f4fd; }
.hv-req-row--new:hover         { background: #c8e6f9; }

/* ── Multiple-selection mode (index2) ── */
.hv-ms-checkbox { display: none; align-items: center; justify-content: center; }
.hv-ms-bar {
  display: none;
  align-items: center;
  padding: 10px 22px;
  background: var(--hv-navy-light);
  border-bottom: 2px solid var(--hv-border);
  gap: 12px;
}
#index2-table-card.hv-ms-active .hv-ms-checkbox { display: flex; }
#index2-table-card.hv-ms-active .hv-ms-bar      { display: flex; }
#index2-table-card.hv-ms-active .hv-col-headers.index-cols,
#index2-table-card.hv-ms-active .hv-req-row.index-cols {
  grid-template-columns: 40px 130px 80px 80px 100px 160px 200px 1fr 80px;
}

.hv-req-date {
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  color: var(--hv-navy);
  line-height: 1.4;
}

.hv-req-date-sub {
  font-size: var(--hv-sz-xs);
  font-weight: 600;
  color: var(--hv-text-light);
  margin-top: 2px;
}

.hv-req-time {
  font-size: var(--hv-sz-sm);
  color: var(--hv-text-mid);
  font-weight: 600;
  padding-top: 2px;
  text-align: center;
}

.hv-req-status {
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  padding-top: 2px;
  text-align: center;
}

.hv-status-open    { color: var(--hv-green-dark); }
.hv-status-matched { color: var(--hv-navy); }
.hv-status-closed  { color: var(--hv-text-light); }

.hv-req-member {
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-green-dark);
  text-decoration: underline;
  cursor: pointer;
  line-height: 1.4;
  text-align: center;
}

.hv-req-village {
  font-size: var(--hv-sz-xs);
  color: var(--hv-text-light);
  font-weight: 600;
  text-align: center;
}

.hv-req-service {
  font-size: var(--hv-sz-sm);
  color: var(--hv-text-mid);
  font-weight: 600;
  padding-top: 2px;
  line-height: 1.4;
  text-align: center;
}

.hv-req-purpose {
  font-size: var(--hv-sz-sm);
  color: var(--hv-text);
  padding-top: 2px;
  line-height: 1.5;
}

/* View button */
.hv-btn-view {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 44px;
  padding: 0 22px;
  background: var(--hv-green);
  color: white;
  border: none;
  border-radius: var(--hv-r);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  cursor: pointer;
  transition: background 0.15s, transform 0.12s;
  box-shadow: 0 2px 8px rgba(var(--hv-green-rgb),0.25);
  text-decoration: none;
  white-space: nowrap;
}

.hv-btn-view:hover {
  background: var(--hv-green-dark);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(var(--hv-green-rgb),0.35);
}

/* index2 service-requests table: compact View button so its column can be
   narrower, giving the Purpose column more width. Scoped to rows in this table
   so the standalone .hv-btn-view used elsewhere keeps its full size. */
.hv-req-row .hv-btn-view {
  height: 36px;
  padding: 0 16px;
  font-weight: 400;
}

/* Pagination wrapper */
.hv-pagination {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 44px;
  margin-top: 20px;
}

/* Style will_paginate output to look like HV buttons */
.hv-pagination .pagination {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.hv-pagination .pagination a,
.hv-pagination .pagination span.disabled,
.hv-pagination .pagination em.current {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 52px;
  height: 52px;
  padding: 0 16px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  background: var(--hv-card-bg);
  font-family: 'Nunito', sans-serif;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-text-mid);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.15s;
}

.hv-pagination .pagination a:hover {
  border-color: var(--hv-green);
  color: var(--hv-green-dark);
  background: var(--hv-green-light);
}

.hv-pagination .pagination em.current {
  background: var(--hv-navy);
  border-color: var(--hv-navy);
  color: white;
  box-shadow: 0 2px 8px rgba(26,42,108,0.25);
  font-style: normal;
}

.hv-pagination .pagination span.disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.hv-pagination .pagination .previous_page,
.hv-pagination .pagination .next_page {
  padding: 0 22px;
  min-width: auto;
}

/* Search service requests section (index bottom) */
.hv-search-section-wrap {
  background: var(--hv-card-bg);
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r-lg);
  overflow: hidden;
  box-shadow: 0 1px 8px rgba(30,60,20,0.05);
}

.hv-search-section-header {
  background: var(--hv-yellow-header);
  border-bottom: 2px solid var(--hv-border);
  padding: 18px 28px;
  display: flex;
  align-items: center;
  gap: 14px;
}

.hv-search-section-icon {
  width: 38px;
  height: 38px;
  background: var(--hv-green);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.hv-search-section-icon svg {
  width: 18px;
  height: 18px;
  stroke: white;
  fill: none;
  stroke-width: 2.5;
  stroke-linecap: round;
}

.hv-search-section-title {
  font-size: var(--hv-sz-md);
  font-weight: 800;
  color: var(--hv-navy);
}

.hv-search-section-body { padding: 28px; }

.hv-search-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr auto;
  gap: 14px;
  align-items: end;
}

.hv-search-field { display: flex; flex-direction: column; gap: 8px; }

/* Filter selects that duplicate the column-header filters — hidden on desktop
   (headers do the job there) but kept in the DOM so the header→form JS sync
   still finds them. Revealed at the ≤900px breakpoint where headers disappear. */
.hv-search-grid .hv-mobile-only { display: none; }

.hv-search-field-label {
  font-size: var(--hv-sz-xs);
  font-weight: 700;
  color: var(--hv-text-mid);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Index responsive */
/* Base 8-col grid is ~982px min and .hv-table-card clips overflow, so squeeze
   already from 1100px down; below 900 (iPad portrait) switch to card mode. */
@media (max-width: 1100px) {
  .hv-col-headers.index-cols,
  .hv-req-row.index-cols {
    grid-template-columns: 100px 70px 70px 80px 140px 160px 1fr 100px;
  }
}

@media (max-width: 900px) {
  .hv-col-headers.index-cols { display: none; }
  .hv-req-row.index-cols {
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .hv-search-grid { grid-template-columns: 1fr 1fr; }
  /* Column-header status/service-type filters are hidden on mobile, so the
     equivalent selects inside the search form take over there. */
  .hv-search-grid .hv-mobile-only { display: flex; }
}

@media (max-width: 620px) {
  .hv-search-grid { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════
   EVENT SHOW PAGE  (ev-*)
════════════════════════════════════════════════════════════ */

/* ── Animations ─────────────────────────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes slideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Navy Hero ──────────────────────────────────────────── */
/* Draft (not-yet-validated) event banner — V2 counterpart of V1's pink
   when/where box. Shown on show2 to admins/organizer only.
   .hv-draft-banner is the same look for other draftable records (blog posts). */
.ev-draft-banner,
.hv-draft-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background: #FFB6C1;
  color: #7a1f33;
  padding: 12px 24px;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  text-align: center;
}
.ev-draft-banner svg,
.hv-draft-banner svg {
  width: 18px;
  height: 18px;
  stroke: #7a1f33;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}

.ev-hero {
  position: relative;
  background: var(--hv-navy-deep);
  overflow: hidden;
}
.ev-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(255,255,255,0.07) 1px, transparent 1px);
  background-size: 28px 28px;
  pointer-events: none;
}
.ev-hero::after {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 5px;
  background: linear-gradient(180deg, var(--hv-green) 0%, rgba(var(--hv-green-rgb),0.2) 100%);
}
.ev-hero-glow {
  position: absolute;
  top: -80px; left: -80px;
  width: 480px; height: 480px;
  background: radial-gradient(circle, rgba(var(--hv-green-rgb),0.12) 0%, transparent 65%);
  pointer-events: none;
}
.ev-hero-glow2 {
  position: absolute;
  bottom: -100px; right: -60px;
  width: 420px; height: 420px;
  background: radial-gradient(circle, rgba(26,42,108,0.6) 0%, transparent 70%);
  pointer-events: none;
}
.ev-hero-content {
  position: relative;
  z-index: 2;
  max-width: 1200px;
  margin: 0 auto;
  padding: 26px 48px 52px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
}
.ev-hero-left { flex: 1; min-width: 0; }
.ev-hero-right { flex-shrink: 0; display: flex; flex-direction: column; gap: 10px; align-items: stretch; }

.ev-breadcrumb {
  display: flex; align-items: center; justify-content: flex-end; gap: 8px;
  font-size: var(--hv-sz-xs); color: rgba(255,255,255,0.45);
  animation: slideDown 0.5s ease both;
}
.ev-breadcrumb a { color: rgba(255,255,255,0.60) !important; text-decoration: underline; font-weight: 600; transition: color 0.15s; }
.ev-breadcrumb a:hover { color: var(--hv-green-mid) !important; }

.ev-category-badge {
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(var(--hv-green-rgb),0.15);
  border: 1.5px solid rgba(var(--hv-green-rgb),0.40);
  color: var(--hv-green-mid);
  font-size:var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.13em; text-transform: uppercase;
  padding: 5px 14px; border-radius: var(--hv-r-pill);
  margin-bottom: 14px; width: fit-content;
  animation: fadeUp 0.5s 0.05s ease both;
}
.ev-badge-dot { width: 6px; height: 6px; background: var(--hv-green); border-radius: 50%; flex-shrink: 0; }

.ev-hero-title {
  font-family: 'Nunito', sans-serif;
  font-size: clamp(36px, 4.5vw, 62px);
  font-weight: 900; color: #fff;
  line-height: 1.05; letter-spacing: -0.01em;
  margin-bottom: 28px;
  animation: fadeUp 0.55s 0.12s ease both;
}

.ev-hero-pills { display: flex; flex-wrap: wrap; gap: 10px; animation: fadeUp 0.55s 0.22s ease both; }
.ev-pill {
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(255,255,255,0.08);
  border: 1.5px solid rgba(255,255,255,0.16);
  color: rgba(255,255,255,0.88);
  font-size: var(--hv-sz-xs); font-weight: 600;
  padding: 7px 15px; border-radius: var(--hv-r-pill);
}
.ev-pill svg { width: 14px; height: 14px; stroke: var(--hv-green-mid); fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.ev-pill-free { background: rgba(var(--hv-green-rgb),0.18); border-color: rgba(var(--hv-green-rgb),0.40); color: var(--hv-green-mid); font-weight: 800; }

.ev-hero-img-wrap {
  flex-shrink: 0; width: 500px; max-width: 100%;
  border-radius: var(--hv-r-lg); overflow: hidden;
  border: 3px solid rgba(255,255,255,0.12);
  box-shadow: 0 16px 48px rgba(0,0,0,0.45), 0 4px 12px rgba(0,0,0,0.3);
  animation: fadeUp 0.6s 0.18s ease both;
  position: relative; z-index: 3;
}
.ev-hero-img-wrap img { width: 100%; height: 300px; object-fit: cover; object-position: center 60%; display: block; }

/* ── Body layout ────────────────────────────────────────── */
.ev-body {
  max-width: 1200px; margin: 0 auto;
  padding: 60px 48px 100px;
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 32px; align-items: start;
}

/* ── Sidebar ────────────────────────────────────────────── */
.ev-sidebar { position: sticky; top: 148px; display: flex; flex-direction: column; gap: 14px; }

.ev-info-card {
  background: var(--hv-white); border: 2px solid var(--hv-border);
  border-radius: var(--hv-r-lg); box-shadow: 0 4px 24px rgba(30,60,20,0.09);
  overflow: hidden; animation: fadeUp 0.5s 0.1s ease both;
}
.ev-info-card-header { background: var(--hv-navy); padding: 16px 22px; }
.ev-info-card-header-label { font-size: var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--hv-green-mid); margin-bottom: 3px; }
.ev-info-card-header-title { font-family: 'Nunito', sans-serif; font-size: 22px; font-weight: 700; color: #fff; line-height: 1.2; }

.ev-info-row { display: flex; align-items: flex-start; gap: 14px; padding: 14px 22px; border-bottom: 1px solid var(--hv-border); transition: background 0.12s; }
.ev-info-row:last-child { border-bottom: none; }
.ev-info-row:hover { background: var(--hv-green-light); }

.ev-info-icon { width: 34px; height: 34px; background: var(--hv-green-light); border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 1px; }
.ev-info-icon svg { width: 18px; height: 18px; stroke: var(--hv-green-dark); fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.ev-info-content { flex: 1; min-width: 0; }
.ev-info-label { font-size: var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.11em; text-transform: uppercase; color: var(--hv-green-dark); margin-bottom: 3px; }
.ev-info-primary { font-size: var(--hv-sz-base); font-weight: 700; color: var(--hv-text); line-height: 1.35; }
.ev-info-secondary { font-size: var(--hv-sz-sm); color: var(--hv-text-light); margin-top: 2px; line-height: 1.4; }

.ev-cal-links { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; }
.ev-cal-link { font-size: var(--hv-sz-xs); color: var(--hv-green-dark) !important; text-decoration: underline; font-weight: 600; transition: color 0.12s; }
.ev-cal-link:hover { color: var(--hv-green) !important; }

/* Add-to-calendar dropdown */
.ev-cal-dropdown { position: relative; display: inline-block; margin-top: 8px; }
.ev-cal-btn { display: inline-flex; align-items: center; gap: 7px; font-size: var(--hv-sz-xs); font-weight: 700; color: var(--hv-green-dark); background: var(--hv-green-light); border: 1.5px solid var(--hv-green-mid); border-radius: var(--hv-r-pill); padding: 6px 13px; cursor: pointer; white-space: nowrap; transition: background 0.15s; font-family: inherit; }
.ev-cal-btn svg { width: 12px; height: 12px; stroke: var(--hv-green-dark); fill: none; stroke-width: 2; stroke-linecap: round; flex-shrink: 0; }
.ev-cal-btn:hover, .ev-cal-btn.open { background: var(--hv-green-mid); }
.ev-cal-chevron { transition: transform 0.2s; flex-shrink: 0; }
.ev-cal-btn.open .ev-cal-chevron { transform: rotate(180deg); }
.ev-cal-menu { position: absolute; top: calc(100% + 6px); left: 0; background: var(--hv-white); border: 1.5px solid var(--hv-border); border-radius: var(--hv-r-lg); box-shadow: 0 8px 24px rgba(30,60,20,0.14); min-width: 215px; z-index: 60; overflow: hidden; display: none; }
.ev-cal-menu.open { display: block; animation: slideDown 0.15s ease both; }
.ev-cal-option { display: flex; align-items: center; gap: 10px; padding: 10px 15px; font-size: var(--hv-sz-sm); font-weight: 600; color: var(--hv-text); text-decoration: none; transition: background 0.12s; border-bottom: 1px solid var(--hv-border); }
.ev-cal-option:last-child { border-bottom: none; }
.ev-cal-option:hover { background: var(--hv-green-light); color: var(--hv-green-deep) !important; }
.ev-cal-option-icon { width: 22px; height: 22px; border-radius: 5px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }

.ev-capacity-bar { margin-top: 7px; background: var(--hv-border); border-radius: 99px; height: 5px; overflow: hidden; }
.ev-capacity-fill { height: 100%; width: 0%; background: linear-gradient(90deg, var(--hv-green), var(--hv-green-dark)); border-radius: 99px; transition: width 1.2s cubic-bezier(0.25,1,0.5,1); }
.ev-capacity-label { display: flex; justify-content: space-between; font-size: var(--hv-sz-xs); color: var(--hv-text-light); margin-top: 4px; font-weight: 600; }

.ev-price-badge { display: inline-block; background: var(--hv-green-light); border: 2px solid var(--hv-green-mid); color: var(--hv-green-deep); font-size: 17px; font-weight: 900; padding: 3px 16px; border-radius: var(--hv-r-pill); }

.ev-btn-register {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%; padding: 17px 24px;
  background: var(--hv-green); color: #fff !important;
  font-family: 'Nunito', sans-serif;
  font-size: 15px; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase;
  border: none; border-radius: var(--hv-r-lg); cursor: pointer;
  box-shadow: 0 6px 22px rgba(var(--hv-green-rgb),0.35);
  transition: background 0.15s, transform 0.12s, box-shadow 0.15s;
  animation: fadeUp 0.5s 0.18s ease both;
  text-decoration: none;
}
.ev-btn-register:hover { background: var(--hv-green-dark); transform: translateY(-2px); box-shadow: 0 8px 28px rgba(var(--hv-green-rgb),0.45); color: #fff !important; }
.ev-btn-register svg { width: 17px; height: 17px; stroke: #fff; fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }

.ev-share-card { background: var(--hv-white); border: 2px solid var(--hv-border); border-radius: var(--hv-r-lg); padding: 16px 22px; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 2px 12px rgba(30,60,20,0.06); animation: fadeUp 0.5s 0.24s ease both; }
.ev-share-label { font-size: var(--hv-sz-xs); font-weight: 700; color: var(--hv-text-mid); }
.ev-fb-btn { display: inline-flex; align-items: center; gap: 7px; background: #1877F2; color: #fff !important; font-size: var(--hv-sz-xs); font-weight: 700; padding: 8px 15px; border-radius: 8px; transition: background 0.15s; }
.ev-fb-btn:hover { background: #145DBF; color: #fff !important; }
.ev-fb-btn svg { width: 14px; height: 14px; fill: white; stroke: none; }

/* Status strips */
.ev-registered-strip {
  background: var(--hv-green-light); border: 2px solid var(--hv-green-mid);
  border-radius: var(--hv-r-lg); padding: 16px 22px;
  font-size: 15px; font-weight: 700; color: var(--hv-green-deep);
  display: flex; align-items: center; gap: 10px;
}
.ev-waiting-strip {
  background: var(--hv-yellow-active); border: 2px solid var(--hv-yellow-border);
  border-radius: var(--hv-r-lg); padding: 16px 22px;
  font-size: 15px; font-weight: 700; color: var(--hv-navy);
  display: flex; align-items: center; gap: 10px;
}

/* ── Main column ────────────────────────────────────────── */
.ev-main { display: flex; flex-direction: column; gap: 24px; }

.ev-card { background: var(--hv-white); border: 2px solid var(--hv-border); border-radius: var(--hv-r-lg); box-shadow: 0 2px 16px rgba(30,60,20,0.07); overflow: hidden; animation: fadeUp 0.5s ease both; }
.ev-card:nth-child(1) { animation-delay: 0.15s; }
.ev-card:nth-child(2) { animation-delay: 0.22s; }
.ev-card:nth-child(3) { animation-delay: 0.29s; }

.ev-card-header { padding: 18px 28px; border-bottom: 2px solid var(--hv-border); background: var(--hv-yellow-header); display: flex; align-items: center; gap: 12px; }
.ev-card-header-icon { width: 32px; height: 32px; background: var(--hv-green); border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 2px 8px rgba(var(--hv-green-rgb),0.28); }
.ev-card-header-icon svg { width: 15px; height: 15px; stroke: #fff; fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.ev-card-title { font-size: var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.10em; text-transform: uppercase; color: var(--hv-navy); }
.ev-card-body { padding: 28px; }

.ev-description { font-size: var(--hv-sz-base); color: var(--hv-text); line-height: 1.80; }
.ev-description p { margin-bottom: 20px; }
.ev-description p:last-child { margin-bottom: 0; }

/* ── Comments ───────────────────────────────────────────── */
.ev-comment { display: flex; gap: 16px; padding: 22px 0; border-bottom: 1px solid var(--hv-border); }
.ev-comment:last-of-type { border-bottom: none; padding-bottom: 0; }
.ev-comment:first-of-type { padding-top: 0; }

.ev-avatar { width: 44px; height: 44px; border-radius: 50%; background: linear-gradient(135deg, var(--hv-navy) 0%, var(--hv-green-dark) 100%); display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 800; color: #fff; flex-shrink: 0; box-shadow: 0 2px 8px rgba(26,42,108,0.22); }
.ev-comment-body { flex: 1; }
.ev-comment-header { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.ev-comment-author { font-size: var(--hv-sz-sm); font-weight: 800; color: var(--hv-navy); }
.ev-comment-time { font-size: var(--hv-sz-xs); color: var(--hv-text-light); font-weight: 600; }
.ev-comment-actions { margin-left: auto; display: flex; gap: 10px; }
.ev-comment-action { font-size: var(--hv-sz-xs); color: var(--hv-text-light); text-decoration: underline; font-weight: 600; cursor: pointer; transition: color 0.12s; }
.ev-comment-action:hover { color: var(--hv-error); }
.ev-comment-text { font-size: var(--hv-sz-sm); color: var(--hv-text-mid); line-height: 1.6; }

/* ── Comment composer ───────────────────────────────────── */
.ev-composer { margin-top: 24px; }
.ev-composer-label { font-size: var(--hv-sz-xs); font-weight: 700; color: var(--hv-text-mid); margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.07em; }
.ev-composer-wrap { border: 2px solid var(--hv-border-warm); border-radius: var(--hv-r-lg); overflow: hidden; transition: border-color 0.15s, box-shadow 0.15s; }
.ev-composer-wrap:focus-within { border-color: var(--hv-green); box-shadow: 0 0 0 4px rgba(var(--hv-green-rgb),0.12); }
.ev-composer-textarea { width: 100%; min-height: 110px; padding: 14px 16px; border: none; background: #fff; font-family: 'Nunito', sans-serif; font-size: var(--hv-sz-sm); color: var(--hv-text); resize: vertical; outline: none; line-height: 1.6; }
.ev-composer-textarea::placeholder { color: #b0c0a8; font-style: italic; }
.ev-composer-footer { background: #f9faf7; border-top: 1px solid var(--hv-border); padding: 10px 14px; display: flex; justify-content: flex-end; }
.ev-btn-post { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 22px; background: var(--hv-green); color: #fff; font-family: 'Nunito', sans-serif; font-size: var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; border: none; border-radius: var(--hv-r); cursor: pointer; box-shadow: 0 2px 10px rgba(var(--hv-green-rgb),0.28); transition: background 0.15s, transform 0.12s; }
.ev-btn-post:hover { background: var(--hv-green-dark); transform: translateY(-1px); }
.ev-btn-post svg { width: 13px; height: 13px; stroke: #fff; fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }

/* ── Attendees list ─────────────────────────────────────── */
.ev-attendees-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.ev-attendee-chip { background: var(--hv-green-light); border: 1.5px solid var(--hv-green-mid); border-radius: var(--hv-r-pill); padding: 5px 14px; font-size: var(--hv-sz-xs); font-weight: 600; color: var(--hv-green-deep); text-decoration: none; }
.ev-attendee-chip:hover { background: var(--hv-green-mid); color: var(--hv-green-deep) !important; }

/* ── Admin panel ────────────────────────────────────────── */
.ev-admin-panel { background: var(--hv-white); border: 2px solid var(--hv-border); border-radius: var(--hv-r-lg); box-shadow: 0 2px 16px rgba(30,60,20,0.07); overflow: hidden; animation: fadeUp 0.5s 0.34s ease both; }
.ev-admin-header { background: var(--hv-yellow-header); border-bottom: 2px solid var(--hv-border); padding: 13px 28px; display: flex; align-items: center; }
.ev-admin-badge { display: inline-flex; align-items: center; gap: 6px; background: var(--hv-yellow-active); border: 1.5px solid var(--hv-yellow-border); color: var(--hv-navy); font-size:var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.10em; text-transform: uppercase; padding: 5px 12px; border-radius: var(--hv-r-pill); }
.ev-admin-body { padding: 20px 28px; display: flex; flex-wrap: wrap; gap: 10px; }

.ev-btn-admin { display: inline-flex; align-items: center; gap: 7px; height: 40px; padding: 0 18px; background: var(--hv-navy); color: #fff !important; font-family: 'Nunito', sans-serif; font-size:var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; border: none; border-radius: var(--hv-r); cursor: pointer; box-shadow: 0 2px 8px rgba(26,42,108,0.18); transition: background 0.15s, transform 0.12s; text-decoration: none; }
.ev-btn-admin:hover { background: var(--hv-navy-deep); transform: translateY(-1px); color: #fff !important; }
.ev-btn-admin svg { width: 13px; height: 13px; stroke: rgba(255,255,255,0.65); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ev-btn-admin-danger { background: var(--hv-error); box-shadow: 0 2px 8px rgba(192,48,32,0.2); }
.ev-btn-admin-danger:hover { background: #a02010; color: #fff !important; }

/* ── Clone section ──────────────────────────────────────── */
.ev-clone-section { background: var(--hv-yellow-header); border: 2px solid var(--hv-border); border-radius: var(--hv-r-lg); overflow: hidden; }
.ev-clone-toggle { padding: 14px 22px; font-size: var(--hv-sz-xs); font-weight: 700; color: var(--hv-navy); cursor: pointer; user-select: none; display: flex; align-items: center; gap: 8px; }
.ev-clone-toggle:hover { background: var(--hv-yellow-mid); }
.ev-clone-body { padding: 20px 22px; border-top: 2px solid var(--hv-border); background: white; }

/* ── Event responsive ───────────────────────────────────── */
@media (max-width: 960px) {
  .ev-hero-content { flex-direction: column; align-items: flex-start; padding: 40px 28px 44px; gap: 32px; }
  .ev-hero-right { width: 100%; }
  .ev-hero-img-wrap { width: 100%; }
  .ev-hero-img-wrap img { height: 220px; }
  .ev-body { grid-template-columns: 1fr; padding: 32px 28px 80px; }
  .ev-sidebar { position: static; }
}
@media (max-width: 620px) {
  .ev-hero-content { padding: 32px 20px 36px; }
  .ev-hero-title { font-size: 34px; }
  .ev-hero-pills { gap: 8px; }
  .ev-pill { font-size:var(--hv-sz-xs); padding: 6px 12px; }
  .ev-body { padding: 24px 20px 60px; }
  .ev-admin-body { flex-direction: column; }
  .ev-btn-admin { width: 100%; justify-content: center; }
  .ev-card-body { padding: 20px; }
  .ev-card-header { padding: 14px 20px; }
  .ev-info-card-header { padding: 14px 18px; }
  .ev-info-row { padding: 12px 18px; gap: 10px; }
  .ev-comment-actions { margin-left: 0; width: 100%; }
  .ev-comment-header { row-gap: 4px; }
}
@media (max-width: 400px) {
  .ev-hero-title { font-size: 28px; }
  .ev-card-body { padding: 14px; }
  .ev-card-header { padding: 12px 14px; }
  .ev-info-row { padding: 10px 14px; }
  .ev-btn-register { font-size:var(--hv-sz-xs); padding: 14px 18px; }
}

/* ════════════════════════════════════════════════════════════
   CANCEL REGISTRATION PAGE  (event_participations/confirm_cancel)
   Event page hero (no image) above a single centred card.
════════════════════════════════════════════════════════════ */
.ev-hero-compact .ev-hero-content { padding: 26px 48px 40px; align-items: flex-start; }
.ev-hero-compact .ev-hero-title { font-size: clamp(30px, 3.6vw, 46px); margin-bottom: 22px; }
.ev-back-link { display: inline-flex; align-items: center; gap: 6px; padding: 6px 0; font-size: var(--hv-sz-sm); font-weight: 700; color: rgba(255,255,255,0.75) !important; text-decoration: underline; white-space: nowrap; }
.ev-back-link:hover { color: var(--hv-green-mid) !important; }
.ev-back-link svg { width: 15px; height: 15px; stroke: currentColor; fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }

.ev-single { max-width: 760px; margin: 0 auto; padding: 48px 48px 100px; }

.ev-notice { display: flex; align-items: flex-start; gap: 12px; padding: 16px 18px; border-radius: var(--hv-r); border: 1.5px solid var(--hv-border); background: #f9faf7; font-size: var(--hv-sz-sm); color: var(--hv-text); line-height: 1.55; }
.ev-notice + .ev-notice, .ev-notice + .ev-cancel-section, .ev-cancel-section + .ev-notice, .ev-cancel-section + .ev-cancel-section { margin-top: 20px; }
.ev-notice svg { width: 20px; height: 20px; flex-shrink: 0; margin-top: 1px; stroke: var(--hv-text-mid); fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.ev-notice-warn { background: #fffbeb; border-color: #fde68a; }
.ev-notice-warn svg { stroke: #b45309; }

.ev-cancel-section .ev-info-label { margin-bottom: 8px; }
.ev-cancel-section p { margin: 0; font-size: var(--hv-sz-sm); color: var(--hv-text-mid); line-height: 1.55; }

/* Footer row: buttons sit on their own band, clear of the notices above */
.ev-card-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 20px 28px; border-top: 2px solid var(--hv-border); background: #f9faf7; }
.ev-card-actions form { margin: 0; }
.ev-card-actions .hv-btn { height: auto; min-height: 50px; padding: 12px 22px; font-size: var(--hv-sz-sm); white-space: normal; text-align: center; line-height: 1.25; }
.ev-card-actions a.hv-btn-ghost { color: var(--hv-text-mid); background: #fff; }
.ev-card-actions a.hv-btn-ghost:hover { color: var(--hv-text); }

@media (max-width: 960px) {
  .ev-hero-compact .ev-hero-content { padding: 32px 28px 36px; gap: 18px; }
  .ev-hero-compact .ev-hero-right { order: -1; }
  .ev-single { padding: 32px 28px 80px; }
}
@media (max-width: 620px) {
  .ev-hero-compact .ev-hero-content { padding: 24px 20px 30px; }
  .ev-hero-compact .ev-hero-title { font-size: 30px; }
  .ev-single { padding: 24px 20px 60px; }
  .ev-card-actions { padding: 16px 20px; flex-direction: column; align-items: stretch; }
  .ev-card-actions form, .ev-card-actions .hv-btn { width: 100%; }
}
@media (max-width: 400px) {
  .ev-hero-compact .ev-hero-title { font-size: 26px; }
  .ev-single { padding: 16px 16px 48px; }
  .ev-card-actions { padding: 14px; }
}

/* ════════════════════════════════════════════════════════════
   EVENT LIST PAGE  (index_list2)
════════════════════════════════════════════════════════════ */

/* Hero — single-column override for list page */
.ev-list-hero-content { flex-direction: column; align-items: flex-start; }

/* Page badge */
.ev-page-badge { display: inline-flex; align-items: center; gap: 7px; background: rgba(var(--hv-green-rgb),0.15); border: 1.5px solid rgba(var(--hv-green-rgb),0.40); color: var(--hv-green-mid); font-size:var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.13em; text-transform: uppercase; padding: 5px 14px; border-radius: var(--hv-r-pill); margin-bottom: 14px; width: fit-content; }

/* Hero controls row */
.ev-hero-controls { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px; margin-top: 24px; width: 100%; }

/* View toggle */
.ev-view-toggle { display: flex; align-items: center; gap: 6px; }
.ev-view-btn { display: inline-flex; align-items: center; gap: 7px; padding: 9px 18px; background: rgba(255,255,255,0.08); border: 1.5px solid rgba(255,255,255,0.18); border-radius: var(--hv-r-pill); font-family: inherit; font-size: var(--hv-sz-xs); font-weight: 700; color: rgba(255,255,255,0.70); cursor: pointer; transition: all 0.15s; text-decoration: none; }
.ev-view-btn svg { width: 13px; height: 13px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; }
.ev-view-btn:hover { background: rgba(255,255,255,0.14); color: #fff !important; }
.ev-view-btn.active { background: var(--hv-green); border-color: var(--hv-green); color: #fff !important; box-shadow: 0 3px 12px rgba(var(--hv-green-rgb),0.35); }

/* Hero action buttons */
.ev-hero-actions { display: flex; align-items: center; gap: 10px; }

/* Admin button — yellow-tinted, for use on navy hero */
.ev-admin-btn { display: inline-flex; align-items: center; gap: 8px; padding: 9px 18px; background: rgba(245,224,128,0.14); border: 1.5px solid rgba(245,224,128,0.32); border-radius: var(--hv-r-pill); font-family: inherit; font-size: var(--hv-sz-xs); font-weight: 700; color: var(--hv-yellow-mid); cursor: pointer; transition: all 0.15s; text-decoration: none; }
.ev-admin-btn svg { width: 13px; height: 13px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; }
.ev-admin-btn:hover { background: rgba(245,224,128,0.24); color: #fffde0 !important; }

/* Filter button */
.ev-filter-btn { display: inline-flex; align-items: center; gap: 8px; padding: 9px 18px; background: rgba(255,255,255,0.08); border: 1.5px solid rgba(255,255,255,0.18); border-radius: var(--hv-r-pill); font-family: inherit; font-size: var(--hv-sz-xs); font-weight: 700; color: rgba(255,255,255,0.75); cursor: pointer; transition: all 0.15s; }
.ev-filter-btn svg { width: 13px; height: 13px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; }
.ev-filter-btn:hover, .ev-filter-btn.open { background: rgba(255,255,255,0.18); color: #fff; }

/* Filter panel */
.ev-filter-panel { background: var(--hv-white); border-bottom: 2px solid var(--hv-border); display: none; }
.ev-filter-panel.open { display: block; }
.ev-filter-inner { max-width: 1200px; margin: 0 auto; padding: 24px 48px; display: flex; flex-direction: column; gap: 18px; }
.ev-filter-field { display: flex; flex-direction: column; gap: 8px; }
.ev-filter-label { font-size: var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.09em; text-transform: uppercase; color: var(--hv-text-light); }
.ev-filter-select { height: 42px; padding: 0 14px; border: 2px solid var(--hv-border-warm); border-radius: var(--hv-r); background: var(--hv-page-bg); font-family: inherit; font-size: 15px; font-weight: 600; color: var(--hv-text); outline: none; transition: border-color 0.15s; }
.ev-filter-select:focus { border-color: var(--hv-green); box-shadow: 0 0 0 3px rgba(var(--hv-green-rgb),0.13); }
.ev-filter-divider { height: 1px; background: var(--hv-border); margin: 4px 0; }
.ev-filter-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }

/* List body */
.ev-list-body { max-width: 1200px; margin: 0 auto; padding: 48px 48px 100px; }

/* Month groups */
.ev-month-group { margin-bottom: 52px; }
.ev-month-heading { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }
.ev-month-label { font-size: 22px; font-weight: 800; color: var(--hv-navy-deep); letter-spacing: -0.01em; font-family: 'Nunito', sans-serif; }
.ev-month-line { flex: 1; height: 2px; background: linear-gradient(90deg, var(--hv-border) 0%, transparent 100%); border-radius: 2px; }

/* Event card list */
.ev-event-cards { display: flex; flex-direction: column; gap: 14px; }
.ev-event-card { background: var(--hv-white); border: 2px solid var(--hv-border); border-radius: var(--hv-r-lg); display: flex; align-items: stretch; overflow: hidden; box-shadow: 0 2px 12px rgba(30,60,20,0.06); transition: box-shadow 0.18s, transform 0.15s, border-color 0.15s; cursor: pointer; text-decoration: none; color: var(--hv-text); }
.ev-event-card:hover { border-color: var(--hv-green-mid); box-shadow: 0 6px 24px rgba(var(--hv-green-rgb),0.14); transform: translateY(-3px); }
.ev-event-card.canceled { opacity: 0.82; }

/* Thumbnail */
.ev-card-thumb { width: 200px; flex-shrink: 0; position: relative; overflow: hidden; background: var(--hv-green-light); }
.ev-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s ease; }
.ev-event-card:hover .ev-card-thumb img { transform: scale(1.04); }
.ev-card-free-label { position: absolute; bottom: 0; left: 0; right: 0; background: rgba(17,29,82,0.72); backdrop-filter: blur(2px); color: #fff; font-size:var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.10em; text-transform: uppercase; text-align: center; padding: 6px 0; }
.ev-canceled-banner { position: absolute; top: 14px; left: -28px; background: var(--hv-error); color: #fff; font-size: 12px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; padding: 5px 36px; transform: rotate(-45deg); box-shadow: 0 2px 8px rgba(192,48,32,0.35); }

/* Info column */
.ev-card-info { flex: 1; min-width: 0; padding: 22px 28px; display: flex; flex-direction: column; justify-content: center; gap: 10px; border-left: 2px solid var(--hv-border); }
.ev-card-category { display: inline-flex; align-items: center; gap: 6px; font-size:var(--hv-sz-xs); font-weight: 800; letter-spacing: 0.10em; text-transform: uppercase; color: var(--hv-green-dark); width: fit-content; }
.ev-card-category-dot { width: 5px; height: 5px; background: var(--hv-green); border-radius: 50%; flex-shrink: 0; }
.ev-card-category-dot.canceled { background: var(--hv-error); }
.ev-event-card .ev-card-title { font-size: 22px; font-weight: 700; color: var(--hv-navy-deep); line-height: 1.15; transition: color 0.15s; font-family: 'Nunito', sans-serif; }
.ev-event-card:hover .ev-card-title { color: var(--hv-green-dark); }
.ev-event-card .ev-card-title.canceled-title { color: var(--hv-error); }
.ev-event-card:hover .ev-card-title.canceled-title { color: #a02010; }
.ev-card-datetime { display: flex; align-items: center; gap: 7px; font-size: var(--hv-sz-sm); font-weight: 700; color: var(--hv-text-mid); }
.ev-card-datetime svg { width: 14px; height: 14px; stroke: var(--hv-green-dark); fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.ev-card-meta-rows { display: flex; flex-direction: column; gap: 3px; }
.ev-card-meta-row { font-size: var(--hv-sz-sm); color: var(--hv-text-mid); font-weight: 600; display: flex; align-items: center; gap: 7px; }
.ev-card-meta-row svg { width: 13px; height: 13px; stroke: var(--hv-green-dark); fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; opacity: 0.65; }

/* Date badge */
.ev-card-date { width: 105px; flex-shrink: 0; background: var(--hv-navy); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 18px 14px; gap: 0; position: relative; }
.ev-card-date::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--hv-green); }
.ev-card-date-month { font-size:var(--hv-sz-xs); font-weight: 900; letter-spacing: 0.16em; text-transform: uppercase; color: var(--hv-green-mid); margin-bottom: 4px; }
.ev-card-date-num { font-size: 50px; font-weight: 900; color: #fff; line-height: 1.0; letter-spacing: -0.02em; }
.ev-card-date-dow { font-size:var(--hv-sz-xs); font-weight: 700; letter-spacing: 0.10em; text-transform: uppercase; color: rgba(255,255,255,0.45); margin-top: 5px; }
.ev-card-date.canceled { background: #8a0e1a; }
.ev-card-date.canceled::before { background: rgba(255,255,255,0.25); }

/* List responsive */
@media (max-width: 860px) {
  .ev-list-body { padding: 32px 28px 80px; }
  .ev-card-thumb { width: 150px; }
  .ev-card-date { width: 100px; }
  .ev-card-date-num { font-size: 42px; }
}
@media (max-width: 640px) {
  .ev-list-body { padding: 24px 20px 60px; }
  .ev-filter-inner { padding: 18px 20px; gap: 16px; }
  .ev-card-thumb { width: 90px; }
  .ev-card-date { width: 80px; }
  .ev-card-date-num { font-size: 32px; }
  .ev-event-card .ev-card-title { font-size: 17px; }
  .ev-card-info { padding: 14px 16px; gap: 6px; }
  .ev-hero-controls { flex-direction: column; align-items: flex-start; }
}

/* The V2 list card design: same 5:3 proportions, but the thumb full-bleeds the card's height
   and left edge (no margins) — width derives from the stretched height via
   aspect-ratio. The card's own border-radius + overflow:hidden clip the
   outer-left corners round and leave the inner edge square, mirroring the
   ev-card-date badge on the right. width:auto overrides the base 200px.
   The image itself is pinned to 300px wide (was a hand-tuned tweak on the
   shared .ev-card-thumb img rule; scoped here so the other variants keep
   their natural sizing). (.ev-card-2c is the historical name of this design.) */
.ev-card-2c .ev-card-thumb { width: auto; aspect-ratio: 5 / 3; }
.ev-card-2c .ev-card-thumb img { max-width: 300px; min-width: 300px; }
@media (max-width: 640px) {
  /* Mobile: the card flips from 3 columns to 3 full-width stacked rows —
     image on top (kept 5:3), info in the middle, date bar at the bottom with
     its month/day/weekday laid out inline instead of stacked. */
  .ev-card-2c { flex-direction: column; }
  .ev-card-2c .ev-card-thumb { width: 100%; aspect-ratio: 5 / 3; }
  .ev-card-2c .ev-card-thumb img { max-width: none; min-width: 0; }
  .ev-card-2c .ev-card-info { border-left: 0; border-top: 2px solid var(--hv-border); }
  .ev-card-2c .ev-card-date { width: 100%; flex-direction: row; align-items: baseline; justify-content: center; gap: 10px; padding: 10px 14px; }
  .ev-card-2c .ev-card-date .ev-card-date-month { margin-bottom: 0; }
  .ev-card-2c .ev-card-date .ev-card-date-num { font-size: 26px; }
  .ev-card-2c .ev-card-date .ev-card-date-dow { margin-top: 0; }
}

/* ── User Admin Edit (edit2) ─────────────────────────────────── */

/* Profile header */
.uba-profile-header {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 24px 28px;
  background: var(--hv-card-bg);
  border: 1.5px solid var(--hv-border);
  border-radius: var(--hv-radius);
  margin-bottom: 16px;
}
.uba-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--hv-green);
  color: #fff;
  font-size: 24px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  letter-spacing: 1px;
  overflow: hidden;
}
.uba-avatar img { width: 100%; height: 100%; object-fit: cover; }
.uba-profile-info { flex: 1; min-width: 0; }
.uba-name {
  font-size: 22px;
  font-weight: 800;
  color: var(--hv-navy);
  line-height: 1.2;
}
.uba-meta { font-size:var(--hv-sz-sm); color: var(--hv-text-mid); margin-top: 4px; }
.uba-assoc { font-size:var(--hv-sz-sm); color: var(--hv-text-mid); margin-top: 2px; }
.uba-assoc a { color: var(--hv-green-dark); font-weight: 600; }
.uba-archived-badge {
  display: inline-block;
  padding: 3px 10px;
  background: #fef3c7;
  border: 1px solid #f59e0b;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
  color: #92400e;
  margin-left: 10px;
}
.uba-profile-actions { display: flex; flex-direction: column; gap: 8px; align-items: flex-end; flex-shrink: 0; }


/* Section heading inside a card */
.hv-section-title {
  font-size: var(--hv-sz-sm);
  font-weight: 800;
  color: var(--hv-navy);
  margin: 28px 0 14px;
  padding-bottom: 8px;
  border-bottom: 1.5px solid var(--hv-border);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.hv-section-title:first-child { margin-top: 0; }

/* Table wrapper */
.hv-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--hv-border);
  border-radius: 10px;
  margin-bottom: 16px;
}
.hv-table-wrap table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--hv-sz-sm);
}
.hv-table-wrap th,
table.hv-table th,
table.prospect_tasks_table th,
table.pt2-sortable-table th {
  background: var(--hv-yellow-header);
  color: var(--hv-navy);
  font-weight: 700;
  font-size: var(--hv-sz-xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 10px 14px;
  text-align: left;
  border-bottom: 1.5px solid var(--hv-border);
}
.hv-table-wrap td,
table.hv-table td,
table.prospect_tasks_table td,
table.pt2-sortable-table td {
  padding: 10px 14px;
  border-bottom: 1px solid var(--hv-border);
  color: var(--hv-navy);
  vertical-align: middle;
}
.hv-table-wrap tr:last-child td,
table.hv-table tr:last-child td,
table.prospect_tasks_table tr:last-child td,
table.pt2-sortable-table tr:last-child td { border-bottom: none; }
.hv-table-wrap tr:hover td,
table.hv-table tr:hover td,
table.prospect_tasks_table tr:hover td,
table.pt2-sortable-table tr:hover td { background: var(--hv-yellow-header); }

/* Attendance and waiting list tables (event_participations#index): on a phone, only
   checkbox / name / action, and the Edit button becomes a compact View link
   with a 44px tap target */
.ep-view-link {
  display: none;
  align-items: center;
  min-height: 44px;
  min-width: 44px;
  padding: 0 10px;
  color: var(--hv-green-dark);
  font-weight: 700;
  font-size: var(--hv-sz-sm);
  text-decoration: underline;
}
@media (max-width: 640px) {
  table.ep-phone-table { table-layout: auto !important; }
  table.ep-phone-table .ep-col-extra,
  table.ep-phone-table .ep-edit-btn { display: none; }
  table.ep-phone-table .ep-view-link { display: inline-flex; }
  table.ep-phone-table th,
  table.ep-phone-table td { width: auto !important; padding: 8px 10px; }
  table.ep-phone-table .ep-col-action { width: 1% !important; white-space: normal !important; text-align: right; }
  table.ep-phone-table tfoot .hv-btn { width: 100%; padding-left: 12px; padding-right: 12px; white-space: normal; }
}

/* Tags grid */
.hv-tags-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 24px;
  padding: 4px 0;
}
.hv-tags-grid > div {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--hv-sz-sm);
  color: var(--hv-navy);
}

/* Day-of-week checkboxes — pill card style */
.hv-days-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 12px 0 24px;
}
.hv-days-row > label {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  font-size: var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-text-mid);
  cursor: pointer;
  padding: 16px 20px;
  min-width: 72px;
  border: 2px solid var(--hv-border-warm);
  border-radius: var(--hv-r);
  background: var(--hv-white);
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  user-select: none;
  text-align: center;
}
.hv-days-row > label:hover {
  border-color: var(--hv-green);
  background: var(--hv-green-light);
}
.hv-days-row > label:has(input[type="checkbox"]:checked) {
  background: var(--hv-green-light);
  border-color: var(--hv-green);
  color: var(--hv-green-deep);
}
.hv-days-row > label input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 26px;
  height: 26px;
  border: 2px solid var(--hv-border-warm);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.15s, border-color 0.15s;
  position: relative;
}
.hv-days-row > label input[type="checkbox"]:checked {
  background: var(--hv-green);
  border-color: var(--hv-green);
}
.hv-days-row > label input[type="checkbox"]:checked::after {
  content: '';
  display: block;
  width: 7px;
  height: 13px;
  border: 2.5px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
  position: absolute;
  top: 2px;
  left: 7px;
}

/* Info strip */
.hv-info-strip {
  background: var(--hv-yellow-header);
  border: 1px solid var(--hv-border);
  border-radius: 8px;
  padding: 10px 16px;
  font-size:var(--hv-sz-sm);
  color: var(--hv-text-mid);
  margin-bottom: 16px;
}

/* Roles checkboxes within admin card */
.hv-roles-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.hv-roles-grid > div {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--hv-sz-sm);
}

/* Profile pic upload form */
.uba-pic-upload { font-size:var(--hv-sz-sm); color: var(--hv-text-mid); }

/* More-fields collapsible */
.uba-more-fields-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size:var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-green-dark);
  cursor: pointer;
  margin: 8px 0 14px;
  text-decoration: none;
}
.uba-more-fields-toggle:hover { text-decoration: underline; }
.uba-more-fields { display: none; }

/* ══════════════════════════════════════════════════════════════
   PROFILE HERO  (edit2 — full-width dark navy banner)
   ══════════════════════════════════════════════════════════════ */
.pr-hero {
  position: relative;
  background: var(--hv-navy-deep);
  overflow: hidden;
}
.pr-hero::before {
  content: '';
  position: absolute; inset: 0;
  background-image: radial-gradient(circle, rgba(255,255,255,0.065) 1px, transparent 1px);
  background-size: 28px 28px;
  pointer-events: none;
}
.pr-hero::after {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0; width: 5px;
  background: linear-gradient(180deg, var(--hv-green) 0%, rgba(var(--hv-green-rgb),0.18) 100%);
}
.pr-hero-glow {
  position: absolute; top: -80px; left: -80px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(var(--hv-green-rgb),0.11) 0%, transparent 65%);
  pointer-events: none;
}
.pr-hero-glow2 {
  position: absolute; bottom: -80px; right: -60px;
  width: 380px; height: 380px;
  background: radial-gradient(circle, rgba(var(--hv-green-rgb),0.06) 0%, transparent 70%);
  pointer-events: none;
}
.pr-hero-content {
  position: relative; z-index: 2;
  max-width: 1200px; margin: 0 auto;
  padding: 20px 24px 24px;
  display: flex; align-items: center; gap: 36px;
}

/* Avatar */
.pr-avatar-wrap {
  flex-shrink: 0;
  position: relative;
}
.pr-avatar {
  width: 148px; height: 148px;
  border-radius: var(--hv-r-lg);
  object-fit: cover;
  border: 4px solid rgba(255,255,255,0.15);
  box-shadow: 0 8px 32px rgba(0,0,0,0.25);
  display: block;
}
.pr-avatar-initials {
  width: 200px; height: 200px;
  border-radius: var(--hv-r-lg);
  background: var(--hv-green);
  border: 4px solid rgba(255,255,255,0.15);
  box-shadow: 0 8px 32px rgba(0,0,0,0.25);
  display: flex; align-items: center; justify-content: center;
  font-size: 54px; font-weight: 800; color: #fff; letter-spacing: -1px;
}
.pr-avatar-remove {
  position: absolute; top: -8px; right: -8px;
  width: 30px; height: 30px;
  background: var(--hv-error);
  border: 3px solid var(--hv-navy-deep);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: transform 0.15s, background 0.15s;
  box-shadow: 0 2px 8px rgba(192,48,32,0.4);
  text-decoration: none;
}
.pr-avatar-remove:hover { transform: scale(1.12); background: #d63020; }
.pr-avatar-remove svg { width: 12px; height: 12px; stroke: #fff; fill: none; stroke-width: 3; stroke-linecap: round; }

/* Hero text */
.pr-hero-info { flex: 1; }

.pr-page-badge {
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(var(--hv-green-rgb),0.15);
  border: 1.5px solid rgba(var(--hv-green-rgb),0.40);
  color: var(--hv-green-mid);
  font-size: 11px; font-weight: 800; letter-spacing: 0.13em; text-transform: uppercase;
  padding: 5px 14px; border-radius: var(--hv-r-pill);
  margin-bottom: 12px; width: fit-content;
}
.pr-badge-dot {
  width: 6px; height: 6px;
  background: var(--hv-green);
  border-radius: 50%; flex-shrink: 0;
}

.pr-hero-name {
  font-size: clamp(28px, 3.5vw, 46px);
  font-weight: 900; color: #fff;
  line-height: 1.1; letter-spacing: -0.01em;
  margin-bottom: 8px;
}
.pr-hero-preferred {
  font-size: 0.6em; font-weight: 600;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0;
}
.pr-archived-badge {
  display: inline-block;
  font-size: 12px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
  background: rgba(192,48,32,0.25); color: #ffaaaa;
  border: 1px solid rgba(192,48,32,0.4);
  padding: 3px 10px; border-radius: var(--hv-r-pill);
  vertical-align: middle; margin-left: 10px;
}

/* Email communication status icons (hero — side-by-side row with name) */
.pr-hero-name-row {
  display: flex; align-items: center; gap: 14px;
  margin-bottom: 8px;
}
.pr-hero-name-row .pr-hero-name {
  margin-bottom: 0;
  min-width: 0; /* allow h1 to shrink so the badges stay inline at the right */
}
.pr-email-status {
  display: flex; gap: 6px; align-items: center;
  flex-shrink: 0;
}
.pr-email-badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px;
  border-radius: 50%;
  border: 1.5px solid;
  cursor: help;
}
.pr-email-badge svg {
  width: 14px; height: 14px;
  stroke-width: 2; fill: none;
  stroke-linecap: round; stroke-linejoin: round;
}
.pr-email-badge--ok   { background: rgba(var(--hv-green-rgb),0.20);  border-color: rgba(var(--hv-green-rgb),0.55);  color: #d6f0c8; }
.pr-email-badge--off  { background: rgba(192,48,32,0.25);  border-color: rgba(192,48,32,0.55);  color: #ffaaaa; }
.pr-email-badge--none { background: rgba(255,255,255,0.10); border-color: rgba(255,255,255,0.30); color: rgba(255,255,255,0.65); }

.pr-hero-assoc {
  font-size:var(--hv-sz-xs); font-weight: 700;
  letter-spacing: 0.07em; text-transform: uppercase;
  color: rgba(255,255,255,0.48);
  margin-bottom: 18px;
}
.pr-hero-assoc a, .pr-hero-assoc span { color: rgba(255,255,255,0.78); }
.pr-hero-assoc a:hover { color: var(--hv-green-mid); }

/* Action buttons */
.pr-hero-actions {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
}
.pr-action-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 18px;
  border-radius: var(--hv-r-pill);
  font-family: var(--hv-font);
  font-size:var(--hv-sz-xs); font-weight: 700;
  cursor: pointer; transition: all 0.15s;
  border: none; text-decoration: none;
  white-space: nowrap;
}
.pr-action-btn svg {
  width: 13px; height: 13px;
  stroke: currentColor; fill: none;
  stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round;
  flex-shrink: 0;
}
.pr-action-ghost {
  background: rgba(255,255,255,0.08);
  border: 1.5px solid rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.78);
}
.pr-action-ghost:hover { background: rgba(255,255,255,0.16); color: #fff; }
.pr-action-admin {
  background: rgba(245,224,128,0.14);
  border: 1.5px solid rgba(245,224,128,0.32);
  color: var(--hv-yellow-mid);
}
.pr-action-admin:hover { background: rgba(245,224,128,0.26); color: #fffde0; }

/* Photo upload inline form */
.pr-photo-upload-label {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 18px;
  border-radius: var(--hv-r-pill);
  font-family: var(--hv-font);
  font-size:var(--hv-sz-xs); font-weight: 700;
  cursor: pointer; transition: all 0.15s;
  background: rgba(255,255,255,0.08);
  border: 1.5px solid rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.78);
}
.pr-photo-upload-label:hover { background: rgba(255,255,255,0.16); color: #fff; }
.pr-photo-upload-label svg {
  width: 13px; height: 13px;
  stroke: currentColor; fill: none;
  stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round;
}

/* Hero responsive */
@media (max-width: 960px) {
  .pr-hero-content { flex-direction: column; text-align: center; align-items: center; gap: 20px; padding: 32px 28px 36px; }
  .pr-hero-actions { justify-content: center; }
  .pr-page-badge { margin-left: auto; margin-right: auto; }
}
@media (max-width: 640px) {
  .pr-hero-content { padding: 24px 20px 28px; }
  .pr-avatar, .pr-avatar-initials { width: 100px; height: 100px; }
  .pr-avatar-initials { font-size: 38px; }
  .pr-hero-name { font-size: 26px; }
}

/* ── jQuery UI tab overrides (.hv-jq-tabs) ───────────────────── */
.hv-jq-tabs.ui-tabs {
  padding: 0;
  border: none;
  background: transparent;
  border-radius: 0;
}
/* Nav row: sits just above the panel border */
.hv-jq-tabs .ui-tabs-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  padding: 0;
  background: transparent;
  border: none;
  border-bottom: none;
  border-radius: 0;
  margin: 0;
}
/* Individual tab button — bordered pill with rounded top corners */
.hv-jq-tabs .ui-tabs-nav .ui-tabs-tab {
  background: var(--hv-green-light);
  border: 1px solid var(--hv-border);
  border-bottom: none;
  border-radius: 8px 8px 0 0;
  margin: 0 3px -1px 0;
  padding: 0;
  list-style: none;
  top: 0;
  position: relative;
}
/* Active tab: white bg that visually merges with the panel */
.hv-jq-tabs .ui-tabs-nav .ui-state-active {
  background: var(--hv-white);
  border-color: var(--hv-border);
  border-bottom-color: var(--hv-white);
  z-index: 1;
}
/* Tab link text */
.hv-jq-tabs .ui-tabs-nav .ui-tabs-anchor {
  display: block;
  padding: 10px 17px;
  font-size:var(--hv-sz-sm);
  font-weight: 700;
  color: var(--hv-text-light);
  text-decoration: none;
  font-family: var(--hv-font);
  outline: none;
  float: none;
}
/* Keyboard focus indicator for the tab anchors. The base rule above clears the
   default outline (so mouse focus is clean); re-assert a visible ring for
   keyboard users via :focus-visible. Inset offset so the tab border/overflow
   doesn't clip it. (WCAG 2.4.7) */
.hv-jq-tabs .ui-tabs-nav .ui-tabs-anchor:focus-visible {
  outline: 3px solid var(--hv-yellow-mid);
  outline-offset: -3px;
}
.hv-jq-tabs .ui-tabs-nav .ui-state-active .ui-tabs-anchor {
  color: var(--hv-navy);
}
.hv-jq-tabs .ui-tabs-nav .ui-tabs-tab:not(.ui-state-active):hover {
  background: var(--hv-green-mid);
}
.hv-jq-tabs .ui-tabs-nav .ui-tabs-tab:not(.ui-state-active):hover .ui-tabs-anchor {
  color: var(--hv-green-deep);
}
/* Panel: bordered content area below the tabs */
.hv-jq-tabs .ui-tabs-panel {
  padding: 20px;
  border: 1px solid var(--hv-border);
  border-radius: 0 8px 8px 8px;
  background: var(--hv-white);
  margin-top: 0;
}

/* HV jq-tabs responsive */
@media (max-width: 640px) {
  .uba-profile-header { flex-direction: column; align-items: flex-start; }
  .uba-profile-actions { align-items: flex-start; }
  .hv-tabs { overflow-x: auto; flex-wrap: nowrap; }
  .hv-tab { padding: 12px 18px; white-space: nowrap; }
  .hv-jq-tabs .ui-tabs-nav { flex-wrap: nowrap; overflow-x: auto; padding-left: 0; }
  .hv-jq-tabs .ui-tabs-nav .ui-tabs-anchor { padding: 9px 14px; white-space: nowrap; }
}

/* ── FullCalendar: show full event title on the V2 calendars ── */
.events.index .fc-day-grid-event .fc-title,
.events.carss_calendar .fc-day-grid-event .fc-title { white-space: normal; overflow: visible; }
.events.index .fc-day-grid-event,
.events.carss_calendar .fc-day-grid-event { height: auto; overflow: visible; }

/* events/index2 page-title action buttons (list view toggle + New Event) */
.ev2-title-actions { display: flex; gap: 8px; margin-left: auto; flex-wrap: wrap; }

/* On phones the V2 calendars open in listMonth (see events_.js
   displayFullCalendar); stack the toolbar so the title and button groups
   don't overlap. The header's list-view / new-event buttons duplicate
   FullCalendar's toolbar and the bottom admin card, so drop them from the
   title row. */
@media (max-width: 640px) {
  .events.index .ev2-title-actions { display: none; }
  .events.index .fc-toolbar .fc-left,
  .events.index .fc-toolbar .fc-center,
  .events.index .fc-toolbar .fc-right,
  .events.carss_calendar .fc-toolbar .fc-left,
  .events.carss_calendar .fc-toolbar .fc-center,
  .events.carss_calendar .fc-toolbar .fc-right {
    float: none;
    display: block;
    text-align: center;
    margin-bottom: 8px;
  }
  .events.index .fc-toolbar .fc-center h2,
  .events.carss_calendar .fc-toolbar .fc-center h2 { float: none; display: inline-block; }
}

/* ── Mobile service request index (views_mobile/service_requests/index) ── */

.mob-sr-page-header { display:flex; align-items:center; justify-content:space-between; padding:16px; background:#fff; border-bottom:1px solid var(--hv-border); margin-bottom:12px; }
.mob-sr-page-title { font-size:18px; font-weight:700; color:var(--hv-navy); }
.mob-sr-new-btn { height:40px; padding:0 16px; font-size:var(--hv-sz-sm); }

.mob-sr-tabs { display:flex; overflow-x:auto; -webkit-overflow-scrolling:touch; border-bottom:2px solid var(--hv-border); background:#fff; margin-bottom:12px; scrollbar-width:none; }
.mob-sr-tabs::-webkit-scrollbar { display:none; }
.mob-sr-tabs .hv-tab { flex-shrink:0; padding:10px 16px; font-size:var(--hv-sz-sm); }

.mob-sr-notice { margin:0 12px 12px; background:var(--hv-yellow-soft); border-radius:var(--hv-r); padding:12px 16px; font-size:var(--hv-sz-sm); font-weight:600; color:var(--hv-navy); }

.mob-sr-filter-strip { display:flex; align-items:center; gap:8px; padding:0 12px 12px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.mob-sr-filter-strip::-webkit-scrollbar { display:none; }
.mob-sr-filter-strip select { flex-shrink:0; height:36px; border:1px solid var(--hv-border); border-radius:var(--hv-r); font-size:var(--hv-sz-sm); padding:0 8px; background:#fff; color:var(--hv-navy); }

.mob-sr-list { padding:0 12px; display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }

.mob-sr-card { background:#fff; border:1px solid var(--hv-border); border-radius:var(--hv-r); overflow:hidden; }
.mob-sr-card.mob-sr-card--overdue { border-left:4px solid var(--hv-error); }
.mob-sr-card.mob-sr-card--new     { border-left:4px solid var(--hv-green); }
.mob-sr-card.mob-sr-card--matched { background:var(--hv-navy-light); }

.mob-sr-top { display:flex; align-items:flex-start; justify-content:space-between; padding:12px 14px 6px; gap:8px; }
.mob-sr-datetime { display:flex; flex-direction:column; gap:2px; }
.mob-sr-date { font-size:15px; font-weight:700; color:var(--hv-navy); }
.mob-sr-time { font-size:var(--hv-sz-sm); color:var(--hv-text-mid); }
.mob-sr-status { font-size:11px; padding:3px 8px; border-radius:20px; white-space:nowrap; flex-shrink:0; margin-top:2px; }

.mob-sr-badges { padding:0 14px 6px; display:flex; gap:6px; flex-wrap:wrap; }

.mob-sr-body { padding:4px 14px 8px; border-top:1px solid #f0f0f0; }
.mob-sr-row { display:flex; align-items:baseline; gap:6px; padding:5px 0; font-size:var(--hv-sz-sm); border-bottom:1px solid #f7f7f7; }
.mob-sr-row:last-child { border-bottom:none; }
.mob-sr-label { flex-shrink:0; width:90px; font-weight:600; color:var(--hv-text-light); font-size:12px; text-transform:uppercase; letter-spacing:0.02em; }
.mob-sr-value { color:var(--hv-navy); line-height:1.4; }
.mob-sr-purpose { font-style:italic; color:var(--hv-text-mid); }

.mob-sr-footer { padding:8px 14px 12px; display:flex; justify-content:flex-end; }
.mob-sr-view-btn { height:36px; padding:0 20px; font-size:var(--hv-sz-sm); }

.mob-sr-empty { text-align:center; padding:40px 20px; color:var(--hv-text-light); font-style:italic; font-size:var(--hv-sz-sm); }

.mob-sr-section-label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.06em; color:var(--hv-text-light); padding:0 12px 6px; }

.mob-sr-search { margin:0 12px 20px; background:#fff; border:1px solid var(--hv-border); border-radius:var(--hv-r); overflow:hidden; }
.mob-sr-search-header { display:flex; align-items:center; gap:10px; padding:12px 16px; border-bottom:1px solid var(--hv-border); font-weight:700; font-size:var(--hv-sz-sm); color:var(--hv-navy); cursor:pointer; }
.mob-sr-search-header svg { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; }
.mob-sr-search-toggle { margin-left:auto; font-size:20px; color:var(--hv-text-light); line-height:1; }
.mob-sr-search-body { padding:14px 16px; display:flex; flex-direction:column; gap:12px; }
.mob-sr-search-body.is-hidden { display:none; }
.mob-sr-search-body .hv-search-input { width:100%; box-sizing:border-box; }
.mob-sr-search-body .hv-search-field-label { font-size:12px; font-weight:600; color:var(--hv-text-light); margin-bottom:4px; }
.mob-sr-date-range { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.mob-sr-search-btn { width:100%; height:44px; font-size:var(--hv-sz-sm); }

.mob-sr-pagination { padding:0 12px 24px; }

/* ── Mobile service request show (views_mobile/service_requests/show) ── */

.mob-show-header { display:flex; align-items:center; gap:12px; padding:14px 16px; background:#fff; border-bottom:1px solid var(--hv-border); margin-bottom:12px; }
.mob-show-back { font-size:var(--hv-sz-sm); color:var(--hv-green-dark); font-weight:600; text-decoration:none; white-space:nowrap; }
.mob-show-back:hover { text-decoration:underline; }
.mob-show-title { font-size:17px; font-weight:700; color:var(--hv-navy); }

.mob-show-summary-card { margin:0 12px 12px; background:#fff; border:1px solid var(--hv-border); border-radius:var(--hv-r); overflow:hidden; padding:14px 16px; }
.mob-show-summary-date { font-size:18px; font-weight:700; color:var(--hv-navy); display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:8px; }
.mob-show-summary-badges { display:flex; gap:6px; flex-wrap:wrap; }
.mob-show-summary-status { display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:700; padding:4px 12px; border-radius:20px; margin-bottom:12px; }
.mob-show-summary-vol { font-weight:500; font-size:12px; }
.mob-show-summary-rows { border-top:1px solid #f0f0f0; margin-top:4px; }

.mob-show-info-row { display:flex; align-items:baseline; gap:8px; padding:7px 0; font-size:var(--hv-sz-sm); border-bottom:1px solid #f7f7f7; }
.mob-show-info-row:last-child { border-bottom:none; }
.mob-show-info-label { flex-shrink:0; width:80px; font-weight:600; font-size:11px; color:var(--hv-text-light); text-transform:uppercase; letter-spacing:0.04em; }
.mob-show-info-value { color:var(--hv-navy); line-height:1.4; flex:1; }
.mob-show-info-purpose { font-style:italic; color:var(--hv-text-mid); }

.mob-show-section { margin:0 12px 12px; }
.mob-show-section-label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.06em; color:var(--hv-text-light); margin-bottom:6px; }

.mob-show-info-block { background:#fff; border:1px solid var(--hv-border); border-radius:var(--hv-r); padding:8px 16px 4px; }

.mob-show-trips { display:flex; flex-direction:column; gap:8px; }
.mob-show-trip-card { background:#fff; border:1px solid var(--hv-border); border-radius:var(--hv-r); padding:12px 14px; }
.mob-show-trip-card.mob-show-trip-card--split { background:#f3f4f6; border-color:#d1d5db; }
.mob-show-trip-route { display:flex; flex-direction:column; gap:2px; margin-bottom:8px; }
.mob-show-trip-stop { display:flex; align-items:flex-start; gap:10px; }
.mob-show-trip-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; margin-top:4px; }
.mob-show-trip-dot.mob-show-trip-dot--origin { background:var(--hv-green); }
.mob-show-trip-dot.mob-show-trip-dot--dest   { background:var(--hv-error); }
.mob-show-trip-line { width:2px; height:10px; background:var(--hv-border); margin-left:4px; }
.mob-show-trip-addr { font-size:var(--hv-sz-sm); color:var(--hv-navy); line-height:1.4; }
.mob-show-trip-time { font-size:12px; color:var(--hv-text-mid); margin-bottom:8px; }
.mob-show-trip-comment { font-size:12px; color:var(--hv-text-mid); font-style:italic; margin-bottom:8px; padding-top:4px; border-top:1px solid #f0f0f0; }
.mob-show-trip-split-label { font-size:12px; color:#6b7280; font-style:italic; }
.mob-show-trip-actions { display:flex; gap:8px; margin-top:4px; border-top:1px solid #f0f0f0; padding-top:10px; }
.mob-show-trip-btn { height:36px; padding:0 16px; font-size:var(--hv-sz-xs); border-radius:var(--hv-r); }

.mob-show-map-card { background:#fff; border:1px solid var(--hv-border); border-radius:var(--hv-r); overflow:hidden; padding:12px 14px; }
.mob-show-map-navigate { display:flex; align-items:center; gap:8px; font-size:var(--hv-sz-sm); font-weight:600; color:var(--hv-green-dark); text-decoration:none; margin-bottom:6px; }
.mob-show-map-navigate svg { width:18px; height:18px; flex-shrink:0; }
.mob-show-map-navigate:hover { text-decoration:underline; }
.mob-show-map-empty { padding:30px; text-align:center; color:var(--hv-text-light); background:var(--hv-green-light); border-radius:var(--hv-r); font-size:var(--hv-sz-sm); }

@media (max-width: 768px) {
  .se2-form-actions { flex-direction: column-reverse; align-items: stretch; }
  .se2-form-actions .hv-btn { text-align: center; }
}

/* ── Events plugin widget (V2) ─────────────────────────────────
   Overrides the inline styles emitted by the TinyMCE
   "Upcoming events" plugin block (#events_plugin_for_style) so it
   matches the HV V2 card aesthetic on editable pages. */
#events_plugin_for_style {
  background: var(--hv-card-bg) !important;
  border: 2px solid var(--hv-border);
  border-radius: var(--hv-r-lg);
  padding: 22px 26px !important;
  box-shadow: 0 1px 8px rgba(30,60,20,0.05);
  margin: 18px 0;
}

#events_plugin_for_style h3 {
  font-size: var(--hv-sz-md) !important;
  font-weight: 800;
  color: var(--hv-navy);
  margin: 0 0 10px !important;
  padding: 0 !important;
  letter-spacing: -0.01em;
}
#events_plugin_for_style h3 span {
  font-size: inherit !important;
  font-family: inherit !important;
}
#events_plugin_for_style h3 a,
#events_plugin_for_style h3 a:visited {
  color: var(--hv-navy) !important;
  text-decoration: none;
}
#events_plugin_for_style h3 a:hover {
  color: var(--hv-green-dark) !important;
}

#events_plugin_for_style > hr {
  border: 0 !important;
  height: 3px !important;
  background: var(--hv-green) !important;
  border-radius: 2px;
  margin: 0 0 18px !important;
  width: 56px;
}

#events_plugin_for_style #events_plugin_in_editable_page > div {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  padding: 12px 0 0;
}

/* image wrapper — fixed width so it stops eating the row */
#events_plugin_for_style #events_plugin_in_editable_page > div > div:nth-of-type(1) {
  flex: 0 0 auto !important;
  width: 100px !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  clear: none !important;
  position: static !important;
  min-height: 0 !important;
}

/* text wrapper — flexes to fill space next to the image */
#events_plugin_for_style #events_plugin_in_editable_page > div > div:nth-of-type(2) {
  flex: 1 1 0 !important;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
  display: block !important;
  position: static !important;
  min-height: 0 !important;
  line-height: 1.35 !important;
}

#events_plugin_for_style #events_plugin_in_editable_page img {
  display: block;
  width: 100px !important;
  height: auto;
  border-radius: var(--hv-r);
  object-fit: cover;
}

/* hr drops to its own line within the flex row */
#events_plugin_for_style #events_plugin_in_editable_page > div > hr {
  flex: 0 0 100%;
  width: 100%;
}

#events_plugin_for_style #events_plugin_in_editable_page > div > div:nth-of-type(2) a:first-of-type {
  color: var(--hv-navy) !important;
  font-family: inherit !important;
  font-weight: 700 !important;
  font-size: var(--hv-sz-sm) !important;
  text-decoration: none;
  line-height: 1.3;
}
#events_plugin_for_style #events_plugin_in_editable_page > div > div:nth-of-type(2) a:first-of-type:hover {
  color: var(--hv-green-dark) !important;
  text-decoration: underline;
}

#events_plugin_for_style #events_plugin_in_editable_page > div > div:nth-of-type(2) a:last-of-type {
  color: var(--hv-text-light) !important;
  font-family: inherit !important;
  font-size: 14px !important;
  font-weight: 500;
  text-decoration: none;
}

#events_plugin_for_style #events_plugin_in_editable_page hr {
  border: 0 !important;
  border-top: 1px solid var(--hv-border) !important;
  height: 0 !important;
  background: none !important;
  margin: 14px 0 0 !important;
  clear: both;
}
#events_plugin_for_style #events_plugin_in_editable_page > div:last-child hr {
  display: none;
}

/* ── Galleria slideshow: the stage is hard-coded to a fixed pixel size in the
   page content (e.g. width:700px;height:450px), which overflowed the viewport
   on phones. Capping the width lets it shrink to its container; albums_.js runs
   Galleria with responsive:true + a height ratio so the stage re-measures and
   keeps its aspect ratio as the width changes. Desktop is unaffected (the stage
   stays at its authored width until the container is narrower). ── */
.galleria { max-width: 100%; }

/* ── Touch-device adaptations (iPad, touch laptops) ─────────── */
@media (pointer: coarse) {
  .hv-btn { min-height: 44px; } /* rescues inline height:38/40px buttons — min-height beats inline height */
  .hv-filter-select { height: 44px; }
  .hv-nav-sub-item { padding: 15px 20px; }
}

/* ── Hover states moved off inline onmouseover/onmouseout (CSP-safe) ────────
   Production CSP blocks inline event-handler attributes, so these hovers were
   dead for real users. !important overrides the elements' inline base styles
   (border / background) that would otherwise win on specificity. */
.hv-radio-option:hover {
  border-color: var(--hv-green-mid) !important;
  background: var(--hv-green-light) !important;
}
.post_menu_button:hover {
  background: rgba(0, 0, 0, 0.07) !important;
}

/* ── jQuery UI datepicker: stack above sticky header AND modals ──────
   The shared #ui-datepicker-div popup is appended to <body> and gets a
   low z-index (jQuery UI derives it from the field's ancestors, ~1). It
   must clear the V2 sticky site header (z-index:20, e.g. the vetting-steps
   "Add Step" form where jQuery UI flips the calendar above the field) AND
   the reports filter overlay (z-index:9999 in reporting_spreadsheets2.html.erb,
   where the birthday-report date-range picker opens inside the modal).
   Inline z-index set by jQuery UI requires !important to override. */
#ui-datepicker-div { z-index: 10000 !important; }

/* reCAPTCHA v2 checkbox fallback — shown after an invisible v3 check didn't
   pass. It appears mid-flow, so we frame it and (via recaptcha_fallback_.js)
   scroll it into view and briefly pulse it so it isn't missed. */
.hv-captcha-fallback {
  border: 1px solid var(--hv-border);
  border-radius: var(--hv-r);
  padding: 14px 16px;
  background: #fff;
}
.hv-captcha-fallback-hint {
  font-size: var(--hv-sz-sm);
  font-weight: 600;
  color: var(--hv-navy);
  margin-bottom: 10px;
  /* Yellow informational box so the instruction is the first thing the user
     sees when the fallback scrolls into view. */
  background: var(--hv-yellow-soft);
  border: 1px solid var(--hv-yellow-mid);
  border-radius: var(--hv-r);
  padding: 12px 14px;
}
.hv-captcha-pulse {
  animation: hv-captcha-pulse 1.2s ease-out 2;
}
@keyframes hv-captcha-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(26, 42, 108, 0.45); }
  70%  { box-shadow: 0 0 0 10px rgba(26, 42, 108, 0); }
  100% { box-shadow: 0 0 0 0 rgba(26, 42, 108, 0); }
}

/* ── Subscription toggle (.ui.checkbox .slider) ──────────────────────────
   Shared by the interest-group subscriptions page and the posts index.
   The markup (link > hidden checkbox + .slider) is what subscriptions.js
   and the subscriptions/users/*.js.erb responses drive; only the look
   lives here. Moved out of the subscriptions index inline <style> in
   Phase 9 of the V1 removal. */
.ui.checkbox { position: relative; width: 40px; }
.ui.checkbox input { position: absolute; margin-left: -9999px; visibility: hidden; }
.ui.checkbox .slider {
  display: block; position: relative; cursor: pointer; outline: none; user-select: none;
  padding: 2px; width: 36px; height: 20px; background-color: #dddddd; border-radius: 20px;
}
.ui.checkbox .slider:before,
.ui.checkbox .slider:after { display: block; position: absolute; top: 1px; left: 1px; bottom: 1px; content: ""; }
.ui.checkbox .slider:before { right: 1px; background-color: #f1f1f1; border-radius: 20px; transition: background 0.4s; }
.ui.checkbox .slider:after  { width: 20px; background-color: #fff; border-radius: 100%; box-shadow: 0 1px 1px rgba(0,0,0,0.3); transition: margin 0.4s; }
.ui.checkbox input:checked + .slider:before { background-color: var(--hv-green, #8ce196); }
.ui.checkbox input:checked + .slider:after  { margin-left: 18px; }

/* Subscriptions page rows: subscriptions.js slides the dependent rows. */
.hv-sub-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; border-top: 1px dashed var(--hv-border); }
.hv-sub-row.hidden { display: none; }
.hv-sub-row .field_label label { font-size: var(--hv-sz-sm); font-weight: 600; margin: 0; cursor: default; }

/* Cookie consent banner (cookieconsent.js, initialised in layouts/application):
   its button takes the village's primary colour, like .hv-btn-primary. The
   layout passes the plugin no button palette, so these are the only colours. */
.cc-window .cc-btn { background-color: var(--hv-green); border-color: var(--hv-green); color: #fff; }
.cc-window .cc-btn:hover,
.cc-window .cc-btn:focus { background-color: var(--hv-green-dark); border-color: var(--hv-green-dark); color: #fff; }
/*
 * Cookie Consent v3 by Insites (now Osano), MIT licence. https://github.com/osano/cookieconsent
 * Copied unchanged from the cookieconsent gem 0.1.0 (vendor/assets/stylesheets/cookieconsent.scss),
 * which was dropped with sass-rails. Third-party file: do not edit.
 */

.cc-window {
    opacity: 1;
    transition: opacity 1s ease
}

.cc-window.cc-invisible {
    opacity: 0
}

.cc-animate.cc-revoke {
    transition: transform 1s ease
}

.cc-animate.cc-revoke.cc-top {
    transform: translateY(-2em)
}

.cc-animate.cc-revoke.cc-bottom {
    transform: translateY(2em)
}

.cc-animate.cc-revoke.cc-active.cc-bottom,
.cc-animate.cc-revoke.cc-active.cc-top,
.cc-revoke:hover {
    transform: translateY(0)
}

.cc-grower {
    max-height: 0;
    overflow: hidden;
    transition: max-height 1s
}

.cc-link,
.cc-revoke:hover {
    text-decoration: underline
}

.cc-revoke,
.cc-window {
    position: fixed;
    overflow: hidden;
    box-sizing: border-box;
    font-family: Helvetica, Calibri, Arial, sans-serif;
    font-size: 16px;
    line-height: 1.5em;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: nowrap;
    flex-wrap: nowrap;
    z-index: 9999
}

.cc-window.cc-static {
    position: static
}

.cc-window.cc-floating {
    padding: 2em;
    max-width: 24em;
    -ms-flex-direction: column;
    flex-direction: column
}

.cc-window.cc-banner {
    padding: 1em 1.8em;
    width: 100%;
    -ms-flex-direction: row;
    flex-direction: row
}

.cc-revoke {
    padding: .5em
}

.cc-header {
    font-size: 18px;
    font-weight: 700
}

.cc-btn,
.cc-close,
.cc-link,
.cc-revoke {
    cursor: pointer
}

.cc-link {
    opacity: .8;
    display: inline-block;
    padding: .2em
}

.cc-link:hover {
    opacity: 1
}

.cc-link:active,
.cc-link:visited {
    color: initial
}

.cc-btn {
    display: block;
    padding: .4em .8em;
    font-size: .9em;
    font-weight: 700;
    border-width: 2px;
    border-style: solid;
    text-align: center;
    white-space: nowrap
}

.cc-banner .cc-btn:last-child {
    min-width: 140px
}

.cc-highlight .cc-btn:first-child {
    background-color: transparent;
    border-color: transparent
}

.cc-highlight .cc-btn:first-child:focus,
.cc-highlight .cc-btn:first-child:hover {
    background-color: transparent;
    text-decoration: underline
}

.cc-close {
    display: block;
    position: absolute;
    top: .5em;
    right: .5em;
    font-size: 1.6em;
    opacity: .9;
    line-height: .75
}

.cc-close:focus,
.cc-close:hover {
    opacity: 1
}

.cc-revoke.cc-top {
    top: 0;
    left: 3em;
    border-bottom-left-radius: .5em;
    border-bottom-right-radius: .5em
}

.cc-revoke.cc-bottom {
    bottom: 0;
    left: 3em;
    border-top-left-radius: .5em;
    border-top-right-radius: .5em
}

.cc-revoke.cc-left {
    left: 3em;
    right: unset
}

.cc-revoke.cc-right {
    right: 3em;
    left: unset
}

.cc-top {
    top: 1em
}

.cc-left {
    left: 1em
}

.cc-right {
    right: 1em
}

.cc-bottom {
    bottom: 1em
}

.cc-floating>.cc-link {
    margin-bottom: 1em
}

.cc-floating .cc-message {
    display: block;
    margin-bottom: 1em
}

.cc-window.cc-floating .cc-compliance {
    -ms-flex: 1;
    flex: 1
}

.cc-window.cc-banner {
    -ms-flex-align: center;
    align-items: center
}

.cc-banner.cc-top {
    left: 0;
    right: 0;
    top: 0
}

.cc-banner.cc-bottom {
    left: 0;
    right: 0;
    bottom: 0
}

.cc-banner .cc-message {
    -ms-flex: 1;
    flex: 1
}

.cc-compliance {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
    align-items: center;
    -ms-flex-line-pack: justify;
    align-content: space-between
}

.cc-compliance>.cc-btn {
    -ms-flex: 1;
    flex: 1
}

.cc-btn+.cc-btn {
    margin-left: .5em
}

@media print {
    .cc-revoke,
    .cc-window {
        display: none
    }
}

@media screen and (max-width:900px) {
    .cc-btn {
        white-space: normal
    }
}

@media screen and (max-width:414px) and (orientation:portrait),
screen and (max-width:736px) and (orientation:landscape) {
    .cc-window.cc-top {
        top: 0
    }
    .cc-window.cc-bottom {
        bottom: 0
    }
    .cc-window.cc-banner,
    .cc-window.cc-left,
    .cc-window.cc-right {
        left: 0;
        right: 0
    }
    .cc-window.cc-banner {
        -ms-flex-direction: column;
        flex-direction: column
    }
    .cc-window.cc-banner .cc-compliance {
        -ms-flex: 1;
        flex: 1
    }
    .cc-window.cc-floating {
        max-width: none
    }
    .cc-window .cc-message {
        margin-bottom: 1em
    }
    .cc-window.cc-banner {
        -ms-flex-align: unset;
        align-items: unset
    }
}

.cc-floating.cc-theme-classic {
    padding: 1.2em;
    border-radius: 5px
}

.cc-floating.cc-type-info.cc-theme-classic .cc-compliance {
    text-align: center;
    display: inline;
    -ms-flex: none;
    flex: none
}

.cc-theme-classic .cc-btn {
    border-radius: 5px
}

.cc-theme-classic .cc-btn:last-child {
    min-width: 140px
}

.cc-floating.cc-type-info.cc-theme-classic .cc-btn {
    display: inline-block
}

.cc-theme-edgeless.cc-window {
    padding: 0
}

.cc-floating.cc-theme-edgeless .cc-message {
    margin: 2em 2em 1.5em
}

.cc-banner.cc-theme-edgeless .cc-btn {
    margin: 0;
    padding: .8em 1.8em;
    height: 100%
}

.cc-banner.cc-theme-edgeless .cc-message {
    margin-left: 1em
}

.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn {
    margin-left: 0
}
/*
 * Stylesheet manifest for the app layout (app/views/layouts/application.html.erb
 * and app/views_mobile/layouts/application.html.erb). Since the V1 UI removal
 * (docs/v1_removal_plan.md) the whole UI is the HV design system in
 * helpfulvillage.css; per-page stylesheets are linked from the page itself
 * through `content_for :head_css` (fullcalendar, free_donations_, survey_lauc,
 * villages/<village>). No require_tree: nothing else in this directory is global.
 *



 */

