/* =============================================================
   Login + registration — návrh D.
   Tokens come from profile.css (:root), which is enqueued first.
   Everything here is hp- prefixed: the theme also styles .btn,
   .field and .tabs, and losing that fight silently is how the
   stock forms looked half-branded before.
   ============================================================= */

.hp-auth-stage {
	min-height: 68vh;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	padding: 74px 16px 40px;
	position: relative;
	font-family: var(--hp-font-sub), Georgia, serif;
	color: var(--hp-ink);
}

.hp-auth-card {
	width: min(460px, 100%);
	padding: 44px 38px 34px;
	margin-top: 44px;
	position: relative;
	border-radius: var(--hp-radius);
	background: rgba(255, 255, 255, .07);
	border: 1px solid var(--hp-glass-border);
	box-shadow: var(--hp-shadow), inset 0 1px 0 rgba(255, 255, 255, .16);
	-webkit-backdrop-filter: blur(28px) saturate(1.15) brightness(.88);
	backdrop-filter: blur(28px) saturate(1.15) brightness(.88);
}

.hp-auth-mascot {
	position: absolute; top: -74px; left: 50%; transform: translateX(-50%);
	width: 118px; height: auto;
	filter: drop-shadow(0 10px 22px rgba(0, 0, 0, .45));
	animation: hpAuthBob 5s ease-in-out infinite;
}
@keyframes hpAuthBob { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-7px); } }
@media (prefers-reduced-motion: reduce) { .hp-auth-mascot { animation: none; } }

.hp-auth-title {
	font-family: var(--hp-font-head), serif;
	font-size: clamp(24px, 5vw, 29px);
	color: var(--hp-gold);
	text-align: center; letter-spacing: .01em;
	margin: 0 0 6px;
	text-shadow: 0 0 30px rgba(255, 194, 0, .35);
}
.hp-auth-quip {
	text-align: center;
	font-family: var(--hp-font-head), serif; font-style: italic;
	font-size: 13.5px; letter-spacing: .3px;
	color: rgba(255, 236, 200, .78);
	margin: 0 0 26px;
}

/* ---- sliding tab ---- */
.hp-auth-tabs {
	display: grid; grid-template-columns: 1fr 1fr; gap: 5px;
	background: rgba(10, 10, 30, .45);
	border: 1px solid var(--hp-glass-border-soft);
	border-radius: 15px; padding: 5px; margin-bottom: 26px; position: relative;
}
.hp-auth-thumb {
	position: absolute; top: 5px; bottom: 5px; left: 5px; width: calc(50% - 7.5px);
	border-radius: 11px;
	background: linear-gradient(160deg, rgba(255, 122, 217, .85), rgba(240, 82, 189, .85));
	box-shadow: 0 6px 20px rgba(255, 122, 217, .35), inset 0 1px 0 rgba(255, 255, 255, .4);
	transition: transform .28s cubic-bezier(.6, .05, .2, 1.2);
}
.hp-auth-tabs.reg .hp-auth-thumb { transform: translateX(calc(100% + 5px)); }
.hp-tab-btn {
	position: relative; z-index: 1; border: none; background: none; cursor: pointer;
	font-family: var(--hp-font-head), serif; font-size: 14.5px;
	color: var(--hp-ink-dim);
	padding: 11px 6px; border-radius: 11px; transition: color .2s;
}
.hp-tab-btn[aria-selected="true"] { color: #33052a; }
.hp-tab-btn:not([aria-selected="true"]):hover { color: var(--hp-ink); }
.hp-tab-btn:focus-visible { outline: 2px solid var(--hp-pink); outline-offset: 2px; }

.hp-pane { display: none; animation: hpPaneIn .34s ease both; }
.hp-pane.on { display: block; }
@keyframes hpPaneIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .hp-pane { animation: none; } }

/* ---- fields ---- */
.hp-auth-card .hp-field { display: flex; flex-direction: column; gap: 7px; margin-bottom: 16px; }
.hp-auth-card .hp-field label {
	font-family: var(--hp-font-sub), serif; font-size: 13px; font-weight: 600;
	color: var(--hp-ink-dim); letter-spacing: .03em;
}
.hp-auth-card .hp-field input[type="email"],
.hp-auth-card .hp-field input[type="password"],
.hp-auth-card .hp-field input[type="text"] {
	font-family: var(--hp-font-sub), serif; font-size: 15px; color: var(--hp-ink);
	background: rgba(10, 10, 30, .42);
	border: 1.5px solid rgba(245, 153, 255, .55);
	border-radius: 13px; padding: 13px 15px; width: 100%; box-sizing: border-box;
	transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
/* An iPhone zooms the page in when a text field under 16 px gets focus, and the
   zoomed page then slides sideways under the thumb (Michal 2026-10-10: the login
   and register page "slides to the sides"). 16 px on touch screens stops the
   zoom; a mouse-and-keyboard screen keeps the 15 px above. */
@media (any-pointer: coarse) {
	.hp-auth-card .hp-field input[type="email"],
	.hp-auth-card .hp-field input[type="password"],
	.hp-auth-card .hp-field input[type="text"] { font-size: 16px; }
}
.hp-auth-card .hp-field input::placeholder { color: rgba(244, 242, 255, .35); }
.hp-auth-card .hp-field input:hover { border-color: rgba(245, 153, 255, .8); }
.hp-auth-card .hp-field input:focus {
	outline: none; border-color: var(--hp-gold);
	box-shadow: 0 0 0 4px rgba(255, 194, 0, .16), 0 0 22px rgba(255, 194, 0, .14);
	background: rgba(10, 10, 30, .55);
}

/* ---- checkboxes ---- */
.hp-auth-card .hp-check {
	display: flex; gap: 11px; align-items: flex-start; margin-bottom: 13px; cursor: pointer;
	font-size: 13.5px; color: var(--hp-ink-dim); line-height: 1.45;
}
.hp-auth-card .hp-check--inline { margin: 0; }
/* NO display:grid and no ::after here. WebKit — which is every Safari and every
   iPhone — mishandles activation on a form control laid out as a grid: the box
   renders correctly but a real pointer click will not toggle it, so the customer
   cannot agree to the terms and cannot register. The tick is a background image
   instead, which leaves the control's own layout alone. */
.hp-auth-card .hp-check input {
	appearance: none; -webkit-appearance: none; flex: 0 0 auto;
	width: 21px; height: 21px; margin: 1px 0 0; border-radius: 7px; cursor: pointer;
	border: 1.5px solid rgba(245, 153, 255, .6); background: rgba(10, 10, 30, .4);
	background-repeat: no-repeat; background-position: center; background-size: 13px 10px;
	transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.hp-auth-card .hp-check input:checked {
	background-color: var(--hp-gold);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='10' viewBox='0 0 13 10'%3E%3Cpath d='M1.5 5.2 L4.8 8.5 L11.5 1.6' fill='none' stroke='%232a1a00' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	border-color: var(--hp-gold); box-shadow: 0 0 14px rgba(255, 194, 0, .35);
}
.hp-auth-card .hp-check input:focus-visible { outline: 3px solid rgba(255, 215, 94, .5); outline-offset: 2px; }

.hp-auth-foot {
	display: flex; justify-content: space-between; align-items: center; gap: 12px;
	margin: 4px 0 20px; font-size: 13px;
}
.hp-auth-link {
	color: var(--hp-gold); text-decoration: none;
	border-bottom: 1px dotted rgba(255, 194, 0, .5);
}
.hp-auth-link:hover { color: #fff; border-color: #fff; }

/* ---- buttons ---- */
.hp-auth-card .hp-auth-btn {
	font-family: var(--hp-font-head), serif; font-size: 15px; letter-spacing: .02em;
	border: none; border-radius: 14px; cursor: pointer;
	padding: 13px 22px; color: #2a1a00;
	background: linear-gradient(160deg, #ffd75e, var(--hp-gold) 60%, #e8a800);
	box-shadow: 0 8px 26px rgba(255, 194, 0, .32), inset 0 1px 0 rgba(255, 255, 255, .55);
	transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
.hp-auth-card .hp-auth-btn:hover {
	transform: translateY(-2px);
	box-shadow: 0 14px 34px rgba(255, 194, 0, .44), inset 0 1px 0 rgba(255, 255, 255, .6);
	filter: saturate(1.08);
}
.hp-auth-card .hp-auth-btn:active { transform: translateY(0); box-shadow: 0 5px 16px rgba(255, 194, 0, .3); }
.hp-auth-card .hp-auth-btn:focus-visible { outline: 3px solid rgba(255, 215, 94, .65); outline-offset: 3px; }
.hp-auth-card .hp-auth-btn--pink {
	color: #33052a;
	background: linear-gradient(160deg, #ffb2ea, var(--hp-magenta) 65%, #f052bd);
	box-shadow: 0 8px 26px rgba(255, 122, 217, .32), inset 0 1px 0 rgba(255, 255, 255, .55);
}
.hp-auth-card .hp-auth-btn--pink:hover { box-shadow: 0 14px 34px rgba(255, 122, 217, .46), inset 0 1px 0 rgba(255, 255, 255, .6); }
.hp-auth-card .hp-auth-submit { width: 100%; font-size: 16px; padding: 15px 22px; }

/* ---- footnotes ---- */
.hp-auth-note {
	margin: -4px 0 16px; font-size: 12.5px; line-height: 1.5;
	color: var(--hp-ink-faint);
}
.hp-auth-micro {
	margin: 20px 0 0; text-align: center; font-size: 13px; line-height: 1.55;
	font-family: var(--hp-font-head), serif; font-style: italic; letter-spacing: .3px;
	color: rgba(255, 255, 255, .82);
	padding: 12px 16px; border-radius: 14px;
	background: rgba(255, 122, 217, .09); border: 1px dashed rgba(255, 122, 217, .4);
}
.hp-auth-micro b { color: var(--hp-gold); font-style: normal; }
.hp-auth-switch {
	margin: 20px 0 0; display: flex; align-items: center; justify-content: center; gap: 9px;
	font-family: var(--hp-font-head), serif; font-style: italic; font-size: 12.5px;
	letter-spacing: .3px; color: rgba(255, 236, 200, .78); flex-wrap: wrap;
}
.hp-reg-link {
	background: none; border: none; cursor: pointer; padding: 0 0 1px;
	font-family: var(--hp-font-head), serif; font-style: normal; font-size: 12.5px; letter-spacing: .05em;
	color: var(--hp-magenta); border-bottom: 1px dotted rgba(255, 122, 217, .55);
	transition: color .15s ease, border-color .15s ease;
}
.hp-reg-link:hover { color: #fff; border-color: #fff; }
.hp-reg-link:focus-visible { outline: 2px solid var(--hp-pink); outline-offset: 3px; }

/* WooCommerce's own notices, wearing our clothes.
   Woo/Elementor pin an ICON FONT glyph over the notice with position:absolute
   and reserve room for it with padding-left:3.5em. Our padding override took
   the room away but left the glyph, so a red blob sat straight on "Chyba:".
   The pseudo icons die here and a flex row with our own badge takes over —
   the icon then OCCUPIES space instead of floating over the words. */
.hp-auth-stage .woocommerce-error,
.hp-auth-stage .woocommerce-message,
.hp-auth-stage .woocommerce-info {
	width: min(460px, 100%); margin: 0 0 18px; padding: 13px 16px;
	list-style: none; border-radius: 14px; font-size: 13.5px; line-height: 1.5;
	background: rgba(10, 10, 30, .78); border: 1px solid var(--hp-glass-border-soft);
	color: var(--hp-ink);
}
.hp-auth-stage .woocommerce-error::before,
.hp-auth-stage .woocommerce-message::before,
.hp-auth-stage .woocommerce-info::before,
.hp-auth-stage .woocommerce-error::after,
.hp-auth-stage .woocommerce-message::after,
.hp-auth-stage .woocommerce-info::after { content: none !important; display: none !important; }
.hp-auth-stage .woocommerce-error { border-color: rgba(255, 122, 217, .55); }
.hp-auth-stage .woocommerce-message { border-color: rgba(255, 194, 0, .5); }
.hp-auth-stage .woocommerce-error li,
.hp-auth-stage .woocommerce-message li,
.hp-auth-stage .woocommerce-info li {
	display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 0;
}
.hp-auth-stage .woocommerce-error li + li,
.hp-auth-stage .woocommerce-message li + li { margin-top: 8px; }
.hp-auth-stage .woocommerce-error li::before,
.hp-auth-stage .woocommerce-message li::before,
.hp-auth-stage .woocommerce-info li::before {
	content: "!" !important; display: grid !important; place-items: center;
	position: static !important; flex: 0 0 auto; width: 21px; height: 21px; margin-top: 1px;
	border-radius: 50%; font-family: var(--hp-font-display), sans-serif; font-size: 13px; line-height: 1;
	background: linear-gradient(160deg, #ff9ad9, #d8388f); color: #33052a;
	box-shadow: 0 3px 8px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .45);
}
.hp-auth-stage .woocommerce-message li::before { content: "✓" !important; background: linear-gradient(160deg, #ffd75e, var(--hp-gold)); color: #2a1a00; }
.hp-auth-stage .woocommerce-info li::before { content: "i" !important; background: linear-gradient(160deg, #b9a9ff, #8b7bff); color: #171233; }
.hp-auth-stage .woocommerce-error strong { color: #ff9ad9; }
.hp-auth-stage .woocommerce-error a,
.hp-auth-stage .woocommerce-message a { color: var(--hp-gold); }

/* The theme wraps the account page in its own columns — collapse them so the
   card can centre, the same neutralising the profile page needs. */
body.hp-auth-page .u-column1,
body.hp-auth-page .u-column2 { width: 100%; float: none; margin: 0; padding: 0; }
body.hp-auth-page .woocommerce .col2-set { display: block; }

@media (max-width: 560px) {
	.hp-auth-card { padding: 36px 22px 28px; }
	.hp-auth-foot { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* The theme gives WooCommerce's submit button position:relative with an offset,
   so it rendered 52px below its own form box and sat on top of the XP note.
   Pin it back into normal flow — the card owns this layout, not the theme. */
.hp-auth-card form {
	margin: 0;
	/* The theme puts a hard pixel height on WooCommerce forms (273px here), so
	   the submit button rendered outside its own box and landed on top of the
	   note below it. !important is deliberate: it is beating a fixed height that
	   cannot be right for a form whose fields change with the shop's settings. */
	height: auto !important;
	min-height: 0 !important;
}
.hp-auth-card .hp-auth-submit {
	position: static; top: auto; left: auto; right: auto; bottom: auto;
	float: none; margin: 6px 0 0; display: block;
}
.hp-auth-card .woocommerce-privacy-policy-text p {
	font-size: 12.5px; line-height: 1.5; color: var(--hp-ink-faint); margin: 0 0 14px;
}
.hp-auth-card .woocommerce-privacy-policy-text a { color: var(--hp-gold); }

/* ---- winning the fight with the theme -------------------------------------
   The theme paints WooCommerce forms as a bordered, filled panel. Inside the
   glass card that reads as a second box floating in the first one, which is
   not the design: the fields sit directly on the card. */
.hp-auth-card .woocommerce-form,
.hp-auth-card form.login,
.hp-auth-card form.register {
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	border-radius: 0 !important;
}

/* The register call to action is pink in návrh D. The theme's .button rule is
   more specific than a bare class, so state it plainly here. */
.hp-auth-card button.hp-auth-btn--pink,
.hp-auth-card button.hp-auth-btn--pink:hover,
.hp-auth-card button.hp-auth-btn--pink:focus {
	color: #33052a;
	background: linear-gradient(160deg, #ffb2ea, var(--hp-magenta) 65%, #f052bd);
}
.hp-auth-card button.hp-auth-btn--pink {
	box-shadow: 0 8px 26px rgba(255, 122, 217, .32), inset 0 1px 0 rgba(255, 255, 255, .55);
}
.hp-auth-card button.hp-auth-btn--pink:hover {
	box-shadow: 0 14px 34px rgba(255, 122, 217, .46), inset 0 1px 0 rgba(255, 255, 255, .6);
}

/* WooCommerce's default privacy paragraph is replaced by the consent checkbox
   below it, which links to the same two documents and additionally records an
   explicit agreement — so the disclosure is not lost, it is upgraded. */
.hp-auth-card .woocommerce-privacy-policy-text { display: none; }

/* The theme also skins the login form's own wrapper on the account page. */
body.hp-auth-page .woocommerce,
body.hp-auth-page .woocommerce-account .woocommerce {
	background: none; border: 0; box-shadow: none; padding: 0;
}

/* ---- last word over the theme ---------------------------------------------
   The theme's own rules carry !important, so matching it is not enough — these
   are scoped from <body> to outrank them. Kept together and last in the file so
   it is obvious this block exists to win a specificity fight, not to style. */
body.hp-auth-page .hp-auth-card form.woocommerce-form,
body.hp-auth-page .hp-auth-card form.login,
body.hp-auth-page .hp-auth-card form.register,
body.hp-auth-page .hp-auth-card form.woocommerce-ResetPassword {
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	border-radius: 0 !important;
}
/* Elementor Pro's My-account widget halves the reset forms from 1025 px up:
   `.elementor-widget-woocommerce-my-account .e-my-account-tab:not(…) .woocommerce
   .woocommerce-ResetPassword { width: 50% }` (0,5,0) — the forgotten-password
   and new-password forms sat in the left half of the card, label wrapped. This
   selector outranks it (0,5,2) and stays inside our card; !important against
   any theme rule that carries one, like the block above. */
body.hp-auth-page .hp-auth-stage .hp-auth-card form.woocommerce-ResetPassword.lost_reset_password {
	width: auto !important;
	max-width: none !important;
	float: none !important;
}
body.hp-auth-page .hp-auth-card button.hp-auth-btn {
	background-image: linear-gradient(160deg, #ffd75e, var(--hp-gold) 60%, #e8a800) !important;
	background-color: var(--hp-gold) !important;
	color: #2a1a00 !important;
	border: 0 !important;
}
body.hp-auth-page .hp-auth-card button.hp-auth-btn--pink {
	background-image: linear-gradient(160deg, #ffb2ea, var(--hp-magenta) 65%, #f052bd) !important;
	background-color: var(--hp-magenta) !important;
	color: #33052a !important;
}

/* The checkbox rows are now <span class="hp-check"> with a sibling <label for>,
   because an <input> nested in its own <label> double-toggles in WebKit and the
   box could not be ticked at all. Label keeps the field styling off it. */
.hp-auth-card .hp-check label {
	font-family: var(--hp-font-sub), serif; font-weight: 400; font-size: 13.5px;
	color: var(--hp-ink-dim); line-height: 1.45; cursor: pointer; margin: 0;
	letter-spacing: normal;
}
.hp-auth-card .hp-check label b { color: var(--hp-ink); }

/* WooCommerce's JS wraps password inputs in <span class="password-input"> to add
   a show-password eye. The wrapper is inline by default, so it changed the
   field's height the moment it appeared and shoved everything below it down by
   34px — mid-form, right as the customer reaches for the consent checkbox. Make
   the wrapper layout-neutral and float the eye inside the field. */
.hp-auth-card .hp-field .password-input {
	display: block; position: relative; width: 100%;
}
.hp-auth-card .hp-field .password-input input { width: 100%; padding-right: 46px; }
.hp-auth-card .hp-field .show-password-input {
	position: absolute; top: 50%; right: 14px; transform: translateY(-50%);
	width: 22px; height: 22px; cursor: pointer; opacity: .65;
	background: none; border: 0; padding: 0;
}
.hp-auth-card .hp-field .show-password-input:hover { opacity: 1; }
.hp-auth-card .hp-field .show-password-input::after { color: var(--hp-ink); }

/* WooCommerce adds a password hint AND a strength meter under the field once
   the customer types. My first attempt pinned both to the bottom of a reserved
   34px slot, which was wrong twice over: the two texts landed on top of each
   other, and when neither rendered the reservation left a dead hole. They flow
   normally now — a little push downward when the meter appears is what every
   site does, and it is far better than overlapping text. */
.hp-auth-card .hp-field--pass { position: relative; }
.hp-auth-card .woocommerce-password-hint,
.hp-auth-card .woocommerce-password-strength {
	display: block; position: static; margin: 6px 0 0; padding: 0;
	font-size: 12px; line-height: 1.45; border: 0; background: none;
	color: var(--hp-ink-faint); text-align: left;
}
.hp-auth-card .woocommerce-password-strength.short,
.hp-auth-card .woocommerce-password-strength.bad { color: #ff9db8; }
.hp-auth-card .woocommerce-password-strength.good { color: var(--hp-gold-soft); }
.hp-auth-card .woocommerce-password-strength.strong { color: #7fe0a6; }

/* "Ešte tu nemáš box v stajni? Registrácia →" was flowing BESIDE the submit
   button and hanging out of the card, because the theme floats WooCommerce
   forms. Clear it and let the line wrap instead of forcing one row. */
.hp-auth-card form { float: none !important; }
.hp-auth-card .hp-auth-switch {
	clear: both; white-space: normal; flex-wrap: wrap;
	max-width: 100%; text-align: center;
}
.hp-auth-card .hp-reg-link { white-space: nowrap; }

/* The show-password eye still floats inside the field. */
.hp-auth-card .hp-field .password-input { display: block; position: relative; width: 100%; }
.hp-auth-card .hp-field .password-input input { width: 100%; padding-right: 46px; }
.hp-auth-card .hp-field .show-password-input {
	position: absolute; top: 25px; right: 14px; transform: translateY(-50%);
	width: 22px; height: 22px; cursor: pointer; opacity: .65;
	background: none; border: 0; padding: 0;
}
.hp-auth-card .hp-field .show-password-input:hover { opacity: 1; }

/* WooCommerce's "Tip: Heslo by malo mať aspoň dvanásť znakov…" is three lines of
   advice that is not in the design and is most of the jump the field makes when
   it appears. The one-line strength verdict stays — that is the useful half —
   and the card stops lurching under the customer's cursor. */
.hp-auth-card .woocommerce-password-hint { display: none !important; }
.hp-auth-card .woocommerce-password-strength { min-height: 17px; }

/* Forgotten-password screens: the theme and WooCommerce frame
   .woocommerce-ResetPassword as a dark bordered box of its own — inside the
   card it is just the form. */
.hp-auth-card form.lost_reset_password {
	background: none;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0;
	max-width: none;
}
.hp-auth-card form.lost_reset_password::before,
.hp-auth-card form.lost_reset_password::after { content: none; display: none; }
.hp-auth-card .hp-auth-quip + .hp-auth-note { margin-top: 10px; }
