/* YCN Core: shared front-end styles, scoped to .ycn so the theme is untouched.
   Colors match the staging kit: ink navy, news red, newsprint cream, rule line. */

.ycn {
	--ycn-navy: #16242F;
	--ycn-red: #AF2318;
	--ycn-red-dark: #8E1C13;
	--ycn-cream: #F4F1E9;
	--ycn-rule: #D8D3C7;
	--ycn-text: #3A3A3A;
	--ycn-muted: #666666;
	--ycn-gold: #D9A441;
	--ycn-ok: #1F5F2E;
	--ycn-serif: 'Playfair Display', Georgia, 'Times New Roman', serif;
	--ycn-sans: 'Inter', -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
	color: var(--ycn-text);
	font-family: var(--ycn-sans);
	font-size: 16px;
	line-height: 1.55;
	max-width: 880px;
	margin: 0 auto;
}
.ycn *, .ycn *::before, .ycn *::after { box-sizing: border-box; }
.ycn h2, .ycn h3, .ycn h4 { font-family: var(--ycn-serif); color: var(--ycn-navy); line-height: 1.2; margin: 1.4em 0 .5em; }
.ycn h2 { font-size: 1.9rem; }
.ycn h3 { font-size: 1.35rem; border-top: 3px solid var(--ycn-navy); padding-top: .6em; }
.ycn h4 { font-size: 1.15rem; margin: 0; }
.ycn a { color: var(--ycn-red); }
.ycn-muted { color: var(--ycn-muted); }
.ycn-small { font-size: .875rem; }
.ycn-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Buttons */
.ycn-btn {
	display: inline-block; font-family: var(--ycn-sans); font-weight: 600; font-size: .95rem;
	padding: .6em 1.2em; border: 2px solid var(--ycn-navy); background: #fff; color: var(--ycn-navy) !important;
	text-decoration: none !important; cursor: pointer; border-radius: 2px; line-height: 1.2;
	transition: background .15s, color .15s, border-color .15s;
}
.ycn-btn:hover, .ycn-btn:focus-visible { background: var(--ycn-navy); color: #fff !important; }
.ycn-btn--primary { background: var(--ycn-red); border-color: var(--ycn-red); color: #fff !important; }
.ycn-btn--primary:hover, .ycn-btn--primary:focus-visible { background: var(--ycn-red-dark); border-color: var(--ycn-red-dark); }
.ycn-btn--lg { font-size: 1.1rem; padding: .8em 2em; }
.ycn-btn:disabled { opacity: .6; cursor: wait; }
.ycn-btn:focus-visible { outline: 3px solid var(--ycn-gold); outline-offset: 2px; }

/* Notices */
.ycn-notice { border-left: 4px solid var(--ycn-navy); background: var(--ycn-cream); padding: .8em 1em; margin: 1em 0; }
.ycn-notice ul { margin: 0; padding-left: 1.2em; }
.ycn-notice--error { border-left-color: var(--ycn-red); background: #FBEDEB; }
.ycn-notice--ok { border-left-color: var(--ycn-ok); background: #EAF4EC; }

/* Forms */
.ycn-form { margin: 0; }
.ycn-fieldset { border: 1px solid var(--ycn-rule); background: #fff; padding: 1.1em 1.25em .4em; margin: 0 0 1.25em; }
.ycn-fieldset[hidden] { display: none; }
.ycn-fieldset legend { font-family: var(--ycn-serif); font-weight: 700; color: var(--ycn-navy); font-size: 1.1rem; padding: 0 .4em; }
.ycn-field { margin: 0 0 .9em; flex: 1 1 0; min-width: 0; }
.ycn-field label { display: block; font-size: .85rem; font-weight: 600; margin-bottom: .25em; color: var(--ycn-navy); }
.ycn input[type=text], .ycn input[type=email], .ycn input[type=tel], .ycn input[type=password],
.ycn input[type=search], .ycn input[type=date], .ycn select {
	width: 100%; padding: .6em .7em; border: 1px solid #B9B3A5; border-radius: 2px; background: #fff;
	font: inherit; color: var(--ycn-text); min-height: 44px;
}
.ycn input:focus, .ycn select:focus { outline: 2px solid var(--ycn-navy); outline-offset: 0; border-color: var(--ycn-navy); }
.ycn-row { display: flex; gap: 1em; flex-wrap: wrap; }
.ycn-row--addr .ycn-field:nth-child(1) { flex: 3 1 180px; }
.ycn-row--addr .ycn-field:nth-child(2) { flex: 0 0 80px; }
.ycn-row--addr .ycn-field:nth-child(3) { flex: 1 1 110px; }
.ycn-secure { font-size: .85rem; color: var(--ycn-muted); margin: 0 0 .8em; }
.ycn-secure::before { content: '\1F512\00a0'; }

/* Account */
.ycn-account__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1em; flex-wrap: wrap; }
.ycn-account__head h2 { margin-top: 0; }
.ycn-sub { border: 1px solid var(--ycn-rule); background: #fff; padding: 1.1em 1.25em; margin-bottom: 1em; }
.ycn-sub__top { display: flex; justify-content: space-between; align-items: center; gap: 1em; flex-wrap: wrap; }
.ycn-sub__facts { display: grid; grid-template-columns: max-content 1fr; gap: .3em 1.2em; margin: .8em 0; }
.ycn-sub__facts dt { font-weight: 600; color: var(--ycn-navy); }
.ycn-sub__facts dd { margin: 0; }
.ycn-sub__actions { display: flex; gap: .6em; flex-wrap: wrap; }
.ycn-inline { display: inline; margin: 0; }
.ycn-pill { font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: .25em .7em; border-radius: 999px; background: var(--ycn-cream); color: var(--ycn-navy); }
.ycn-pill--active, .ycn-pill--comp { background: #EAF4EC; color: var(--ycn-ok); }
.ycn-pill--past_due { background: #FBEDEB; color: var(--ycn-red); }
.ycn-pill--expired { background: #EEE; color: var(--ycn-muted); }
.ycn-details { margin-top: 1em; border-top: 1px solid var(--ycn-rule); padding-top: .8em; }
.ycn-details summary { cursor: pointer; font-weight: 600; color: var(--ycn-navy); padding: .3em 0; }
.ycn-details[open] summary { margin-bottom: .8em; }
.ycn-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.ycn-table th, .ycn-table td { text-align: left; padding: .55em .6em; border-bottom: 1px solid var(--ycn-rule); }
.ycn-table th { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--ycn-muted); }
.ycn-account--login form p { margin-bottom: .9em; }
.ycn-account--login input[type=submit] { background: var(--ycn-red); color: #fff; border: 0; padding: .7em 1.6em; font-weight: 600; cursor: pointer; }

.ycn .ycn-btn--sm { font-size: .8rem; padding: .35em .7em; }
.ycn-cards { margin: .6em 0 1em; }
.ycn-card-row { display: flex; justify-content: space-between; align-items: center; gap: 1em; flex-wrap: wrap; padding: .6em .8em; border: 1px solid var(--ycn-rule); background: #fff; margin-bottom: .5em; }
.ycn-card-row__actions { display: flex; gap: .4em; }
.ycn-portal-section { margin-top: 1.4em; }
.ycn-account-name { margin-top: 1em !important; }
.ycn-pill--test { background: #FFF3CD; color: #6B5300; }
.ycn-test-banner { border: 2px dashed #B8860B; background: #FFF8E1; color: #5A4500; padding: .7em .9em; margin: 0 0 .9em; font-size: .9rem; }
.ycn-test-banner strong { color: #5A4500; }
.ycn-test-banner code { background: #fff; padding: 0 .3em; }
@media (max-width: 600px) {
	.ycn h2 { font-size: 1.5rem; }
	.ycn-fieldset { padding: .9em .9em .2em; }
	.ycn-sub__facts { grid-template-columns: 1fr; }
	.ycn-sub__facts dd { margin-bottom: .4em; }
	.ycn-btn--lg { width: 100%; }
}

/* Hosted payment pages (card entry on the processor's site) */
.ycn-hosted { margin: .6em 0 1.2em; }
.ycn-hosted__summary { border: 1px solid var(--ycn-rule); background: #fff; padding: .8em 1em; margin-bottom: 1em; }
.ycn-hosted__summary p { margin: 0; }
.ycn-hosted__frame { display: block; width: 100%; height: 640px; border: 1px solid var(--ycn-rule); background: #fff; }
.ycn-hosted.is-busy .ycn-hosted__frame { opacity: .4; pointer-events: none; }
.ycn-hosted__busy { font-weight: 600; color: var(--ycn-navy); }
