/******************************************************************************
 ##############################################################################
 #####                                                                    #####
 #####   main.css of ph-Bookshelf                                         #####
 #####                                                                    #####
 ##############################################################################
 ******************************************************************************/


/*
/*
/******************************************************************
 **       Overall Variable                                       **
 ******************************************************************/
:root {
	
	--color-page-background: var(--bcm-color-page-background);
	
	--color-font-base: var(--bcm-color-font-base);
	--color-font-base-link: var(--bcm-color-font-base-link);
	--color-font-base-link-hover: var(--bcm-color-font-base-link-hover);
	--color-font-base-link-visited: var(--bcm-color-font-base-link-visited);
	--color-font-base-link-visited-hover: var(--bcm-color-font-base-link-visited-hover);
	--color-font-base-link-focus-bg: var(--bcm-color-font-base-link-focus-bg);
	
	--color-sidebar-background: var(--bcm-color-table-background);
	--color-font-sidebar: var(--color-font-base);
	--color-font-sidebar-title: #9e77e5;
	--color-scrollbar-sidebar-background: none;
	--color-scrollbar-sidebar-foreground: var(--color-menu-child-list-line);
	
	--color-warn-noscript: #ce263d;
	--color-font-warn-noscript: #f5eaea;
	--color-font-sidebar-sitetitle: #3a2b8c;
	/*--color-font-sidebar-sitetitle-highlight: #4a60b6;*/
	--color-sidebar-sitetitle-background: #e8f0fe;
	
	--color-menu-list-separator: #ebeff2;
	--color-menu-child-list-line: #78a8e021;
	--color-menu-item-indicator-current: #6bacf1;
	--color-menu-item-indicator-focus: #91c6ff;
	--color-font-menu-item-current: #3697ff;
	--color-font-menu-item-hover: #71b3f9;
	
	--color-tools-button-background: var(--color-sidebar-background);
	--color-tools-button-background-active: #eef1f4;
	--color-font-tools-button: #c3ccd6;
	
	--color-scrollbar-main-background: var(--color-scrollbar-sidebar-foreground);
	--color-scrollbar-main-foreground: var(--color-menu-item-indicator-focus);
	
}

@media (prefers-color-scheme: dark) { :root {
	
	/*--color-page-background: var(--bcm-color-page-background);*/
	
	/*--color-font-base: var(--bcm-color-font-base);*/
	/*--color-font-base-link: var(--bcm-color-font-base-link);*/
	/*--color-font-base-link-hover: var(--bcm-color-font-base-link-hover);*/
	/*--color-font-base-link-visited: var(--bcm-color-font-base-link-visited);*/
	/*--color-font-base-link-visited-hover: var(--bcm-color-font-base-link-visited-hover);*/
	/*--color-font-base-link-focus-bg: var(--bcm-color-font-base-link-focus-bg);*/
	
	/*--color-sidebar-background: var(--bcm-color-table-background);*/
	/*--color-font-sidebar: var(--color-font-base);*/
	/*--color-scrollbar-sidebar-background: none;*/
	/*--color-scrollbar-sidebar-foreground: var(--color-menu-child-list-line);*/
	
	--color-warn-noscript: #ce263d; ;;
	--color-font-warn-noscript: #f5eaea; ;;
	--color-font-sidebar-sitetitle: #5d0a0a;
	/*--color-font-sidebar-sitetitle-highlight: #4a60b6;*/
	--color-sidebar-sitetitle-background: #be6964;
	
	--color-menu-list-separator: #383b3d;
	--color-menu-child-list-line: #b28c9029;
	--color-menu-item-indicator-current: #ff6c6c;
	--color-menu-item-indicator-focus: #cc888f;
	--color-font-menu-item-current: #f5848e;
	--color-font-menu-item-hover: #ffa2ad;
	
	/*--color-tools-button-background: var(--color-sidebar-background);*/
	--color-tools-button-background-active: #414344;
	--color-font-tools-button: #747576; ;
	
	/*--color-scrollbar-main-background: var(--color-scrollbar-sidebar-foreground);*/
	/*--color-scrollbar-main-foreground: var(--color-menu-item-indicator-focus);*/
	
}}

:root {
	
	--sidebar-width: 19rem;
	--sidebar-margin-width: 2rem;
	--sidebar-margin-height: 2rem;
	--sidebar-font-size: 0.83rem;
	
	--sidebar-menu-container-external-max-height: 30%;
	
	--sidebar-menu-container-padding-width: 1.3rem;
	--sidebar-menu-container-padding-height: 0.8rem;
	--sidebar-menu-item-indent-width: 1.1rem;
	
	--sidebar-menu-list-seperator-width: 3px;
	--sidebar-menu-list-seperator-length: 66%;
	--sidebar-menu-item-indicator-active-width: 4px;
	--sidebar-menu-item-indicator-focus-width: 4px;
	
	--main-margin-height: 2rem;
	--main-margin-width: 2rem;
	
	--main-scrollbar-width: 0.5rem;
	
	--tools-button-padding: 0.75rem;
	--tools-font-size: 0.83rem;
	
	--article-padding-height: 2rem;
	--article-padding-width: 2rem;
	/*--article-margin-top: 3rem;*/
	--article-margin-top: 0;
	--article-margin-bottom: 30vh;
	--article-width-max: 800px;
	
}

:root {
	
	--sidebar-radius: 0.5rem;
	
	--object-opacity-weakness: 0.4;
	
}

:root {
	--font-sarasa-gothic: "Sarasa Gothic J", "Sarasa Gothic K", "Sarasa Gothic TC", "Sarasa Gothic SC";
	--font-sarasa-mono: "Sarasa Mono J", "Sarasa Mono K", "Sarasa Mono TC", "Sarasa Mono SC";
	--font-sans-serif: "Alibaba Puhuiti", var(--font-sarasa-gothic), sans-serif;
	--font-serif: "Georgia", serif;
	/*--font-sans-serif: sans-serif;*/
	/*--font-serif: "Times New Roman", serif;*/
	--font-monospace: "Fira Code", "Monaco", "Consolas", var(--font-sarasa-mono), monospace;
}

:root {
	
	--element-href-anima-speed: 0.1s;
	
	--sidebar-toggle-anima-speed: 0.4s;
	
	--sidebar-menu-item-anima-speed: 0.15s;
	--sidebar-menu-item-parent-arrow-anima-speed: 0.2s;
	--sidebar-menu-item-children-anima-speed: 0.2s;
	
	--tools-button-hover-anima-speed: 0.2s;
	
}

:root {
	--animation-speed-multiplier: 1;
	/*	--color-background-graystyle: #3c3c3c;*/
	/*	--color-font-graystyle-base: #bfbfbf;*/
}


/*
/*
/******************************************************************
 **       Global Elements                                        **
 ******************************************************************/

::selection {

}

.prevent-animation {
	transition: none !important;
}

/*#test-overflow {*/
/*	display: none;*/
/*}*/

button {
	appearance: none;
	font-size: inherit;
	font-family: inherit;
	font-style: inherit;
	font-variant-ligatures: inherit;
	font-variant-caps: inherit;
	font-variant-numeric: inherit;
	font-variant-east-asian: inherit;
	font-weight: inherit;
	font-stretch: inherit;
	color: inherit;
	letter-spacing: normal;
	word-spacing: normal;
	line-height: normal;
	text-transform: none;
	box-sizing: border-box;
	background: none;
	border: none;
	border-radius: 0.5rem;
}

small {
	opacity: var(--object-opacity-weakness);
}

a {
	color: var(--color-font-base-link);
	text-decoration: none;
	transition:
			color calc(var(--element-href-anima-speed) * var(--animation-speed-multiplier)),
			background-color calc(var(--element-href-anima-speed) * var(--animation-speed-multiplier));
	border-radius: 0.3rem;
}

a:hover {
	color: var(--color-font-base-link-hover);
}

a:visited {
	color: var(--color-font-base-link-visited);
}

a:visited:hover {
	color: var(--color-font-base-link-visited-hover);
}

a:focus-visible {
	background-color: var(--color-font-base-link-focus-bg);
	outline: none;
}

a.no-style {
	color: inherit;
	text-decoration: inherit;
}

a.no-style:hover,
a.no-style:visited,
a.no-style:visited:hover {
	color: inherit;
	border-radius: inherit;
	transition: inherit;
}

a.no-style:focus-visible {
	background-color: inherit;
}


h1 {
	font-size: 2.2rem;
}

html, body {
	margin: 0;
	padding: 0;
}

body {
	font-family: var(--font-sans-serif);
}


/*
/*
/******************************************************************
 **       root item                                              **
 ******************************************************************/
body {
	width: 100vw;
	height: 100vh;
	overflow: hidden;
	color: var(--color-font-base);
	background-color: var(--color-page-background);
	display: flex;
	position: relative;
}


/*
/*
/******************************************************************
 **       sidebar                                                **
 ******************************************************************/
#nav-container {
	width: 0;
	flex-grow: 0;
	flex-shrink: 0;
	position: relative;
	transition: width calc(var(--sidebar-toggle-anima-speed) * var(--animation-speed-multiplier));
}

#nav-container.show-sidebar {
	width: min(calc(var(--sidebar-width) + var(--sidebar-margin-width) * 2), 100vw);
}

#sidebar {
	width: min(var(--sidebar-width), 100vw);
	padding: var(--sidebar-margin-height) var(--sidebar-margin-width);
	position: absolute;
	top: 0;
	bottom: 0;
	right: 0;
	font-size: var(--sidebar-font-size);
	font-weight: bold;
	display: flex;
	flex-direction: column;
	color: var(--color-font-sidebar);
	overflow: hidden;
	z-index: 99;
}

#sidebar .sidebar-card {
	background: var(--color-sidebar-background);
	border-radius: var(--sidebar-radius);
	overflow: hidden;
}

#sidebar .sidebar-card:not(:last-child) {
	margin-bottom: 1rem;
}

#sidebar > #noscript-warn {
	flex-shrink: 0;
	padding: 1rem;
	border-radius: 0.5rem;
	background: var(--color-warn-noscript);
	color: var(--color-font-warn-noscript);
	z-index:15;
}

#sidebar > #site-title {
	width: 100%;
	box-sizing: border-box;
	padding: 1rem;
	font-style: normal;
	background: var(--color-sidebar-sitetitle-background);
	color: var(--color-font-sidebar-sitetitle);
	/*transition:*/
	/*		color calc(var(--element-href-anima-speed) * var(--animation-speed-multiplier)),*/
	/*		background calc(var(--element-href-anima-speed) * var(--animation-speed-multiplier));*/
	border-radius: 0.5rem;
	z-index:10;
}

#sidebar > #site-title:hover {
	/*background: var(--color-font-sidebar-sitetitle);*/
	/*color: var(--color-font-sidebar-sitetitle-highlight);*/
	/*background: var(--color-font-sidebar-sitetitle-highlight);*/
	text-decoration: underline;
}

#sidebar > #site-title + *,
#sidebar > noscript#noscript-warn + * {
	margin-top: -1rem;
	border-width: 0;
	border-top: 1rem;
	border-style: solid;
	border-color: #ffffff00;
}

#sidebar > .menu-container {
	display: flex;
	flex-direction: column;
	overflow-x: hidden;
	overflow-y: auto;
}

#sidebar > .menu-container:last-child {
	flex-grow: 1;
}

#sidebar > .menu-container::-webkit-scrollbar {
	width: 2px;
	background: none;
}

#sidebar > .menu-container::-webkit-scrollbar-thumb {
	 background: var(--color-scrollbar-sidebar-background);
 }

#sidebar > .menu-container:hover::-webkit-scrollbar-thumb {
	background: var(--color-scrollbar-sidebar-foreground);
}

#sidebar > .menu-container::-webkit-scrollbar-track {
	background: var(--color-scrollbar-sidebar-background);
}

#sidebar > .menu-container > .menu {
	padding: var(--sidebar-menu-container-padding-height) var(--sidebar-menu-container-padding-width);
	padding-right: 0;
	position: relative;
}

#sidebar > .menu-container > .menu:not(:first-child):before {
	content: "";
	position: absolute;
	top: 0;
	right: calc((100% - var(--sidebar-menu-list-seperator-length))/2);
	left: calc((100% - var(--sidebar-menu-list-seperator-length))/2);
	transform: translate(0, -50%);
	height: var(--sidebar-menu-list-seperator-width);
	border-radius: calc(var(--sidebar-menu-list-seperator-width) / 2);
	background: var(--color-menu-list-separator);
}

#sidebar > .menu-container > .menu:nth-last-child(2) {
	flex-grow: 1;
}

#sidebar > .menu-container > .menu hr {
	width: calc(0.66 * calc(var(--sidebar-menu-container-padding-width) + 100%));
	margin: 0.55rem auto;
	transform: translate(calc(0px - var(--sidebar-menu-container-padding-width)/2), 0px);
	height: var(--sidebar-menu-list-seperator-width);
	border-radius: calc(var(--sidebar-menu-list-seperator-width) / 2);
	background: var(--color-menu-list-separator);
}

#sidebar > .menu-container > .menu .menu-title {
	display: block;
	position: relative;
	padding: 0.75rem 0 0;
	margin: 0;
	font-size: 0.8em;
	color: var(--color-font-sidebar-title);
}

#sidebar > .menu-container > .menu .menu-title:before {
	content: "•";
	position: absolute;
	left: -1em;
}

#sidebar > .menu-container > .menu .menu-item {
	display: block;
	padding: 0.55rem 0;
	position: relative;
	-webkit-tap-highlight-color: transparent;
	transition: color calc(var(--sidebar-menu-item-anima-speed) * var(--animation-speed-multiplier));
}

#sidebar > .menu-container > .menu .menu-item:hover {
	color: var(--color-font-menu-item-hover);
}

#sidebar > .menu-container > .menu .menu-item.current {
	color: var(--color-font-menu-item-current) !important;
}

#sidebar > .menu-container > .menu .menu-item.current:after {
	content: "";
	position: absolute;
	top: calc(var(--sidebar-menu-item-indicator-active-width) / 2);
	bottom: calc(var(--sidebar-menu-item-indicator-active-width) / 2);
	right: calc(var(--sidebar-menu-item-indicator-active-width));
	width: var(--sidebar-menu-item-indicator-active-width);
	border-radius: calc(var(--sidebar-menu-item-indicator-active-width) / 2);
	background: var(--color-menu-item-indicator-current);
}

#sidebar > .menu-container > .menu .menu-item:before {
	content: "";
	position: absolute;
	transition: top calc(var(--sidebar-menu-item-anima-speed) * var(--animation-speed-multiplier)),
				bottom calc(var(--sidebar-menu-item-anima-speed) * var(--animation-speed-multiplier));
	top: 50%;
	bottom: 50%;
	left:calc(0px - var(--sidebar-menu-item-indicator-focus-width) * 2);
	width: var(--sidebar-menu-item-indicator-focus-width);
	border-radius: calc(var(--sidebar-menu-item-indicator-focus-width) / 2);
	background: var(--color-menu-item-indicator-focus);
}

#sidebar > .menu-container > .menu .menu-item:focus-visible{
	color: var(--color-font-menu-item-hover);
	outline: none;
}

#sidebar > .menu-container > .menu .menu-item:focus-visible:before {
	top: calc(var(--sidebar-menu-item-indicator-focus-width) / 2);
	bottom: calc(var(--sidebar-menu-item-indicator-focus-width) / 2);
}

#sidebar > .menu-container > .menu .menu-item-parent > *:first-child:after {
	content: "▸";
	color: var(--color-font-base-link);
	display: inline-block;
	margin-left: 0.5rem;
	transition: transform calc(var(--sidebar-menu-item-parent-arrow-anima-speed) * var(--animation-speed-multiplier));
}

#sidebar > .menu-container > .menu .menu-item-parent.active > *:first-child:after {
	transform: rotate(90deg);
}

#sidebar > .menu-container > .menu .menu-item-parent > .children {
	padding-left: var(--sidebar-menu-item-indent-width);
	border-style: solid;
	border-width: 0;
	border-color: var(--color-menu-child-list-line);
	border-left-width: 1px;
	overflow: hidden;
	display: none;
	transition: height calc(var(--sidebar-menu-item-children-anima-speed) * var(--animation-speed-multiplier)) ease-in-out;
}

#sidebar > .menu-container > .menu .menu-item-parent.active > .children {
	display: block;
}

#sidebar > .menu-container > .menu#menu-metas > .menu-item-parent > *:first-child {
	position: relative;
	/*text-decoration: underline;*/
}

#sidebar > .menu-container > .menu#menu-metas > .menu-item-parent > *:first-child:after {
	position: absolute;
	left: 0;
	margin-left: -1rem;
	color: inherit;
}

#sidebar > .menu-container > .menu#menu-metas > .menu-item-parent > .children {
	padding-left: 0;
	border-left-width: 0;
}


/*
/*
/******************************************************************
 **      page header                                             **
 ******************************************************************/
#main {
	color: var(--color-font-base);
	margin: 0 var(--main-margin-width);
	flex-grow: 1;
	overflow: auto;
	position: relative;
	scroll-behavior: smooth;
}

#main > #main-heading {
	padding-top: var(--main-margin-height);
	position: sticky;
	top: 0;
}

#main::-webkit-scrollbar {
	width: var(--main-scrollbar-width);
	border-radius: calc(var(--main-scrollbar-width) / 2);
	background: none;
}

#main::-webkit-scrollbar-thumb {
	width: var(--main-scrollbar-width);
	border-radius: calc(var(--main-scrollbar-width) / 2);
	background: var(--color-scrollbar-main-foreground);
}

#main::-webkit-scrollbar-track {
	width: var(--main-scrollbar-width);
	border-radius: calc(var(--main-scrollbar-width) / 2);
	background: var(--color-scrollbar-main-background);
	margin: var(--main-margin-height);
}

#page-tools {
	color: var(--color-font-tools-button);
	/*background-color: #ffffff;*/
	border-radius: 0.5rem;
	font-size: var(--tools-font-size);
	font-weight: bold;
	z-index: 100;
}

#page-tools > button {
	background-color: var(--color-tools-button-background);
	padding: 0;
	height: 2.2rem;
	width: 2.2rem;
	transition: background-color var(--tools-button-hover-anima-speed);
	user-select: none;
}

#page-tools > button:hover {
	background-color: var(--color-tools-button-background-active);
}



/*
/*
/******************************************************************
 **      page content                                            **
 ******************************************************************/
#article {
	margin: var(--article-margin-top) auto var(--article-margin-bottom);
	padding: var(--article-padding-height) var(--article-padding-width);
	padding-right: calc(var(--article-padding-width));
	max-width: var(--article-width-max);
}