/*

License: GPLv2
	<http://www.gnu.org/licenses/gpl-2.0.html>

*/

@import url(./battle-log.css?v15.1);

.battle {
	position: absolute;
	text-align: left;
	top: 9px;
	left: -1px;
	border: 1px solid #AAAAAA;
	background: #CFD5DA;
	color: black;
	width: 640px;
	height: 360px;
	overflow: hidden;

	font-family: 'Pretendard', Verdana, sans-serif;
	font-size: 10pt;
}
.backdrop {
	width: 700px;
	height: 500px;
	position: absolute;
	top: -90px;
	left: -50px;
	background: transparent url(../fx/bg-beach.png) no-repeat scroll left top;
	opacity: 0.8;
}
.battle a {
	color: #2277FF;
}
.battle a:hover {
	color: #1155AA;
}
.innerbattle {
	position: relative;
	width: 640px;
	height: 360px;
}
.battle-log-add {
	position: absolute;
	text-align: left;
	border: 1px solid #AAAAAA;
	background: #EEF2F5;
	color: black;
	top: 369px;
	left: 640px;
	right: -1px;

	font-family: 'Pretendard', Verdana, sans-serif;
	font-size: 10pt;
}
.battle-log {
	position: absolute;
	text-align: left;
	border: 1px solid #AAAAAA;
	background: #EEF2F5;
	color: black;
	top: 9px;
	left: 640px;
	right: -1px;
	height: 360px;

	font-family: 'Pretendard', Verdana, sans-serif;
	font-size: 10pt;

	overflow: auto;
	overflow-y: scroll;
	-webkit-overflow-scrolling: touch;
	word-wrap: break-word;
}
.dark .battle, .dark .battle-log, .dark .battle-log-add {
	border-color: #5A5A5A;
}
.battle-log-inline {
	position: static;
	top: auto;
	right: auto;
	bottom: auto;
	left: auto;
	height: auto;
	width: auto;
	overflow-y: auto;
}
.battle-log .inner {
	padding: 4px 8px 0px 8px;
}
.battle-log .inner-preempt {
	padding: 0 8px 4px 8px;
}
.battle-log .inner-after {
	margin-top: 0.5em;
}

.playbutton {
	position: absolute;
	display: block;
	top: 160px;
	left: 120px;
	right: 120px;
	text-align: center;
}
.playbutton1, .playbutton2 {
	position: absolute;
	display: block;
	top: 190px;
	left: 100px;
	z-index: 100;
}
.playbutton2 {
	top: 130px;
	left: 300px;
}
.playbutton button,
.playbutton1 button,
.playbutton2 button {
	font-size: 16pt;
}

.background {
	position: absolute;
	display: none;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
}

.statbar {
	position: absolute;
	display: none;
	width: 154px;
	min-height: 40px;
	padding: 2px 4px;
}
.statbar strong {
	margin: 0 -15px;
	display: block;
	text-align: center;
	color: #222222;
	text-shadow: #FFFFFF 1px 1px 0, #FFFFFF 1px -1px 0, #FFFFFF -1px 1px 0, #FFFFFF -1px -1px 0;
}
.statbar strong small {
	font-weight: normal;
}
.statbar .hpbar {
	position: relative;
	border: 1px solid #777777;
	background: #FCFEFF;
	padding: 1px;
	height: 8px;
	margin: 0 0 0 0;
	width: 151px;
	border-radius: 4px;
}

/* The declaration order of these hp* classes is significant. */

.statbar .hpbar .hp {
	height: 4px;
	border-top: 2px solid #00dd60;
	background: #00bb51;
	border-bottom: 2px solid #007734;
	border-right: 1px solid #007734;
	border-radius: 3px;
}
.statbar .hpbar .hp-yellow {
	border-top-color: #f8e379;
	background-color: #f5d538;
	border-bottom-color: #be9f0a;
	border-right-color: #be9f0a;
}
.statbar .hpbar .hp-red {
	border-top-color: #f37f67;
	background-color: #ee4928;
	border-bottom-color: #a3260d;
	border-right-color: #a3260d;
}

/* The declaration order of these prevhp* classes is significant. */

.statbar .hpbar .prevhp {
	background: #BBEECC;
	height: 8px;
	border-radius: 3px;
}
.statbar .hpbar .prevhp-yellow {
	background-color: #fcf4ca;
}
.statbar .hpbar .prevhp-red {
	background-color: #facec5;
}

/****************/

.statbar .hpbar .hptext {
	position: absolute;
	background: #777777;
	color: #EEEEEE;
	text-shadow: #000000 0 1px 0;
	font-size: 9px;
	width: 32px;
	height: 12px;
	top: -1px;
	text-align: center;
}
.statbar .hpbar .hptextborder {
	position: absolute;
	background: transparent;
	border-top: 1px solid #777777;
	border-bottom: 1px solid #777777;
	width: 4px;
	top: -1px;
	height: 10px;
}
.rstatbar .hpbar .hptext {
	right: -32px;
	border-radius: 0 4px 4px 0;
}
.lstatbar .hpbar .hptext {
	left: -32px;
	border-radius: 4px 0 0 4px;
}
.rstatbar .hpbar .hptextborder {
	right: -3px;
}
.lstatbar .hpbar .hptextborder {
	left: -3px;
}
.statbar .status {
	min-height: 10px;
	font-size: 7pt;
}
.statbar .status img {
	vertical-align: top;
	top: -2px;
	position: relative;
}
.statbar span {
	padding: 0px 1px;
	border: 1px solid #FF4400;
	border-radius: 3px;
}
.statbar span.brn,
.statbar span.psn,
.statbar span.slp,
.statbar span.par,
.statbar span.frz {
	padding: 1px 2px;
	border: 0;
	border-radius: 3px;
}
.statbar span.brn {
	background: #EE5533;
	color: #FFFFFF;
}
.statbar span.psn {
	background: #A4009A;
	color: #FFFFFF;
}
.statbar span.par {
	background: #9AA400;
	color: #FFFFFF;
}
.statbar span.slp {
	background: #AA77AA;
	color: #FFFFFF;
}
.statbar span.frz {
	background: #009AA4;
	color: #FFFFFF;
}
.statbar span.bad {
	background: #FFE5E0;
	color: #FF4400;
	border-color: #FF4400;
}
.statbar span.good {
	background: #E5FFE0;
	color: #33AA00;
	border-color: #33AA00;
}
.statbar span.neutral {
	background: #F0F0F0;
	color: #555555;
	border-color: #555555;
}
.leftbar {
	position: absolute;
	top: 0;
	left: 0;
	height: 450px;
	width: 100px;
	background-color: #CCCCCC;
	background-color: rgba(255,255,255,0.5);
	border-right: 1px solid rgba(215,215,215,0.5);
	color: #777777;
}
.rightbar {
	position: absolute;
	top: 0;
	right: 0;
	height: 450px;
	width: 100px;
	background-color: #CCCCCC;
	background-color: rgba(255,255,255,0.5);
	border-left: 1px solid rgba(215,215,215,0.5);
	color: #777777;
}
.trainer {
	text-align: center;
	position: absolute;
	left: 0;
	right: 0;
	bottom: 75px;
}

.trainer-near {
	bottom: 75px;
}
.trainer-far {
	bottom: 232px;
}
.trainer-near2 {
	bottom: 232px;
}
.trainer-far2 {
	bottom: 75px;
}

.trainer strong {
	display: block;
	font-size: 8pt;
	margin-bottom: 2px;
	word-wrap: break-word;
}
.trainer div {
	width: 86px;
	height: 90px;
	opacity: .8;
	margin: 0 auto;
	background: transparent none no-repeat scroll center top;
}
.trainer div.teamicons {
	width: 100px;
	height: 30px;
	margin: 0 0 0 2px;
}
.teamicons span {
	float: left;
}
.leftbar .trainer div.trainersprite:not(.noflip),
.leftbar .teamicons span {
	-moz-transform: scaleX(-1);
	-webkit-transform: scaleX(-1);
	-o-transform: scaleX(-1);
	-ms-transform: scaleX(-1);
	transform: scaleX(-1);
}
.trainersprite {
	max-width: 80px;
	max-height: 80px;
}
.turn {
	position: absolute;
	display: block;
	top: 10px;
	left: 110px;
	font-size: 13pt;
	font-weight: bold;
	margin: 0;
	padding: 2px 8px;
	border: 2px solid #332200;
	border-radius: 6px;
	color: #332200;
	background: #FCFAF2;
}
.messagebar {
	position: absolute;
	display: none;
	bottom: 10px;
	left: 110px;
	right: 110px;
	color: #CCCCCC;
	background: #222222;
	background: rgba(0,0,0,0.75);
	border-radius: 6px;
	padding: 4px 6px 0 6px;
	overflow: hidden;
}
.messagebar strong {
	color: #ffffff;
	font-size: 12pt;
}
.messagebar small {
	font-size: 8pt;
}
.messagebar p {
	display: none;
	margin: 0;
	padding: 0;
}
.weather {
	position: absolute;
	display: block;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	text-shadow: #FFFFFF 1px 1px 0, #FFFFFF 1px -1px 0, #FFFFFF -1px 1px 0, #FFFFFF -1px -1px 0;
	color: black;
}
.weather em {
	display: block;
	margin: 24px 0 0 115px;
	font-size: 12pt;
}
.weather em small {
	font-style: normal;
}
.sunweather,
.sunnydayweather,
.desolatelandweather {
	background: #FFEEBB url(../fx/weather-sunnyday.jpg) no-repeat scroll left top;
	color: #664411;
}
.rainweather,
.raindanceweather,
.primordialseaweather {
	background: #99BBFF url(../fx/weather-raindance.jpg) no-repeat scroll left top;
	color: #0044BB;
}
.sandstormweather {
	background: #E6E0AC url(../fx/weather-sandstorm.png) no-repeat scroll left top;
	color: #554433;
}
.snowscapeweather,
.hailweather {
	background: #AADDEE url(../fx/weather-hail.png) no-repeat scroll left top;
	color: #114455;
}
.deltastreamweather {
	background: #AAAAAA url(../fx/weather-strongwind.png) no-repeat scroll left top;
	color: #666666;
}
.mistyterrainweather {
	background: #EEAACC url(../fx/weather-mistyterrain.png) no-repeat scroll left top;
	color: #551144;
}
.electricterrainweather {
	background: #EEEEAA url(../fx/weather-electricterrain.png) no-repeat scroll left top;
	color: #444411;
}
.grassyterrainweather {
	background: #CCEEAA url(../fx/weather-grassyterrain.png) no-repeat scroll left top;
	color: #335511;
}
.psychicterrainweather {
	background: #CCAAEE url(../fx/weather-psychicterrain.png) no-repeat scroll left top;
	color: #441155;
}
.gravityweather {
	background: #DDAAEE url(../fx/weather-gravity.png) no-repeat scroll left top;
	color: #661155;
}
.magicroomweather {
	background: #DDAAEE url(../fx/weather-magicroom.png) no-repeat scroll left top;
	color: #661155;
}
.trickroomweather {
	background: #DDAAEE url(../fx/weather-trickroom.png) no-repeat scroll left top;
	color: #661155;
}
.wonderroomweather {
	background: #DDAAEE url(../fx/weather-wonderroom.png) no-repeat scroll left top;
	color: #661155;
}

.battle .result {
	display: none;
	position: absolute;
	width: 150px;
	text-align: center;
}
.battle .result strong {
	font-weight: bold;
	padding: 1px 3px;
	border-radius: 3px;
}
.battle .badresult strong {
	color: #FFFFFF;
	background: #CC0000;
}
.battle .goodresult strong {
	color: #FFFFFF;
	background: #00CC00;
}
.battle .neutralresult strong {
	color: #FFFFFF;
	background: #999999;
}
.battle .brnresult strong {
	color: #FFFFFF;
	background: #EE5533;
}
.battle .psnresult strong {
	color: #FFFFFF;
	background: #A4009A;
}
.battle .slpresult strong {
	color: #FFFFFF;
	background: #AA77AA;
}
.battle .parresult strong {
	color: #FFFFFF;
	background: #9AA400;
}
.battle .frzresult strong {
	color: #FFFFFF;
	background: #009AA4;
}
.battle .abilityresult strong {
	color: #FFFFFF;
	background: #0088AA;
	border-radius: 0;
	padding: 2px 6px;
}
.sidecondition-auroraveil {
	background: linear-gradient(180deg, #b6faff 0%, #43a8cc 100%);
	border: 2px solid #ccffff;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.85), 0 0 10px rgba(90,225,255,.7);
	display: none;
	position: absolute;
}
/* cherish-world fork: 스크린 6종 — 단색 사각형을 유리 방벽으로 (patch-screen-css.py).
   opacity 0.3 이 인라인으로 강제되므로 색을 진하게 잡는다.
   protect 는 원본이 safeguard 와 같은 분홍이라 구분이 안 돼 초록으로 바꿨다. */
.sidecondition-reflect {
	background: linear-gradient(180deg, #f4f8ff 0%, #b9cbe8 100%);
	border: 2px solid #ffffff;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.85), 0 0 10px rgba(200,225,255,.7);
	display: none;
	position: absolute;
}
.sidecondition-lightscreen {
	background: linear-gradient(180deg, #fff59a 0%, #cca617 100%);
	border: 2px solid #fff7a0;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.85), 0 0 10px rgba(255,220,60,.7);
	display: none;
	position: absolute;
}
.sidecondition-safeguard {
	background: linear-gradient(180deg, #ffcaf2 0%, #b45cad 100%);
	border: 2px solid #ffd6f5;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.85), 0 0 10px rgba(245,120,215,.7);
	display: none;
	position: absolute;
}
.sidecondition-mist {
	background: linear-gradient(180deg, #c2dcff 0%, #4b74c8 100%);
	border: 2px solid #cfe4ff;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.85), 0 0 10px rgba(120,170,255,.7);
	display: none;
	position: absolute;
}
.turnstatus-protect {
	background: linear-gradient(180deg, #b8ffd6 0%, #23a25c 100%);
	border: 2px solid #d2ffe2;
	box-shadow: inset 0 2px 0 rgba(255,255,255,.85), 0 0 10px rgba(60,235,140,.7);
	display: none;
	position: absolute;
}
.seeking {
	display: block;
	position: absolute;
	top: 0; left: 0; bottom: 0; right: 0;
	background: #CCCCCC;
	color: #000000;
	font-size: 14px;
}
.seeking strong {
	display: block;
	text-align: center;
	padding-top: 180px;
}

#sm2-container {
	position: relative;
}

.swf_timedout#sm2-container embed,
.swf_timedout#sm2-container object,
.swf_timedout#sm2-container audio,
.movieContainer#sm2-container embed,
.movieContainer#sm2-container object,
.movieContainer#sm2-container audio {
	position: absolute;
	height: 27px;
	width: 66px;
	top: -1px;
	left: -1px;
}
.swf_timedout#sm2-container .inner,
.movieContainer#sm2-container .inner {
	visibility: hidden;
}
#sm2-container embed,
#sm2-container object,
#sm2-container audio,
.swf_loaded#sm2-container embed,
.swf_loaded#sm2-container object,
.swf_loaded#sm2-container audio {
	position: absolute;
	height: 27px;
	width: 27px;
	top: -1px;
	left: -87px;
}
#sm2-container .inner,
.swf_loaded#sm2-container .inner {
	visibility: visible;
}

.chooser {
	float: right;
	border: 1px solid #AAAAAA;
	background: #EEF2F5;
	padding: 0 0 0 0;
	height: 25px;
	font-size: 9pt;
	margin: 0 5px 0 0;
}
.leftchooser {
	float: left;
}
.chooser em {
	float: left;
	padding: 5px 6px 0 6px;
	height: 20px;
	border-right: 1px solid #CCCCCC;
	background: #EEEEEE;
	font-weight: normal;
}
.chooser div {
	float: left;
	padding: 3px 2px 0 2px;
}
.chooser button {
	border: 0;
	background: transparent;
	padding: 2px 4px;
	font-size: 9pt;
	font-family: 'Pretendard', Verdana, sans-serif;
	border-radius: 3px;
	cursor: pointer;
}
.chooser button:hover {
	border: 1px solid #BBBBBB;
	padding: 1px 3px;
	background: #EEEEEE;
}
.chooser button.sel,
.chooser button.sel:hover {
	border: 1px solid #999999;
	padding: 1px 3px;
	background: #DDDDDD;
}


/* .dark .battle {
	background: #222222;
	color: #CCCCCC;
}
.dark .statbar strong {
	color: #AAAAAA;
}
.dark .statbar .hpbar {
	background: #222222;
}
.dark .statbar .hpbar .prevhp {
	background: #446755;
}
.dark .leftbar,
.dark .rightbar {
	background: rgba(0,0,0,0.5);
	color: #CCCCCC;
}
.dark .messagebar {
	background: #444444;
	background: rgba(60,60,60,0.80);
	color: #CCCCCC;
} */
.dark .battle-log {
	background: #333333;
	color: #CCCCCC;
}
.dark .chooser {
	background: #666666;
	color: #CCCCCC;
}
.dark .chooser em {
	background: #777777;
	color: #CCCCCC;
}
.dark .chooser button {
	color: #CCCCCC;
}
.dark .chooser button:hover {
	border: 1px solid #BBBBBB;
	padding: 1px 3px;
	background: #777777;
	color: #EEEEEE;
}
.dark .chooser button.sel,
.dark .chooser button.sel:hover {
	border: 1px solid #CCCCCC;
	padding: 1px 3px;
	background: #999999;
	color: #F3F3F3;
}

.itemicon {
	display: inline-block;
	vertical-align: middle;
	width: 24px;
	height: 24px;
}
.picon {
	display: inline-block;
	vertical-align: middle;
	width: 40px;
	height: 30px;
}
.trainer .picon {
	margin: 0 -4px;
}
.pixelated, .itemicon, .picon, .trainersprite {
	image-rendering: -moz-crisp-edges;
	image-rendering: pixelated;
	-ms-interpolation-mode: nearest-neighbor;
}
@media (-webkit-min-device-pixel-ratio: 1.05), (min-resolution: 1.05dppx) {
	.pixelated, .itemicon, .picon, .trainersprite {
		image-rendering: auto;
	}
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
	.pixelated, .itemicon, .picon, .trainersprite {
		image-rendering: pixelated;
	}
}

.effectiveness-icon {
	font-family: monospace;
	font-size: 13px;
	letter-spacing: 1px;
}

/*********************************************************
 * Tooltips
 *********************************************************/

#tooltipwrapper {
	position: absolute;
	top: 400px;
	left: 100px;
	text-align: left;
	color: black;
	pointer-events: none;
}
#tooltipwrapper .tooltipinner {
	position: relative;
}
#tooltipwrapper .tooltip {
	position: absolute;
	bottom: 0;
	left: 0;
	width: 300px;
	border: 1px solid #888888;
	background: #EEEEEE;
	background: rgba(240,240,240,.9);
	border-radius: 5px;
	z-index: 50;
}
#tooltipwrapper .tooltip h2 {
	padding: 2px 4px;
	margin: 0;
	border-bottom: 1px solid #888888;
	font-size: 10pt;
	color: black;
}
#tooltipwrapper .tooltip h2 small {
	font-weight: normal;
}
#tooltipwrapper .tooltip p {
	padding: 2px 4px;
	margin: 0;
	font-size: 9pt;
}
#tooltipwrapper .tooltip p small {
	font-size: 8pt;
}
#tooltipwrapper .tooltip p.tooltip-section {
	border-top: 1px solid #888888;
}
#tooltipwrapper .tooltip .textaligned-typeicons img {
	vertical-align: text-bottom;
}
#tooltipwrapper.tooltip-locked {
	pointer-events: auto;
}
#tooltipwrapper.tooltip-locked .tooltip {
	border: 2px solid #444444;
	background: #DEDEDE;
}
#tooltipwrapper .tooltip-locking .tooltip {
	position: absolute;
	box-sizing: border-box;
}

.tooltip-locking-click .tooltip::before, .tooltip-locking-click .tooltip::after,
.tooltip-locking-tap .tooltip::before, .tooltip-locking-tap .tooltip::after {
	content: "";
	position: absolute;
	border: 2px solid transparent;
	box-sizing: border-box;
	border-radius: 5px;
	animation-duration: 500ms;
	animation-fill-mode: forwards;
	animation-delay: 75ms;
}

.tooltip-locking-click .tooltip::after, .tooltip-locking-click .tooltip::before {
	animation-duration: 700ms;
}

.tooltip-locking-click .tooltip::after, .tooltip-locking-tap .tooltip::after {
	bottom: -2px;
	left: -2px;
	animation-name: tooltip-locking-top-left;
}

.tooltip-locking-click .tooltip::before, .tooltip-locking-tap .tooltip::before {
	top: -2px;
	right: -2px;
	animation-name: tooltip-locking-bottom-right;
}

@keyframes tooltip-locking-top-left {
	0% {
		width: 0;
		height: 0;
		border-left: 2px solid #444444;
	}
	25% {
		width: 0;
		height: calc(100% + 4px);
		border-left: 2px solid #444444;
		border-top: 2px solid #444444;
	}
	50% {
		width: calc(100% + 4px);
		height: calc(100% + 4px);
		border-left: 2px solid #444444;
		border-top: 2px solid #444444;
	}
	
	100% {
		width: calc(100% + 4px);
		height: calc(100% + 4px);
		border-left: 2px solid #444444;
		border-top: 2px solid #444444;
	}
}

@keyframes tooltip-locking-bottom-right {
	0% {
		width: 0;
		height: 0;
		opacity: 0;
	}
	
	50% {
		width: 0;
		height: 0;
		border: 0;
		border-right: 2px solid #444444;
		opacity: 0;
	}
	50.1% {
		opacity: 1;
	}
	75% {
		width: 0;
		height: calc(100% + 4px);
		border: 2px solid transparent;
		border-right: 2px solid #444444;
		border-bottom: 2px solid #444444;
	}
	
	100% {
		height: calc(100% + 4px);
		width: calc(100% + 4px);
		border-right: 2px solid #444444;
		border-bottom: 2px solid #444444;
	}
}

/* cherish-bgm-title:begin (patch-bgm-title.py) */
/* 배틀 시작 곡명 토스트. 턴 표시(top:10 left:110)와 좌우 대칭이라 새 UI 처럼 튀지 않는다.
   .battle 은 overflow:hidden 이므로 right:110px(사이드바 100px + 10) 안쪽에 둔다. */
.cherish-bgmtitle {
	position: absolute;
	top: 10px;
	right: 110px;
	max-width: 360px;
	padding: 5px 12px;
	border-radius: 17px;
	background: rgba(0, 0, 0, 0.66);
	color: #F2F2F2;
	font-size: 10.8pt;
	font-weight: bold;
	letter-spacing: 0.2px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	pointer-events: none;
	z-index: 5;
	animation: cherish-bgmtitle-in 420ms ease-out;
	transition: opacity 1s ease-in, transform 1s ease-in;
}
.cherish-bgmtitle .cherish-bgmnote {
	color: #9FD5FF;
	margin-right: 4px;
}
.cherish-bgmtitle-out {
	opacity: 0;
	transform: translateY(-6px);
}
@keyframes cherish-bgmtitle-in {
	from { opacity: 0; transform: translateY(-6px); }
	to { opacity: 1; transform: translateY(0); }
}
/* 음량 팝업의 배경음악 슬라이더 아래 곡명 */
.cherish-bgmnow {
	margin: -6px 0 10px;
	font-size: 9pt;
	line-height: 1.35;
}
.cherish-bgmnow small {
	color: #888888;
}
.cherish-bgmnow .cherish-bgmnote {
	color: #3A7BBF;
}
.dark .cherish-bgmnow small {
	color: #AAAAAA;
}
.dark .cherish-bgmnow .cherish-bgmnote {
	color: #9FD5FF;
}
/* cherish-bgm-title:end */

/* cherish-timer-hud:begin (patch-battle-timer-hud.py) */
/* 배틀 필드 안 남은 시간. 「N턴」 표시(top:10 left:110, 높이 ~29px) 바로 아래.
   오른쪽 위는 곡명 토스트(30초)가 쓰므로 왼쪽에 둔다. 곡명 토스트와 같은 검은 알약. */
.cherish-timerhud {
	position: absolute;
	top: 44px;
	left: 110px;
	padding: 4px 11px;
	border-radius: 15px;
	background: rgba(0, 0, 0, 0.66);
	color: #F2F2F2;
	font-size: 10.8pt;
	font-weight: bold;
	letter-spacing: 0.2px;
	white-space: nowrap;
	pointer-events: none;
	z-index: 5;
	opacity: 0.55;
	transition: opacity 0.3s ease, background-color 0.3s ease;
}
.cherish-timerhud .fa {
	color: #9FD5FF;
	margin-right: 2px;
}
.cherish-timerhud small {
	margin-left: 5px;
	font-size: 8.5pt;
	font-weight: normal;
	opacity: 0.8;
}
.cherish-timerhud small:empty {
	display: none;
}
/* 내 차례에 카운트다운 중 */
.cherish-timerhud-on {
	opacity: 1;
}
/* 10초 이하 — 조작부 버튼(.timerbutton-critical)과 같은 빨강 */
.cherish-timerhud-critical {
	opacity: 1;
	background: rgba(187, 34, 34, 0.92);
	animation: cherish-timerhud-pulse 1s ease-in-out infinite;
}
.cherish-timerhud-critical .fa {
	color: #FFFFFF;
}
@keyframes cherish-timerhud-pulse {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.07); }
}
/* cherish-timer-hud:end */

/* cherish-school-coach:begin (patch-school-coach.py) */
/* 수업 카드 · 성적표 — 필드 전체를 덮는 모달 (조작부는 안 가린다) */
.cherish-school-card, .cherish-school-report {
	position: absolute;
	left: 0; top: 0; right: 0; bottom: 0;
	z-index: 40;
	background: rgba(12, 16, 28, 0.62);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 10px;
	box-sizing: border-box;
}
.cherish-school-inner {
	background: #FFFDF7;
	color: #2B2B2B;
	border-radius: 14px;
	padding: 14px 18px 14px;
	max-width: 580px; /* 2026-09-06: 540 → 580 (필드 640 안, 줄바꿈 자체를 줄인다) */
	width: 100%;
	max-height: 100%;
	overflow: auto;
	box-sizing: border-box;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
	font-size: 10.5pt;
	line-height: 1.5;
	text-align: left;
	word-break: keep-all;
}
.cherish-school-inner h3 {
	margin: 0 0 8px;
	font-size: 13pt;
	color: #C0392B;
	line-height: 1.35;
}
.cherish-school-tag {
	font-size: 9pt;
	font-weight: bold;
	color: #C0392B;
	margin-bottom: 4px;
}
.cherish-school-subtitle { margin: -4px 0 10px; font-size: 11pt; font-weight: 700; color: #444; }
.cherish-school-concept { margin: 4px 0; }
/* 2026-09-06 사용자 지적 「줄바꿈이 안 예쁘다, 그렇다고 줄을 띄우면 버튼이 내려가 스크롤」 — 줄 수는 그대로 두고
   각 줄 길이만 고르게 나눠 「수도 있어」 같은 외톨이 줄을 없앤다. 미지원 브라우저는 무시(폴백 = 지금 모양). */
.cherish-school-subtitle, .cherish-school-concept, .cherish-school-todo, .cherish-school-note, .cherish-school-lines p { text-wrap: balance; }
.cherish-school-todo {
	margin: 8px 0 4px;
	padding: 8px 10px;
	background: #FFF1F2;
	border-left: 4px solid #E94B6A;
	border-radius: 6px;
	font-weight: bold;
}
.cherish-school-note { margin: 6px 0 0; color: #666; font-size: 9.5pt; }
.cherish-school-lines p { margin: 5px 0; }
.cherish-school-ok {
	display: block;
	margin: 12px auto 0;
	padding: 8px 24px;
	font-size: 11pt;
}
.cherish-school-pass .cherish-school-inner h3 { color: #1E8E3E; }
.cherish-school-pass .cherish-school-inner { box-shadow: 0 0 0 3px #7ED09A, 0 10px 30px rgba(0, 0, 0, 0.35); }
/* 담임 말풍선 — 필드 아래 가운데, 기술 버튼 바로 위 */
.cherish-coach {
	position: absolute;
	left: 50%;
	bottom: 10px;
	transform: translateX(-50%);
	max-width: 80%;
	display: flex;
	gap: 8px;
	align-items: flex-end;
	z-index: 30;
	pointer-events: none;
	transition: opacity 0.45s ease;
}
.cherish-coach-hide { opacity: 0; }
.cherish-coach-pop { animation: cherish-coach-pop 0.35s ease; }
.cherish-coach-avatar {
	position: relative;
	flex: none;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: #FFE3E8;
	border: 2px solid #E94B6A;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 22px;
	overflow: hidden;
	box-shadow: 0 3px 10px rgba(0, 0, 0, 0.25);
}
.cherish-coach-avatar img {
	position: absolute;
	left: 0; top: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.cherish-coach-body {
	background: rgba(255, 255, 255, 0.97);
	border: 2px solid #E94B6A;
	border-radius: 14px 14px 14px 4px;
	padding: 6px 12px 7px;
	color: #222;
	font-size: 11pt;
	line-height: 1.4;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
	word-break: keep-all;
}
.cherish-coach-name { font-size: 8.5pt; color: #C0392B; font-weight: bold; margin-bottom: 1px; }
/* 담임 베리 — 블루베리 남색 (2026-09-08 복기 코치). 얼굴 그림이 없으면 🫐 이모지가 이 원 안에 남는다. */
.cherish-coach-berry .cherish-coach-avatar { background: #E7E9F7; border-color: #4A5199; }
.cherish-coach-berry .cherish-coach-body { border-color: #4A5199; }
.cherish-coach-berry .cherish-coach-name { color: #3B4180; }
.cherish-coach-lychee .cherish-coach-avatar { background: #F6E8EC; border-color: #B8637A; }
.cherish-coach-lychee .cherish-coach-body { border-color: #B8637A; }
.cherish-coach-lychee .cherish-coach-name { color: #8E4A5C; }
.cherish-coach-peach .cherish-coach-avatar { background: #F7EAE3; border-color: #B5745C; }
.cherish-coach-peach .cherish-coach-body { border-color: #B5745C; }
.cherish-coach-peach .cherish-coach-name { color: #8A5340; }
.cherish-coach-prev { font-size: 9pt; color: #8A8A8A; margin-bottom: 2px; }
.cherish-coach-prev:empty { display: none; }
.cherish-coach-text { font-weight: bold; }
@keyframes cherish-coach-pop {
	0% { transform: translateX(-50%) translateY(8px) scale(0.96); }
	100% { transform: translateX(-50%) translateY(0) scale(1); }
}
/* 졸업시험 승리 → 구름타워 안내 띠 (2026-09-24). 체리 말풍선(아래)과 겹치지 않게 필드 위쪽에 */
.cherish-tower-nudge {
	position: absolute;
	left: 50%;
	top: 44px;
	transform: translateX(-50%);
	width: min(92%, 460px);
	box-sizing: border-box;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 10px 8px 12px;
	border-radius: 12px;
	background: rgba(40, 24, 48, .86);
	color: #fff;
	font-size: 9.5pt;
	line-height: 1.45;
	z-index: 31;
	box-shadow: 0 8px 22px -10px rgba(0, 0, 0, .55);
	animation: cherish-tower-nudge-in .35s ease-out;
}
.cherish-tower-nudge-ic { flex: 0 0 auto; font-size: 15px; color: #f5d0fe; }
.cherish-tower-nudge-t { flex: 1; min-width: 0; word-break: keep-all; }
.cherish-tower-nudge-t b { color: #ffd7e0; }
.cherish-tower-nudge .cherish-tower-nudge-go {
	flex: 0 0 auto;
	margin: 0;
	padding: 7px 12px;
	border: 0;
	border-radius: 10px;
	color: #fff;
	font-weight: bold;
	white-space: nowrap;
	background: linear-gradient(135deg, #fb7185 0%, #e11d48 52%, #be123c 100%);
	box-shadow: 0 8px 18px -10px rgba(225, 29, 72, .8);
	text-shadow: none;
}
@keyframes cherish-tower-nudge-in {
	0% { opacity: 0; transform: translateX(-50%) translateY(-6px); }
	100% { opacity: 1; transform: translateX(-50%) translateY(0); }
}
@media (max-width: 700px) {
	.cherish-tower-nudge { top: 36px; font-size: 9pt; flex-wrap: wrap; }
	.cherish-tower-nudge .cherish-tower-nudge-go { width: 100%; }
	.cherish-school-inner { font-size: 9.5pt; padding: 12px 14px; }
	.cherish-school-inner h3 { font-size: 11.5pt; }
	.cherish-coach { max-width: 92%; bottom: 6px; }
	.cherish-coach-avatar { width: 36px; height: 36px; font-size: 18px; }
	.cherish-coach-body { font-size: 10pt; padding: 5px 10px 6px; }
}
/* cherish-school-coach:end */

/* cherish-hit-fx:begin (patch-hit-fx.py) — 타격 반응 + 이펙트 결
   ⚠️ 이펙트(<img>)에는 transform·filter 만 준다. opacity 는 pos() 가 인라인으로
   애니메이션하므로 CSS 로 건드리면 fade·explode 가 통째로 깨진다. */

/* ── 화면 흔들림 ────────────────────────────────────────────────────────
   .innerbattle 을 통째로 흔든다. 그냥 옮기면 640x360 창 가장자리에 바탕색이
   비치므로 scale 로 살짝 키워 그 틈을 미리 덮는다. */
.innerbattle.cw-shake-1 { animation: cw-shake-1 220ms ease-out; }
.innerbattle.cw-shake-2 { animation: cw-shake-2 300ms ease-out; }
.innerbattle.cw-shake-3 { animation: cw-shake-3 420ms cubic-bezier(.36, .07, .19, .97); }
@keyframes cw-shake-1 {
	0% { transform: scale(1.012) translate(0, 0); }
	30% { transform: scale(1.012) translate(-2px, 1px); }
	60% { transform: scale(1.012) translate(2px, -1px); }
	100% { transform: scale(1.012) translate(0, 0); }
}
@keyframes cw-shake-2 {
	0% { transform: scale(1.02) translate(0, 0); }
	15% { transform: scale(1.02) translate(-4px, 2px); }
	32% { transform: scale(1.02) translate(4px, -2px); }
	50% { transform: scale(1.02) translate(-3px, -2px); }
	68% { transform: scale(1.02) translate(3px, 1px); }
	85% { transform: scale(1.02) translate(-2px, 1px); }
	100% { transform: scale(1.02) translate(0, 0); }
}
@keyframes cw-shake-3 {
	0% { transform: scale(1.032) translate(0, 0) rotate(0deg); }
	10% { transform: scale(1.032) translate(-7px, 4px) rotate(-.35deg); }
	22% { transform: scale(1.032) translate(7px, -4px) rotate(.35deg); }
	35% { transform: scale(1.032) translate(-6px, -3px) rotate(-.25deg); }
	48% { transform: scale(1.032) translate(5px, 3px) rotate(.25deg); }
	62% { transform: scale(1.032) translate(-4px, 2px) rotate(-.15deg); }
	76% { transform: scale(1.032) translate(3px, -1px) rotate(.1deg); }
	88% { transform: scale(1.032) translate(-2px, 1px) rotate(0deg); }
	100% { transform: scale(1.032) translate(0, 0) rotate(0deg); }
}

/* ── 화면 플래시 (포켓몬·상태바 앞) ────────────────────────────────────── */
.battle .cw-flash {
	position: absolute;
	left: 0;
	top: 0;
	width: 640px;
	height: 360px;
	pointer-events: none;
	z-index: 60;
}

/* ── 맞은 포켓몬 ────────────────────────────────────────────────────────
   brightness(0) 로 검은 실루엣을 만든 뒤 invert 로 뒤집으면 어두운 스프라이트도
   확실히 하얘진다. 알파는 그대로 살아 있다. */
.battle .cw-hit-1 { animation: cw-hit-1 200ms steps(1, end); }
.battle .cw-hit-2 { animation: cw-hit-2 300ms steps(1, end); }
.battle .cw-hit-3 { animation: cw-hit-3 380ms steps(1, end); }
.battle .cw-hit-crit { animation-name: cw-hit-crit; animation-duration: 400ms; }
@keyframes cw-hit-1 {
	0%, 30% { filter: brightness(0) invert(1) opacity(.9); }
	31%, 100% { filter: none; }
}
@keyframes cw-hit-2 {
	0%, 22% { filter: brightness(0) invert(1); }
	23%, 48% { filter: none; }
	49%, 66% { filter: brightness(0) invert(1) opacity(.8); }
	67%, 100% { filter: none; }
}
@keyframes cw-hit-3 {
	0%, 18% { filter: brightness(0) invert(1); }
	19%, 36% { filter: none; }
	37%, 52% { filter: brightness(0) invert(1); }
	53%, 70% { filter: none; }
	71%, 84% { filter: brightness(0) invert(1) opacity(.75); }
	85%, 100% { filter: none; }
}
@keyframes cw-hit-crit {
	0%, 16% { filter: brightness(0) invert(1) sepia(1) saturate(9) hue-rotate(-28deg); }
	17%, 32% { filter: none; }
	33%, 46% { filter: brightness(0) invert(1); }
	47%, 62% { filter: none; }
	63%, 76% { filter: brightness(0) invert(1) sepia(1) saturate(7) hue-rotate(-28deg); }
	77%, 100% { filter: none; }
}
/* 쓰러지는 아이는 색을 잃으며 내려간다 */
.battle .cw-faint { filter: grayscale(1) brightness(.6); transition: filter 260ms ease-out; }

/* ── 피해 숫자 팝 ───────────────────────────────────────────────────────
   .result 자체는 위로 떠오르는 애니(top)가 걸려 있으므로 안쪽 strong 을 키운다. */
.battle .result.cw-pop strong {
	display: inline-block;
	animation: cw-pop 320ms cubic-bezier(.18, 1.5, .4, 1);
}
.battle .result.cw-pop-super strong {
	animation: cw-pop-big 380ms cubic-bezier(.18, 1.5, .4, 1);
	font-size: 1.1em;
}
.battle .result.cw-pop-crit strong {
	animation: cw-pop-crit 460ms cubic-bezier(.18, 1.5, .4, 1);
	font-size: 1.18em;
	box-shadow: 0 0 0 2px rgba(255, 226, 130, .85);
}
@keyframes cw-pop {
	0% { transform: scale(.55); }
	55% { transform: scale(1.16); }
	100% { transform: scale(1); }
}
@keyframes cw-pop-big {
	0% { transform: scale(.5); }
	48% { transform: scale(1.34); }
	100% { transform: scale(1); }
}
@keyframes cw-pop-crit {
	0% { transform: scale(.5) rotate(-6deg); }
	40% { transform: scale(1.42) rotate(3deg); }
	58% { transform: scale(1.18) rotate(-3deg); }
	74% { transform: scale(1.3) rotate(2deg); }
	100% { transform: scale(1) rotate(0deg); }
}

/* ── 이펙트의 결 ────────────────────────────────────────────────────────
   pos() 가 left/top/width/height 를 애니메이션하고, 여기서 transform 을 얹는다.
   둘은 서로 간섭하지 않는다. */

/* 방향이 없는 사물은 돈다 */
.battle .cwfx-rock1, .battle .cwfx-rock2, .battle .cwfx-rock3, .battle .cwfx-rocks,
.battle .cwfx-gear, .battle .cwfx-shell, .battle .cwfx-caltrop, .battle .cwfx-poisoncaltrop,
.battle .cwfx-bone {
	animation: cw-spin 1.15s linear infinite;
}
.battle .cwfx-rock2, .battle .cwfx-shell { animation-duration: 1.45s; animation-direction: reverse; }
.battle .cwfx-rock3 { animation-duration: .95s; }
@keyframes cw-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

/* 가벼운 것은 나풀거린다 */
.battle .cwfx-leaf1, .battle .cwfx-leaf2, .battle .cwfx-petal, .battle .cwfx-feather {
	animation: cw-flutter 900ms ease-in-out infinite;
}
.battle .cwfx-leaf2 { animation-duration: 1.1s; animation-delay: -300ms; }
.battle .cwfx-petal { animation-duration: 1.3s; animation-delay: -600ms; }
@keyframes cw-flutter {
	0% { transform: rotate(-14deg) scaleX(1); }
	25% { transform: rotate(6deg) scaleX(.55); }
	50% { transform: rotate(16deg) scaleX(1); }
	75% { transform: rotate(2deg) scaleX(.6); }
	100% { transform: rotate(-14deg) scaleX(1); }
}

/* 구슬은 숨을 쉰다 — width/height 애니와 곱해져 살아 있는 결이 된다 */
.battle .cwfx-wisp, .battle .cwfx-purplewisp, .battle .cwfx-waterwisp, .battle .cwfx-mudwisp,
.battle .cwfx-blackwisp, .battle .cwfx-fireball, .battle .cwfx-bluefireball,
.battle .cwfx-shadowball, .battle .cwfx-energyball, .battle .cwfx-mistball,
.battle .cwfx-iceball, .battle .cwfx-flareball {
	animation: cw-pulse 420ms ease-in-out infinite;
}
.battle .cwfx-fireball, .battle .cwfx-flareball { animation-duration: 300ms; }
.battle .cwfx-shadowball, .battle .cwfx-mistball { animation-duration: 620ms; }
@keyframes cw-pulse {
	0%, 100% { transform: scale(1) rotate(0deg); }
	50% { transform: scale(1.09) rotate(4deg); }
}

/* 전기·섬광은 떤다 */
.battle .cwfx-lightning, .battle .cwfx-electroball, .battle .cwfx-shine {
	animation: cw-flicker 170ms steps(1, end) infinite;
}
@keyframes cw-flicker {
	0% { filter: brightness(1.55) saturate(1.2); }
	30% { filter: brightness(.85); }
	55% { filter: brightness(1.7) saturate(1.3); }
	80% { filter: brightness(1); }
	100% { filter: brightness(1.4); }
}

/* 잔상은 결을 따라오되 스스로 눈에 띄면 안 된다 */
.battle .cwfx-trail { animation-duration: 700ms !important; }

/* 시스템이 「동작 줄이기」면 전부 끈다 */
@media (prefers-reduced-motion: reduce) {
	.innerbattle[class*="cw-shake-"],
	.battle [class*="cwfx-"],
	.battle [class*="cw-hit-"],
	.battle .result.cw-pop strong,
	.battle .result.cw-pop-super strong,
	.battle .result.cw-pop-crit strong {
		animation: none !important;
	}
	.battle .cw-faint { transition: none; }
}
/* cherish-hit-fx:end */

/* cherish-fx2:begin (patch-fx-assemble.py) — 속성 조립 부품
   전부 새로 만드는 요소라 pos() 와 겹치지 않는다. 색·모양은 JS 가 인라인으로 준다. */

/* 마스크 착색 스프라이트 — 모양은 알파로, 색은 배경 그라데이션으로 */
.battle .cw-shape {
	position: absolute;
	display: block;
	-webkit-mask-size: 100% 100%;
	mask-size: 100% 100%;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	pointer-events: none;
}

/* 빔 — 각도는 인라인 transform 으로 고정, jQuery 는 width 만 늘린다 */
.battle .cw-beam {
	position: absolute;
	border-radius: 999px;
	pointer-events: none;
	z-index: 2;
}

/* 퍼지는 고리 */
.battle .cw-ring {
	position: absolute;
	border-style: solid;
	border-radius: 50%;
	box-sizing: border-box;
	pointer-events: none;
	background: transparent;
}

@media (prefers-reduced-motion: reduce) {
	.battle .cw-beam, .battle .cw-ring { box-shadow: none !important; }
}
/* cherish-fx2:end */

/* cherish-fx3:begin (patch-fx-particles.py) — 입자 레이어 */
.battle canvas.cw-parts {
	position: absolute;
	left: 0;
	top: 0;
	pointer-events: none;
	z-index: 55;
}
/* cherish-fx3:end */
