/* Canonical MaditSpirit Nutrition live code scanner - fullscreen mobile surface. */
.msai-nscan{
	--nscan-ink:#0d1f17;
	--nscan-green:#287a58;
	--nscan-green-bright:#33c98a;
	--nscan-warn:#f2b544;
	position:fixed;
	inset:0;
	z-index:2147483000;
	display:flex;
	flex-direction:column;
	background:#05100b;
	color:#fff;
	overscroll-behavior:contain;
	touch-action:none;
	-webkit-tap-highlight-color:transparent;
}
.msai-nscan *{box-sizing:border-box;}
/* The active theme's reset stylesheet declares `button{display:inline-block}`
   at a specificity that, on some cascades, ends up applied after (and can
   visually beat) the UA `[hidden]{display:none}` rule for a <button>. Pin it
   explicitly so a hidden torch/switch/reticle element inside the scanner is
   never shown regardless of theme/global button resets loaded elsewhere. */
.msai-nscan [hidden]{display:none!important;}
body.msai-nscan-open{overflow:hidden;}

.msai-nscan__stage{
	position:absolute;
	inset:0;
	overflow:hidden;
	background:#05100b;
}
.msai-nscan__video{
	position:absolute;
	inset:0;
	width:100%;
	height:100%;
	object-fit:cover;
	background:#05100b;
	pointer-events:none;
}
.msai-nscan__stage{pointer-events:none;}
.msai-nscan__scrim{
	position:absolute;
	inset:0;
	background:radial-gradient(circle at 50% 42%, rgba(5,16,11,0) 0%, rgba(5,16,11,.35) 55%, rgba(5,16,11,.82) 100%);
	pointer-events:none;
}
.msai-nscan[data-nscan-state="intro"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="requesting"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="denied"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="no-camera"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="busy"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="insecure"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="error"] .msai-nscan__scrim,
.msai-nscan[data-nscan-state="desktop"] .msai-nscan__scrim{background:rgba(5,16,11,.94);}

/* Scan reticle */
.msai-nscan__reticle{
	position:absolute;
	top:42%;
	left:50%;
	width:min(74vw,300px);
	height:min(74vw,300px);
	transform:translate(-50%,-50%);
	pointer-events:none;
}
.msai-nscan__reticle span{
	position:absolute;
	width:34px;
	height:34px;
	border:3px solid var(--nscan-green-bright);
	border-radius:4px;
}
.msai-nscan__reticle span:nth-child(1){top:0;left:0;border-right:0;border-bottom:0;border-top-left-radius:16px;}
.msai-nscan__reticle span:nth-child(2){top:0;right:0;border-left:0;border-bottom:0;border-top-right-radius:16px;}
.msai-nscan__reticle span:nth-child(3){bottom:0;left:0;border-right:0;border-top:0;border-bottom-left-radius:16px;}
.msai-nscan__reticle span:nth-child(4){bottom:0;right:0;border-left:0;border-top:0;border-bottom-right-radius:16px;}
@media (prefers-reduced-motion:no-preference){
	.msai-nscan[data-nscan-state="live"] .msai-nscan__reticle::after{
		content:"";
		position:absolute;
		left:6%;
		right:6%;
		height:2px;
		background:linear-gradient(90deg,transparent,var(--nscan-green-bright),transparent);
		box-shadow:0 0 12px 1px rgba(51,201,138,.6);
		animation:msai-nscan-sweep 2.4s ease-in-out infinite;
	}
}
@keyframes msai-nscan-sweep{0%,100%{top:10%;}50%{top:88%;}}

/* Top bar */
.msai-nscan__bar{
	position:relative;
	z-index:3;
	display:flex;
	align-items:flex-start;
	justify-content:space-between;
	gap:12px;
	padding:calc(env(safe-area-inset-top,0px) + 14px) calc(env(safe-area-inset-right,0px) + 16px) 14px calc(env(safe-area-inset-left,0px) + 16px);
}
.msai-nscan__close{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:44px;
	height:44px;
	padding:0;
	border:0;
	border-radius:999px;
	background:rgba(8,20,14,.55);
	backdrop-filter:blur(6px);
	color:#fff;
	cursor:pointer;
}
.msai-nscan__close svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;}
.msai-nscan__tools{display:flex;gap:8px;}
.msai-nscan__tool{
	min-height:44px;
	padding:0 16px;
	border:0;
	border-radius:999px;
	background:rgba(8,20,14,.55);
	backdrop-filter:blur(6px);
	color:#fff;
	font:inherit;
	font-size:13px;
	font-weight:700;
	cursor:pointer;
}
.msai-nscan__tool.is-on{background:var(--nscan-green-bright);color:#05100b;}

/* Bottom panel (hint / state cards) */
.msai-nscan__panel{
	position:relative;
	z-index:3;
	margin-top:auto;
	padding:20px calc(env(safe-area-inset-right,0px) + 18px) calc(env(safe-area-inset-bottom,0px) + 24px) calc(env(safe-area-inset-left,0px) + 18px);
	display:flex;
	flex-direction:column;
	align-items:center;
	gap:14px;
	text-align:center;
}
.msai-nscan__hint{
	margin:0;
	padding:10px 18px;
	border-radius:999px;
	background:rgba(8,20,14,.6);
	backdrop-filter:blur(6px);
	font-size:14px;
	font-weight:600;
	letter-spacing:.01em;
}
.msai-nscan__hint--warn{background:rgba(242,181,68,.22);color:var(--nscan-warn);}

.msai-nscan__card{
	width:min(440px,100%);
	padding:24px 22px;
	border-radius:22px;
	background:#fff;
	color:var(--nscan-ink);
	box-shadow:0 24px 60px -24px rgba(0,0,0,.6);
}
.msai-nscan__card h2{margin:0 0 8px;font-size:19px;font-weight:800;letter-spacing:-.01em;}
.msai-nscan__card p{margin:0 0 4px;font-size:14px;line-height:1.55;color:#3a4a41;}
.msai-nscan__card p + p{margin-top:8px;}
.msai-nscan__fine{font-size:12.5px !important;color:#61726a !important;}

.msai-nscan__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;}
.msai-nscan__btn{
	min-height:46px;
	padding:0 20px;
	border:1px solid var(--nscan-green);
	border-radius:14px;
	background:#fff;
	color:var(--nscan-green);
	font:inherit;
	font-size:14px;
	font-weight:700;
	cursor:pointer;
}
.msai-nscan__btn.is-primary{background:var(--nscan-green);color:#fff;}
.msai-nscan__btn.is-primary:hover{background:#1f6247;}
.msai-nscan__btn:not(.is-primary):hover{background:var(--nscan-green);color:#fff;}

.msai-nscan__spinner{
	width:34px;
	height:34px;
	margin:0 auto 12px;
	border-radius:999px;
	border:3px solid rgba(40,122,88,.25);
	border-top-color:var(--nscan-green);
	animation:msai-nscan-spin .8s linear infinite;
}
.msai-nscan[data-nscan-state="requesting"] .msai-nscan__spinner{border-color:rgba(255,255,255,.25);border-top-color:#fff;}
@keyframes msai-nscan-spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){.msai-nscan__spinner{animation-duration:1.6s;}}

/* Requesting card is on the dark scrim, not white */
.msai-nscan[data-nscan-state="requesting"] .msai-nscan__card{background:transparent;box-shadow:none;color:#fff;}
.msai-nscan[data-nscan-state="requesting"] .msai-nscan__card p{color:rgba(255,255,255,.85);}

/* Desktop / mobile-only state */
.msai-nscan__card--desktop{padding-top:28px;}
.msai-nscan__phone{
	width:56px;
	height:92px;
	margin:0 auto 14px;
	border:3px solid var(--nscan-green);
	border-radius:14px;
	position:relative;
}
.msai-nscan__phone span{
	position:absolute;
	left:50%;
	bottom:8px;
	width:16px;
	height:4px;
	border-radius:2px;
	background:var(--nscan-green);
	transform:translateX(-50%);
}

@media (min-width:560px){
	.msai-nscan__panel{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 36px);}
}
