@charset "utf-8";
/* ==========================================================================
   common.css — shared site shell (2026-10 CSS architecture refactor)
   --------------------------------------------------------------------------
   Reset / global stuff, header, mobile menu, footer and the small helper
   classes that were previously duplicated (and forked) inside all five page
   stylesheets (main_styles / group / profile / publications / contact).

   Load order on every page (see the <head> of each HTML file):
     bootstrap.min.css → common.css → [plugins] → page styles →
     page responsive styles → mobile_fixes.css

   Fork resolutions (majority / most recent value kept):
   - p a:hover      → color:#fff on var(--color-primary) (unified 2026-10-21)
   - .group_name a  → var(--font-heading)
   - .footer        → position: static (no fixed / z-index:-1 trick)
   - .header        → box-shadow 0 0 4px rgba(0,0,0,.32)
   - body / p / headings / links → the CSS variables below

   Dropped as dead code (no matching DOM in any HTML file): div{} global reset
   (box-sizing now lives on *), .header_social, .footer_social, .footer_logo,
   .footer_background, .parallax-window/.prlx/.prlx_parent, .form-control,
   .page_menu_search(_input), .page_menu_selection, .hassubs, .menu_social,
   .page_menu_item.has-children, .fill_height, empty ::selection rules and all
   -webkit-transition / -moz- / -ms- / -o- vendor prefixes.

   animate.css (72 KB) is replaced by the fadeIn/fadeOut keyframes below —
   the only classes the Owl slider (js/site.js) actually applies.
   ========================================================================== */

@import url('../fonts/poppins.css');

:root {
  --font-heading: Poppins, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --color-primary: #004098; /* USTC institutional blue: brand name, active nav,
                               accent bars, year headings, ext-link icons */
  --color-text: #6c6a74;
  --color-heading: #1b1b1b;
  --header-h: 120px;
}

/*********************************
 0. Animations (animate.css replacement)
*********************************/

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } }
.animated { animation-duration: 1s; animation-fill-mode: both; }
.fadeIn { animation-name: fadeIn; }
.fadeOut { animation-name: fadeOut; }

/* global keyboard-focus fallback (specific fallbacks live in mobile_fixes.css) */
:focus-visible { outline: 3px solid #ffb000; outline-offset: 2px; }

/*********************************
 1. Body and some general stuff
*********************************/

*
{
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	-webkit-font-smoothing: antialiased;
	text-shadow: rgba(0,0,0,.01) 0 0 1px;
}

body
{
	font-family: var(--font-body);
	font-size: 14px;
	font-weight: 400;
	background: #FFFFFF;
	color: #a5a5a5;
}

ul
{
	list-style: none;
	margin-bottom: 0px;
}

p
{
	font-family: var(--font-body);
	font-size: 14px;
	line-height: 2.14;
	font-weight: 400;
	color: var(--color-text);
	-webkit-font-smoothing: antialiased;
	text-shadow: rgba(0,0,0,.01) 0 0 1px;
}

p a
{
	display: inline;
	position: relative;
	color: inherit;
	border-bottom: solid 1px var(--color-primary);
	transition: all 200ms ease;
}

p:last-of-type
{
	margin-bottom: 0;
}

a, a:hover, a:visited, a:active, a:link
{
	text-decoration: none;
	-webkit-font-smoothing: antialiased;
	text-shadow: rgba(0,0,0,.01) 0 0 1px;
}

p a:active
{
	position: relative;
	color: #00337a; /* darker press-state of the brand blue */
}

p a:hover
{
	color: #FFFFFF;
	background: var(--color-primary);
}

p a:hover::after
{
	opacity: 0.2;
}

h1{font-size: 48px;}
h2{font-size: 36px;}
h3{font-size: 24px;}
h4{font-size: 18px;}
h5{font-size: 14px;}

h1, h2, h3, h4, h5, h6
{
	/* Body stack on purpose: most visible titles on this site are
	   div[role=heading] (body font); real headings must match them.
	   Poppins (--font-heading) is reserved for the site brand
	   (.group_name a) and slider titles. */
	font-family: var(--font-body);
	-webkit-font-smoothing: antialiased;
	text-shadow: rgba(0,0,0,.01) 0 0 1px;
}

section
{
	display: block;
	position: relative;
	box-sizing: border-box;
}

.clear
{
	clear: both;
}

.clearfix::before, .clearfix::after
{
	content: "";
	display: table;
}

.clearfix::after
{
	clear: both;
}

.clearfix
{
	zoom: 1;
}

.float_left
{
	float: left;
}

.float_right
{
	float: right;
}

.trans_200
{
	transition: all 200ms ease;
}

.trans_300
{
	transition: all 300ms ease;
}

.trans_400
{
	transition: all 400ms ease;
}

.trans_500
{
	transition: all 500ms ease;
}

.super_container
{
	width: 100%;
	overflow: hidden;
}

.nopadding
{
	padding: 0px !important;
}

.button
{
	position: relative; /* anchor for the ::after sweep (the old div{position:relative} global reset is gone) */
	width: 178px;
	height: 30px;
	text-align: center;
	background: #000000;
	border: solid 2px var(--color-heading);
	overflow: hidden;
	cursor: pointer;
}

.button a
{
	position: relative;
	padding-top: 12px;
	font-size: 16px;
	font-weight: 600;
	color: var(--color-heading);
	background: none;
	z-index: 1;
	transition: all 200ms ease;
}

.button::after
{
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 150%;
	height: 100%;
	background: #FFFFFF;
	z-index: 0;
	opacity: 0;
	transform: rotate3d(0, 0, 1, -45deg) translate3d(0, -3em, 0);
	transform-origin: 0% 100%;
	transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
}

.button:hover::after
{
	opacity: 1;
	transform: rotate3d(0, 0, 1, 0deg);
	transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
}

.button_light
{
	border: solid 2px #FFFFFF;
}

.button_light a
{
	color: #FFFFFF;
}

.button:hover a
{
	color: #FFFFFF;
}

.button_light:hover a
{
	color: var(--color-heading);
}

/*********************************
 2. Header
*********************************/

.header
{
	display: block;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 100;
	box-shadow: 0 0 4px rgba(0, 0, 0, 0.32);
}

.header_container
{
	width: 100%;
	z-index: 1;
	background: #FFFFFF;
}

.header_content
{
	width: 100%;
	height: var(--header-h);
	transition: all 200ms ease;
}

.header.scrolled .header_content
{
	height: 60px;
}

.nav_icon img
{
	height: 70px;
	width: 70px;
	transition: all 300ms ease;
}

.group_name
{
	width: 100%;
	margin: 10px 0px 0px 10px;
}

.group_name2
{
	margin-left: 10px;
	margin-bottom: 10px;
}

.group_name a
{
	font-size: 24px;
	font-family: var(--font-heading);
	font-weight: 500;
	color: var(--color-primary);
	text-shadow: 2px 2px 0.5px #abc;
	transition: all 300ms ease;
}

.group_name2 a
{
	font-size: 12px;
	font-weight: 400;
	color: var(--color-heading);
	display: block;
	transition: all 200ms ease;
}

.header.scrolled .group_name a
{
	font-size: 20px;
	margin-top: 10px;
}

.header.scrolled .group_name2 a
{
	margin-left: -13px;
	transform: scale(0.9);
}

.header.scrolled .nav_icon img
{
	height: 50px;
	width: 50px;
}

.main_nav
{
	margin-left: 50px;
}

.main_nav > ul > li
{
	display: inline-block;
	position: relative;
}

.main_nav > ul > li:not(:last-child)
{
	margin-right: 36px;
}

.main_nav > ul > li > a
{
	font-size: 16px;
	font-weight: 600;
	color: #767676;
	transition: all 200ms ease;
}

.main_nav > ul > li > a:hover
{
	color: var(--color-heading);
}

/* current-page highlight (markup sets .active) */
.main_nav > ul > li.active > a
{
	color: var(--color-primary);
}

/*********************************
 3. Mobile menu
*********************************/

.menu
{
	position: fixed;
	top: 0;
	right: -400px;
	width: 400px;
	height: 100vh;
	background: #e4e4e4;
	z-index: 101;
}

.menu.active
{
	right: 0;
}

.menu_container
{
	width: 100%;
	height: 0px;
	padding-top: 120px;
}

.menu.active .menu_container
{
	height: 500px;
}

.page_menu_content
{
	padding-left: 30px;
	padding-right: 30px;
	overflow: hidden;
	text-align: right;
}

.page_menu_item
{
	display: block;
	position: relative;
	vertical-align: middle;
}

.page_menu_nav > li
{
	border-bottom: solid 1px rgba(0,0,0,0.2);
}

.page_menu_item > a
{
	display: block;
	color: var(--color-heading);
	font-weight: 700;
	line-height: 50px;
	height: 50px;
	font-size: 16px;
	transition: all 200ms ease;
}

.page_menu_item > a:hover
{
	color: #c3c1cc;
}

/* current-page highlight in the slide-in menu (markup sets .active) */
.page_menu_nav > li.active > a
{
	color: var(--color-primary);
}

.menu_close
{
	position: absolute;
	top: 25px;
	right: 25px;
	cursor: pointer;
}

.menu_close svg
{
	color: var(--color-heading);
}

.hamburger
{
	display: none;
	margin-left: 10px;
	cursor: pointer;
	margin-right: 4px;
	transform: translateY(2px);
}

.hamburger svg
{
	color: var(--color-heading);
}

/*********************************
 4. Footer
*********************************/

.footer_overlay
{
	width: 100%;
	height: 53px;
	background: transparent;
}

.footer
{
	position: static;
	background: #3a3a3a;
	width: 100%;
}

.footer_content
{
	width: 100%;
	height: 53px;
}

.copyright
{
	width: 100%;
	text-align: center;
	font-size: 14px;
	font-weight: 400;
	color: #FFFFFF;
}

/*********************************
 5. Helpers (a11y + inline icons)
*********************************/

.sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: 12px;
	top: -64px;
	z-index: 10000;
	padding: 10px 16px;
	background: var(--color-primary);
	color: #ffffff;
	border-radius: 0 0 4px 4px;
	transition: top 150ms ease;
}

.skip-link:focus {
	top: 0;
	color: #ffffff;
}

/* inline "external link" SVG marker used in the publication list; inherits
   the colour of its .pubs_mark parent (was the font-awesome icon colour) */
.pubs-ext-icon {
	vertical-align: baseline;
	color: inherit;
}
