/** Nintendo Switch System Update page and installation dialogs. */
.nsu-page,
.nsu-overlay { --fcon-accent: #c91b25; }
.nsu-page .fcon-launch-btn { background: #c91b25; border-color: #c91b25; }
.nsu-page .fcon-launch-btn:hover { background: #a9121b; border-color: #a9121b; }
.nsu-page .fcon-select:focus-visible { box-shadow: 0 0 0 3px rgba(201, 27, 37, .2); }

.nsu-view {
	--nsu-bg: #2d2d2d;
	--nsu-text: #f0f0f0;
	--nsu-line: #7b7b7b;
	--nsu-dialog: #454545;
	--nsu-accent: #7af1d1;
	--nsu-focus: #63d3e6;
	position: absolute;
	inset: 0;
	container-type: size;
	overflow: hidden;
	background: var(--nsu-bg);
	color: var(--nsu-text);
	font-family: Arial, "Helvetica Neue", sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.35;
	letter-spacing: normal;
	text-align: center;
}
.nsu-view[data-theme="light"] { --nsu-bg: #ebebeb; --nsu-text: #2d2d2d; --nsu-line: #999; --nsu-dialog: #f0f0f0; --nsu-accent: #057781; --nsu-focus: #00bdd1; }
.nsu-view p { margin: 0; padding: 0; font: inherit; color: inherit; letter-spacing: inherit; }
.nsu-view button { margin: 0; padding: 0; border-radius: 0; box-shadow: none; background: transparent; color: inherit; font: inherit; letter-spacing: inherit; text-transform: none; cursor: pointer; opacity: 1; }
/* The parent theme suppresses outlines, so draw focus inside the button. */
.nsu-view button:focus-visible { box-shadow: inset 0 0 0 .2cqw var(--nsu-focus); }
.nsu-underlay,
.nsu-dialog { font-size: 2.1875cqw; }
.nsu-underlay { position: absolute; inset: 0; }
.nsu-view:focus { outline: none; }
.nsu-view .nsu-heading { position: absolute; left: 5.45%; top: 4.65%; margin: 0; padding: 0; color: inherit; font: inherit; font-size: 2.5cqw; line-height: 1.3; letter-spacing: normal; text-transform: none; }
.nsu-underlay::before { content: ""; position: absolute; left: 2.35%; right: 2.35%; top: 12.1%; height: max(1px, .1cqh); background: var(--nsu-line); }
.nsu-view .nsu-available { position: absolute; top: 25.8%; left: 10%; width: 80%; }
.nsu-update-action { position: absolute; top: 44.9%; left: 30.2%; width: 39.6%; }
.nsu-view .nsu-update-button { display: block; width: 100%; padding: 1.65cqh 0; border: .18cqw solid var(--nsu-focus); outline: .12cqw solid #364d50; outline-offset: .16cqw; }
.nsu-update-action p { margin-top: 1.2cqh; font-size: 1.4cqw; opacity: .58; }
.nsu-view .nsu-download-note { position: absolute; left: 20%; top: 73.1%; width: 61%; display: flex; gap: .7cqw; font-size: 1.875cqw; line-height: 1.35; text-align: left; }
.nsu-download-note > span:first-child { font-size: 1.65cqw; flex: 0 0 auto; }
.nsu-footer { position: absolute; left: 2.35%; right: 2.35%; top: 89.85%; bottom: 0; border-top: max(1px, .1cqh) solid var(--nsu-line); display: flex; align-items: center; justify-content: space-between; padding: 0 2.6cqw 0 1.5cqw; }
.nsu-controller { width: 4.8cqw; height: 6.2cqh; }
.nsu-footer-actions { display: flex; align-items: center; gap: 3cqw; font-size: 2cqw; }
.nsu-footer-actions button { display: inline-flex; gap: .8cqw; align-items: center; border: 0; }
.nsu-key { display: inline-flex; align-items: center; justify-content: center; width: 1.9cqw; height: 1.9cqw; border-radius: 50%; background: var(--nsu-text); color: var(--nsu-bg); font-size: 1.45cqw; }
.nsu-dimmer { position: absolute; inset: 0; background: rgba(9, 17, 28, .72); }
.nsu-dialog { position: absolute; left: 20%; top: 34.72%; width: 60%; height: 30.56%; border-radius: .3cqw; background: var(--nsu-dialog); box-shadow: 0 0 .3cqw rgba(255,255,255,.07); }
.nsu-view .nsu-status { position: absolute; top: 24.5%; left: 8%; width: 84%; }
.nsu-spinner { position: absolute; left: calc(50% - 1.875cqw); top: 54.5%; width: 3.75cqw; height: 3.75cqw; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; animation: nsu-spin 1s steps(12) infinite; }
.fcon-preview .nsu-spinner { animation: none; }
.nsu-confirm { position: absolute; inset: 0; text-align: left; }
.nsu-confirm p { position: absolute; left: 7.8%; right: 5%; top: 25%; font-size: 2.1cqw; line-height: 1.3; }
.nsu-confirm-actions { position: absolute; left: 0; right: 0; bottom: 0; height: 25%; border-top: .1cqw solid #626262; display: flex; color: var(--nsu-accent); }
.nsu-confirm-actions button { width: 50%; border: 0; }
.nsu-confirm-actions button + button { border-left: .1cqw solid #626262; }
.nsu-confirm-actions button:focus { box-shadow: inset 0 0 0 .2cqw var(--nsu-focus); border-radius: .25cqw; }
.nsu-view[data-phase="ready"] :is(.nsu-dialog, .nsu-dimmer) { display: none; }
.nsu-view[data-phase="confirm"] .nsu-dialog { top: 29.75%; height: 40.5%; }
.nsu-view[data-phase="confirm"] :is(.nsu-status, .nsu-spinner) { display: none; }
.nsu-view[data-phase="complete"] .nsu-status { top: 35%; left: 21%; width: 73%; font-size: 2cqw; line-height: 1.3; text-align: left; white-space: pre-line; }
.nsu-view[data-phase="complete"] .nsu-spinner { display: none; }
.nsu-view[data-phase="restart"] { background: #000; color: #eee; }
.nsu-view[data-phase="restart"] :is(.nsu-underlay, .nsu-dimmer, .nsu-status) { display: none; }
.nsu-view[data-phase="restart"] .nsu-dialog { inset: 0; width: 100%; height: 100%; border: 0; border-radius: 0; background: none; box-shadow: none; }
.nsu-view[data-phase="restart"] .nsu-spinner { top: calc(50% - 1.5cqw); width: 3cqw; height: 3cqw; left: 48.5%; }
@keyframes nsu-spin { to { transform: rotate(360deg); } }

@media (max-aspect-ratio: 1/1) {
	.fcon-screen .nsu-underlay,
	.fcon-screen .nsu-dialog { font-size: 4.4cqw; }
	.fcon-screen .nsu-heading { top: 5%; font-size: 6.3cqw; }
	.fcon-screen .nsu-available { top: 22%; }
	.fcon-screen .nsu-update-action { left: 20%; width: 60%; }
	.fcon-screen .nsu-update-action p { font-size: 3cqw; }
	.fcon-screen .nsu-download-note { top: 72%; left: 10%; width: 80%; gap: 2cqw; font-size: 3.5cqw; }
	.fcon-screen .nsu-download-note > span:first-child { font-size: 3cqw; }
	.fcon-screen .nsu-dialog { left: 8%; width: 84%; top: 36%; height: 27%; }
	.fcon-screen .nsu-spinner { width: 8cqw; height: 8cqw; left: 46cqw; }
	.fcon-screen .nsu-dialog .nsu-spinner { left: calc(50% - 4cqw); }
	.fcon-screen .nsu-controller { width: 11cqw; }
	.fcon-screen .nsu-footer-actions { font-size: 4.5cqw; gap: 5cqw; }
	.fcon-screen .nsu-key { width: 4.4cqw; height: 4.4cqw; font-size: 3.3cqw; }
	.fcon-screen .nsu-confirm p { top: 20%; font-size: 4.4cqw; }
	.fcon-screen .nsu-view[data-phase="complete"] .nsu-status { left: 10%; width: 80%; font-size: 4.2cqw; }
	.fcon-screen .nsu-view[data-phase="restart"] .nsu-dialog { inset: 0; width: 100%; height: 100%; }
	.fcon-screen .nsu-view[data-phase="restart"] .nsu-spinner { top: calc(50% - 4cqw); width: 8cqw; height: 8cqw; }
}
@media (prefers-reduced-motion: reduce) { .nsu-spinner { animation-duration: 3s; } }
