@charset "UTF-8";

:root {
	--content-width: 920px;

	--header-height: 140px;
	--footer-icon-box-height: 96px;
	--loader-margin: 2px;

	--blank-space: 24px;

	--icon-size-extra-large: 96px;
	--icon-size-large: 48px;

	--font-size-extra-large: 64px;
	--font-size-large: 32px;
	--font-size-medium: 28px;
	--font-size-small: 24px;
	--font-size-extra-small: 16px;

	--line-height-large: 1.5;

	--color-black: #333333;
	--color-white: #FFFFFF;
	--color-gray: #999999;
	--color-blue: #3C96FF;
	--color-light-blue: #3CCCFF;
	--color-green: #46C85A;
	--color-yellow: #FFB450;
	--color-red: #FF465A;
	--color-crimson: #FF0000;

	--color-transparent-gray: #99999922;
	--color-transparent-blue: #3C96FF22;
	--color-transparent-light-blue: #3CCCFF22;
	--color-transparent-green: #46C85A22;
	--color-transparent-yellow: #FFB45022;
	--color-transparent-red: #FF465A22;

	--filter-black: invert(15%) sepia(0%) saturate(647%) hue-rotate(180deg) brightness(105%) contrast(88%);
	--filter-white: invert(100%) sepia(0%) saturate(7500%) hue-rotate(104deg) brightness(110%) contrast(100%);
	--filter-gray: invert(67%) sepia(0%) saturate(0%) hue-rotate(320deg) brightness(93%) contrast(82%);
	--filter-blue: invert(44%) sepia(97%) saturate(1291%) hue-rotate(194deg) brightness(102%) contrast(106%);
	--filter-light-blue: invert(64%) sepia(22%) saturate(1304%) hue-rotate(156deg) brightness(103%) contrast(102%);
	--filter-green: invert(71%) sepia(22%) saturate(1261%) hue-rotate(77deg) brightness(89%) contrast(87%);
	--filter-yellow: invert(77%) sepia(94%) saturate(1867%) hue-rotate(320deg) brightness(105%) contrast(106%);
	--filter-red: invert(54%) sepia(49%) saturate(6803%) hue-rotate(327deg) brightness(99%) contrast(104%);

	--punch-border-width: 4px;
	--punch-border-radius: 32px;
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

html {
	font-size: 100%;
	scroll-behavior: smooth;
	scrollbar-width: none;
}

::-webkit-scrollbar {
	display: none;
}

body {
	background: #FFFFFF;
	word-break: break-all;
	user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;
}

button {
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	border: 0;
	background: transparent;
	-webkit-tap-highlight-color: transparent;
}

button:not(.list) > * {
	transition: transform 0.1s ease;
}

button:not(.list):active > * {
	transform: scale(0.9);
}

#punch button:active > span {
	transform: scale(0.96);
}

#navigation button:active > span {
	transform: scale(0.94);
}

select {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	border: 0;
	border-radius: 0;
	background: #FFFFFF;
	font-size: var(--font-size-large);
	font-weight: bold;
	background-image: url(../images/pulldown_large.svg);
	background-position: right 0px center;
	background-repeat: no-repeat;
	width: 80px;
}

select::-ms-expand {
	display: none;
}

select:focus {
	outline: none;
}

input[type="text"] {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	border: 0;
	border-radius: 0;
	background: transparent;
	width: 100%;
	font-size: var(--font-size-medium);
	font-weight: bold;
	padding-left: var(--blank-space);
	padding-right: var(--blank-space);
}

input[type="text"]:focus {
	outline: none;
}

body,
button,
select,
input[type="text"] {
	font-family: "IBM Plex Sans JP", sans-serif;
	color: var(--color-black);
	font-variant-numeric: tabular-nums;
}

body,
button {
	line-height: 1.2;
}

hr {
	height: 2px;
	background: #999999;
	border: none;
}

img {
	vertical-align: bottom;
	-webkit-user-drag: none;
	-moz-user-drag: none;
}

img.extra-large {
	width: var(--icon-size-extra-large);
	height: var(--icon-size-extra-large);
}

img.large {
	width: var(--icon-size-large);
	height: var(--icon-size-large);
}

img.black {
	filter: var(--filter-black);
}

img.white {
	filter: var(--filter-white);
}

img.gray {
	filter: var(--filter-gray);
}

img.blue {
	filter: var(--filter-blue);
}

img.light-blue {
	filter: var(--filter-light-blue);
}

img.green {
	filter: var(--filter-green);
}	

img.yellow {
	filter: var(--filter-yellow);
}

img.red {
	filter: var(--filter-red);
}

span.bold {
	font-weight: bold;
}

span.extra-large {
	font-size: var(--font-size-extra-large);
}

span.large {
	font-size: var(--font-size-large);
}

span.medium {
	font-size: var(--font-size-medium);
}

span.small {
	font-size: var(--font-size-small);
}

span.extra-small {
	font-size: var(--font-size-extra-small);
}

span.white {
	color: var(--color-white);
}

span.gray {
	color: var(--color-gray);
}

span.blue {
	color: var(--color-blue);
}

span.light-blue {
	color: var(--color-light-blue);
}

span.green {
	color: var(--color-green);
}

span.yellow {
	color: var(--color-yellow);
}

span.red {
	color: var(--color-red);
}

span.crimson {
	color: var(--color-crimson);
}

#container {
	display: flex;
	flex-direction: column;
	min-height: 100dvh;
}

.wrapper {
	max-width: var(--content-width);
	margin-inline: auto;
}

#header .wrapper {
	min-height: var(--header-height);
	padding-top: 32px;
}

#header .wrapper > p:first-child {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

#navigation {
	position: sticky;
	top: 0;
	background: #FFFFFFDD;
	backdrop-filter: blur(2px);
	-webkit-backdrop-filter: blur(2px);
	z-index: 1;
}

#navigation .wrapper {
	padding-top: 16px;
	padding-bottom: 16px;
}

#navigation form > button {
	text-align: start;
	padding-right: 32px;
}

#navigation form > button > span {
	display: inline-block;
}

#navigation form > button > span.relative::after {
	content: url(../images/next_large.svg);
	position: absolute;
	top: calc(50% - 17px);
	right: -32px;
}

#navigation form > button > span.red::after {
	filter: var(--filter-red);
}

#navigation form > button > span.green::after {
	filter: var(--filter-green);
}

#navigation #geo-navigation:not(.geo-loading),
#navigation div:not(#geo-navigation).geo-loading {
	display: none;
}

#main {
	flex: 1;
}

#main #login {
	padding-bottom: var(--blank-space);
}

#main #login .input-box > div {
	height: 75px;
	border-bottom: 2px solid var(--color-gray);
	padding-top: 24px;
	padding-bottom: 8px;
	transition: all 0.2s;
}

#main #login .input-box > div:has(input[type="text"]:focus) {
	border-bottom: 4px solid var(--color-blue);
}
/*
#main #login .input-box > div:has(input[type="text"]:focus) > label {
	color: var(--color-blue);
}
*/
#main #login .input-box > div.relative > label.absolute {
	top: 28.5px;
	left: 0px;
	margin-left: var(--blank-space);
	margin-right: var(--blank-space);
	font-weight: bold;
	font-size: var(--font-size-medium);
	transition: all 0.2s;
	color: var(--color-blue);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	width: -webkit-fill-available;
	width: -moz-available;
	width: stretch;
}

#main #login .input-box > div.relative > label.absolute.translate {
	translate: 0 -22px;
	font-size: var(--font-size-extra-small);
	color: var(--color-gray);
}

#main #login .input-box > div.relative:has(input[type="text"]:focus) > label.absolute.translate {
	color: var(--color-blue);
}

#main #login #input-pass {
	-webkit-text-security: disc;
}

#main #login .submit-box {
	height: var(--icon-size-extra-large);
	margin-top: calc(var(--blank-space) * 2);
}

#main #recorder-list form div {
	border-radius: 24px;
}

#main #recorder-list form div:has(button:hover) {
	background: var(--color-transparent-blue);
}

#main #recorder-list form div.selected {
	background: var(--color-transparent-light-blue);
}

#main #recorder-list form div.selected:has(button:hover) {
	background: var(--color-transparent-light-blue);
}

#main #recorder-list form button {
	width: -webkit-fill-available;
	width: -moz-available;
	width: stretch;
	text-align: start;
	padding-top: 20px;
	padding-bottom: 20px;
}

#main #standby {
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #standby form {
	height: var(--icon-size-extra-large);
}

#main #standby button {
	opacity: 0;
}

#main #standby button.power-on {
	opacity: 1;
}

#main #staff-list form div {
	border-radius: 24px;
}

#main #staff-list form div.last {
	background: var(--color-transparent-gray);
}

#main #staff-list form div:has(button.list:hover) {
	background: var(--color-transparent-blue);
}

#main #staff-list form div.selected {
	background: var(--color-transparent-light-blue);
}

#main #staff-list form div.selected:has(button.list:hover) {
	background: var(--color-transparent-light-blue);
}

#main #staff-list form button.list {
	width: -webkit-fill-available;
	width: -moz-available;
	width: stretch;
	text-align: start;
	padding-top: 20px;
	padding-bottom: 20px;
}

#main #staff-list form button.list > span,
#main #staff-list form button.list > span > span {
	display: inline-block;
}

#main #staff-list form button.list > span > br + span {
	margin-top: 10px;
}

#main #staff-list form button:not(.list) {
	align-self: center;
	margin-left: var(--blank-space);
	margin-right: var(--blank-space);
}

#main #message {
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #message p {
	line-height: var(--line-height-large);
	margin-left: var(--blank-space);
	margin-right: var(--blank-space);
}

#main #message form {
	height: var(--icon-size-extra-large);
	margin-top: calc(var(--blank-space) * 2);
}

#main #punch {
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #punch form.flex:not(#responsive) {
	flex-direction: column;
	align-items: center;
}

#main #punch #responsive {
	justify-content: center;
}

#main #punch form:not(#responsive) button {
	width: min(calc((var(--content-width) - (var(--blank-space) * 4)) / 2), calc(100% - (var(--blank-space) * 2)));
}

#main #punch #responsive button {
	width: calc((var(--content-width) - (var(--blank-space) * 4)) / 2);
}

#main #punch #no-break {
	margin-right: var(--blank-space);
}

#main #punch #fail-break {
	margin-left: var(--blank-space);
}

#main #punch #fail {
	margin-top: calc(var(--blank-space) * 2);
}

#main #punch button > span {
	display: inline-block;
	width: 100%;
	align-content: center;
	border-radius: var(--punch-border-radius);
	padding-left: 32px;
	padding-right: 32px;
}

#main #punch button:not(#fail) > span {
	min-height: 152px;
}

#main #punch #punch-in > span {
	border: var(--punch-border-width) solid var(--color-blue);
}

#main #punch #punch-in > span.punched {
	background: var(--color-transparent-blue);
}

#main #punch #break-start > span {
	border: var(--punch-border-width) solid var(--color-green);
}

#main #punch #break-start > span.punched {
	background: var(--color-transparent-green);
}

#main #punch #break-end > span {
	border: var(--punch-border-width) solid var(--color-yellow);
}

#main #punch #break-end > span.punched {
	background: var(--color-transparent-yellow);
}

#main #punch #punch-out > span {
	border: var(--punch-border-width) solid var(--color-red);
}

#main #punch #punch-out > span.punched {
	background: var(--color-transparent-red);
}

#main #punch #fail > span {
	min-height: 64px;
	border: var(--punch-border-width) solid var(--color-black);
	background: var(--color-black);
}

#main #punch #no-break > span {
	border: var(--punch-border-width) solid var(--color-black);
}

#main #punch #fail-break > span {
	border: var(--punch-border-width) solid var(--color-black);
	background: var(--color-black);
}

#main #punch :is(#fail, #no-break, #fail-break) > span {
	line-height: var(--line-height-large);
}

#main #punch button > span.relative::after {
	content: url(../images/next_large.svg);
	position: absolute;
	top: calc(50% - 17.5px);
	right: 8px;	
}

#main #punch :is(#fail, #fail-break) > span.relative::after {
	filter: var(--filter-white);
}

#main #punch #no-break > span.relative::after {
	filter: var(--filter-black);
}

#main #loader {
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #loader:not(.geo-loading),
#main div:not(#loader).geo-loading {
	display: none;
}

#main #loader div {
	width: calc(var(--icon-size-extra-large) - (var(--loader-margin) * 2));
	height: calc(var(--icon-size-extra-large) - (var(--loader-margin) * 2));
	margin-inline: auto;
	margin-block: var(--loader-margin);
	border: 16px solid var(--color-gray);
	border-radius: 50%;
	clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%);
}

#main #loader.geo-loading div {
	animation: loader-spin 1s linear infinite;
}

@keyframes loader-spin {
	0% {
		transform: rotate(0deg);
	}

	100% {
		transform: rotate(360deg);
	}
}

#main #greeting {
	line-height: var(--line-height-large);
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #greeting > p {
	opacity: 0;
}

#main #history-list form > div.flex {
	align-items: center;
}

#main #history-list form > div.update {
	background: var(--color-transparent-gray);
	border-radius: 24px;
}

#main #history-list form > div > div {
	padding-top: 20px;
	padding-bottom: 20px;
}

#main #history-list form > div:not(.child-combinator) > div {
	margin-left: var(--blank-space);
	margin-right: calc(var(--icon-size-large) + (var(--blank-space) * 3));
}

#main #history-list form > div > div p + p {
	margin-top: 10px;
}

#main #fix {
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #fix p {
	line-height: var(--line-height-large);
	margin-left: var(--blank-space);
	margin-right: var(--blank-space);
}

#main #fix div {
	height: var(--icon-size-extra-large);
	margin-top: calc(var(--blank-space) * 2);
}

#main #error {
	padding-top: calc(var(--blank-space) * 2);
	padding-bottom: var(--blank-space);
}

#main #error form {
	height: var(--icon-size-extra-large);
}

#footer {
	position: sticky;
	bottom: 0;
	background: #FFFFFFDD;
	backdrop-filter: blur(2px);
	-webkit-backdrop-filter: blur(2px);
	z-index: 1;
}

#footer .wrapper {
	padding-bottom: 24px;
}

#footer .wrapper > div.relative {
	min-height: var(--footer-icon-box-height);
	padding-top: var(--blank-space);
	padding-bottom: var(--blank-space);
}

#footer .wrapper > p {
	line-height: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	margin-left: var(--blank-space);
	margin-right: var(--blank-space);
	padding-top: 1px;
	padding-bottom: 1px;
	color: var(--color-gray);
}

#footer .wrapper > div.relative > div.absolute {
	top: calc(50% - (var(--icon-size-large) / 2));
	right: 0;
}

#footer :is(#scroll-top, #scroll-bottom) {
	visibility: hidden;
}

#footer :is(#scroll-top.visible, #scroll-bottom.visible) {
	visibility: visible;
}

.text-center {
	text-align: center;
}

.flex {
	display: flex;
}

.between {
	justify-content: space-between;
}

.item-center {
	display: grid;
	place-items: center;
}

.relative {
	position: relative;
}

.absolute {
	position: absolute;
}

.disabled {
	pointer-events: none;
}

.child-combinator > * {
	margin-left: var(--blank-space);
	margin-right: var(--blank-space);
}

.fade-in {
	visibility: hidden;
	opacity: 0;
}

.will-change {
	will-change: scale;
}

@media (width < 920px) {
	#main #punch #responsive {
		flex-direction: column;
		justify-content: normal;
		align-items: center;
	}

	#main #punch #responsive button {
		width: min(calc((var(--content-width) - (var(--blank-space) * 4)) / 2), calc(100% - (var(--blank-space) * 2)));
	}

	#main #punch #no-break {
		margin-right: 0;
	}

	#main #punch #fail-break {
		margin-top: calc(var(--blank-space) * 2);
		margin-left: 0;
	}
}

/*
フッターアイコン2つの場合
calc((((var(--icon-size-large) * 3) + (var(--blank-space) * 6)) * 2))の計算結果 = 576px
*/

@media (width < 576px) {
	#footer .wrapper > div.relative > div.absolute {
		display: none;
	}
}