| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015 |
- /* ============================================================
- 亿图腾 · 浠艾福 — 企业官网样式表
- 设计系统基于 DESIGN.md 设计 Token
- ============================================================ */
- /* ----------------------------------------------------------
- 0. CSS Custom Properties (Design Tokens)
- ---------------------------------------------------------- */
- :root {
- /* Brand Colors (from logo sky-blue palette) */
- --color-primary: #4A9BD7;
- --color-primary-hover: #3993CC;
- --color-primary-light: #E8F4FA;
- --color-secondary: #4ECDC4;
- --color-accent: #FFD93D;
- --color-accent-light: #FFFBEB;
- /* Text Colors */
- --color-text-primary: #2D3436;
- --color-text-secondary: #636E72;
- --color-text-muted: #B2BEC3;
- /* Surfaces */
- --bg-body: #F5FAFE;
- --bg-surface: #FFFFFF;
- --bg-section-alt: #EEF5FB;
- /* Other UI */
- --color-border: #D8E5F0;
- --color-border-light: #E5EEF5;
- --shadow-sm: 0 1px 3px rgba(45, 52, 54, .08);
- --shadow-md: 0 4px 12px rgba(45, 52, 54, .10);
- --shadow-lg: 0 12px 40px rgba(45, 52, 54, .12);
- --shadow-xl: 0 24px 60px rgba(45, 52, 54, .15);
- /* Typography */
- --font-family: system-ui, -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', sans-serif;
- --font-size-display: clamp(2.25rem, 5vw, 3.5rem);
- --font-size-h1: clamp(1.75rem, 4vw, 2.5rem);
- --font-size-h2: clamp(1.5rem, 3vw, 2.25rem);
- --font-size-h3: 1.25rem;
- --font-size-body: 1rem;
- --font-size-small: .875rem;
- --font-size-tiny: .75rem;
- /* Spacing */
- --space-xs: .5rem;
- --space-sm: .75rem;
- --space-md: 1rem;
- --space-lg: 1.5rem;
- --space-xl: 2rem;
- --space-2xl: 3rem;
- --space-3xl: 4rem;
- --space-section: 5rem;
- /* Border Radius */
- --radius-sm: 8px;
- --radius-md: 12px;
- --radius-lg: 16px;
- --radius-xl: 24px;
- --radius-full: 9999px;
- /* Transitions */
- --transition-fast: .2s ease;
- --transition-normal: .3s ease;
- --transition-slow: .5s cubic-bezier(.4, 0, .2, 1);
- /* Layout */
- --max-width: 1200px;
- --header-height: 64px;
- }
- /* ----------------------------------------------------------
- 1. Reset & Base
- ---------------------------------------------------------- */
- *, *::before, *::after {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
- html {
- scroll-behavior: smooth;
- -webkit-text-size-adjust: 100%;
- scroll-padding-top: var(--header-height);
- scroll-snap-type: y mandatory;
- }
- /* All major sections snap to top when scrolling stops */
- section[id] {
- scroll-snap-align: start;
- scroll-snap-stop: always;
- }
- body {
- font-family: var(--font-family);
- font-size: var(--font-size-body);
- line-height: 1.6;
- color: var(--color-text-primary);
- background: var(--bg-body);
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- overflow-x: hidden;
- }
- img { max-width: 100%; height: auto; display: block; }
- a { color: inherit; text-decoration: none; }
- ul { list-style: none; }
- /* ----------------------------------------------------------
- 2. Container
- ---------------------------------------------------------- */
- .container {
- width: 100%;
- max-width: var(--max-width);
- margin: 0 auto;
- padding: 0 var(--space-xl);
- }
- /* ----------------------------------------------------------
- 3. Header / Navigation
- ---------------------------------------------------------- */
- .site-header {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- height: var(--header-height);
- background: rgba(245, 250, 254, .92);
- backdrop-filter: blur(16px) saturate(180%);
- -webkit-backdrop-filter: blur(16px) saturate(180%);
- border-bottom: 1px solid var(--color-border-light);
- z-index: 1000;
- transition: box-shadow var(--transition-normal);
- }
- .site-header.scrolled {
- box-shadow: var(--shadow-sm);
- }
- .header-inner {
- display: flex;
- align-items: center;
- justify-content: space-between;
- height: 100%;
- }
- /* Logo */
- .logo {
- display: flex;
- align-items: center;
- gap: var(--space-xs);
- font-weight: 700;
- font-size: 1.125rem;
- }
- .logo-icon { font-size: 1.5rem; }
- .logo-text {
- color: var(--color-text-primary);
- }
- .logo-tag {
- color: var(--color-primary);
- font-weight: 600;
- }
- /* Nav Toggle (Mobile) */
- .nav-toggle {
- display: none;
- flex-direction: column;
- gap: 5px;
- background: none;
- border: none;
- cursor: pointer;
- padding: 4px;
- z-index: 1001;
- }
- .nav-toggle span {
- display: block;
- width: 24px;
- height: 2px;
- background: var(--color-text-primary);
- border-radius: 2px;
- transition: var(--transition-fast);
- transform-origin: center;
- }
- .nav-toggle.active span:nth-child(1) {
- transform: translateY(7px) rotate(45deg);
- }
- .nav-toggle.active span:nth-child(2) {
- opacity: 0;
- }
- .nav-toggle.active span:nth-child(3) {
- transform: translateY(-7px) rotate(-45deg);
- }
- /* Nav List */
- .nav-list {
- display: flex;
- align-items: center;
- gap: var(--space-lg);
- }
- .nav-link {
- font-size: var(--font-size-small);
- font-weight: 500;
- color: var(--color-text-secondary);
- transition: color var(--transition-fast);
- position: relative;
- padding: var(--space-xs) 0;
- }
- .nav-link::after {
- content: '';
- position: absolute;
- bottom: 0;
- left: 0;
- width: 0;
- height: 2px;
- background: var(--color-primary);
- border-radius: 1px;
- transition: width var(--transition-normal);
- }
- .nav-link:hover,
- .nav-link.active {
- color: var(--color-primary);
- }
- .nav-link:hover::after,
- .nav-link.active::after {
- width: 100%;
- }
- /* Nav login button */
- .nav-login-btn {
- display: inline-flex;
- align-items: center;
- padding: .5rem 1.125rem;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- color: #fff;
- background: var(--color-primary);
- border-radius: var(--radius-full);
- transition: all var(--transition-fast);
- margin-left: var(--space-md);
- white-space: nowrap;
- }
- .nav-login-btn:hover {
- background: var(--color-primary-hover);
- transform: translateY(-1px);
- box-shadow: 0 4px 12px rgba(74, 155, 215, .3);
- }
- /* ----------------------------------------------------------
- 4. Section Shell
- ---------------------------------------------------------- */
- .section {
- padding: var(--space-section) 0;
- }
- .section-header {
- text-align: center;
- max-width: 720px;
- margin: 0 auto var(--space-3xl);
- }
- .section-tag {
- display: inline-block;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- letter-spacing: .08em;
- text-transform: uppercase;
- color: var(--color-primary);
- background: var(--color-primary-light);
- padding: .35em 1em;
- border-radius: var(--radius-full);
- margin-bottom: var(--space-md);
- }
- .section-title {
- font-size: var(--font-size-h1);
- font-weight: 700;
- line-height: 1.25;
- margin-bottom: var(--space-md);
- color: var(--color-text-primary);
- }
- .section-subtitle {
- font-size: 1.1rem;
- font-weight: 500;
- color: var(--color-primary);
- margin-bottom: var(--space-md);
- letter-spacing: .02em;
- }
- .section-desc {
- font-size: var(--font-size-body);
- color: var(--color-text-secondary);
- line-height: 1.7;
- max-width: 600px;
- margin: 0 auto;
- }
- /* ----------------------------------------------------------
- 5. Buttons
- ---------------------------------------------------------- */
- .btn {
- display: inline-flex;
- align-items: center;
- gap: var(--space-xs);
- padding: .75rem 1.75rem;
- font-family: var(--font-family);
- font-size: var(--font-size-small);
- font-weight: 600;
- border-radius: var(--radius-md);
- border: 2px solid transparent;
- cursor: pointer;
- transition: all var(--transition-fast);
- text-align: center;
- }
- .btn-primary {
- background: var(--color-primary);
- color: #fff;
- border-color: var(--color-primary);
- }
- .btn-primary:hover {
- background: var(--color-primary-hover);
- border-color: var(--color-primary-hover);
- transform: translateY(-2px);
- box-shadow: 0 8px 24px rgba(74, 155, 215, .35);
- }
- .btn-outline {
- background: var(--color-primary);
- color: #fff;
- border-color: var(--color-primary);
- }
- .btn-outline:hover {
- background: var(--color-primary-hover);
- border-color: var(--color-primary-hover);
- transform: translateY(-2px);
- }
- /* Hero service provider link */
- .hero-service-link {
- margin-top: var(--space-lg);
- font-size: var(--font-size-small);
- color: var(--color-text-muted);
- display: flex;
- align-items: center;
- gap: var(--space-xs);
- }
- .hero-service-link a {
- color: var(--color-primary);
- font-weight: 600;
- transition: color var(--transition-fast);
- }
- .hero-service-link a:hover {
- color: var(--color-primary-hover);
- text-decoration: underline;
- }
- /* Role card login button */
- .role-login-btn {
- display: inline-block;
- margin-top: var(--space-md);
- padding: .5rem 1.25rem;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- color: #fff;
- background: var(--color-text-primary);
- border-radius: var(--radius-full);
- transition: all var(--transition-fast);
- }
- .role-login-btn:hover {
- background: var(--color-primary);
- transform: translateY(-1px);
- box-shadow: 0 4px 12px rgba(74, 155, 215, .25);
- }
- .role-teacher .role-login-btn:hover {
- background: #3B82F6;
- box-shadow: 0 4px 12px rgba(59, 130, 246, .3);
- }
- .role-admin .role-login-btn:hover {
- background: #6366F1;
- box-shadow: 0 4px 12px rgba(99, 102, 241, .3);
- }
- /* ----------------------------------------------------------
- 6. Hero Section
- ---------------------------------------------------------- */
- .hero {
- min-height: 100vh;
- display: flex;
- align-items: center;
- position: relative;
- padding-top: var(--header-height);
- overflow: hidden;
- }
- .hero-bg {
- position: absolute;
- inset: 0;
- background:
- radial-gradient(ellipse 80% 50% at 50% -10%, rgba(74, 155, 215, .10), transparent),
- radial-gradient(ellipse 60% 40% at 80% 80%, rgba(78, 205, 196, .08), transparent),
- radial-gradient(ellipse 50% 50% at 20% 70%, rgba(255, 217, 61, .06), transparent);
- pointer-events: none;
- }
- .hero-inner {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: var(--space-3xl);
- align-items: center;
- position: relative;
- z-index: 1;
- }
- .hero-badge {
- display: inline-block;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- letter-spacing: .06em;
- color: var(--color-primary);
- background: var(--color-primary-light);
- padding: .4em 1.2em;
- border-radius: var(--radius-full);
- margin-bottom: var(--space-lg);
- }
- .hero-title {
- font-size: var(--font-size-display);
- font-weight: 800;
- line-height: 1.15;
- margin-bottom: var(--space-lg);
- }
- .highlight {
- color: var(--color-primary);
- }
- .hero-desc {
- font-size: 1.0625rem;
- color: var(--color-text-secondary);
- line-height: 1.8;
- margin-bottom: var(--space-xl);
- max-width: 540px;
- }
- .hero-desc strong {
- color: var(--color-text-primary);
- }
- .hero-actions {
- display: flex;
- gap: var(--space-md);
- flex-wrap: wrap;
- }
- /* Hero Visual - Orbit Animation */
- .hero-visual {
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .dimension-orbit {
- position: relative;
- width: 320px;
- height: 320px;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .orbit-center {
- width: 80px;
- height: 80px;
- border-radius: 50%;
- background: var(--color-primary);
- color: #fff;
- font-size: 1.5rem;
- font-weight: 700;
- display: flex;
- align-items: center;
- justify-content: center;
- box-shadow: 0 0 40px rgba(74, 155, 215, .3);
- position: relative;
- z-index: 2;
- animation: pulseCenter 3s ease-in-out infinite;
- }
- @keyframes pulseCenter {
- 0%, 100% { box-shadow: 0 0 40px rgba(74, 155, 215, .3); transform: scale(1); }
- 50% { box-shadow: 0 0 60px rgba(74, 155, 215, .5); transform: scale(1.05); }
- }
- .orbit-item {
- position: absolute;
- width: 56px;
- height: 56px;
- border-radius: 50%;
- background: var(--bg-surface);
- border: 2px solid var(--color-border-light);
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 1.25rem;
- font-weight: 700;
- color: var(--color-text-secondary);
- box-shadow: var(--shadow-sm);
- animation: orbit 12s linear infinite;
- animation-delay: calc(var(--i) * -2.4s);
- z-index: 1;
- }
- @keyframes orbit {
- 0% {
- transform: rotate(0deg) translateX(130px) rotate(0deg);
- }
- 100% {
- transform: rotate(360deg) translateX(130px) rotate(-360deg);
- }
- }
- .orbit-item:nth-child(2) { --i: 1; }
- .orbit-item:nth-child(3) { --i: 2; }
- .orbit-item:nth-child(4) { --i: 3; }
- .orbit-item:nth-child(5) { --i: 4; }
- /* Scroll Indicator */
- .scroll-indicator {
- position: absolute;
- bottom: var(--space-xl);
- left: 50%;
- transform: translateX(-50%);
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: var(--space-xs);
- color: var(--color-text-muted);
- font-size: var(--font-size-tiny);
- animation: fadeInUp 1s ease 1s both;
- }
- .scroll-arrow {
- width: 20px;
- height: 20px;
- border-right: 2px solid var(--color-text-muted);
- border-bottom: 2px solid var(--color-text-muted);
- transform: rotate(45deg);
- animation: scrollBounce 2s ease-in-out infinite;
- }
- @keyframes scrollBounce {
- 0%, 100% { transform: rotate(45deg) translateY(0); opacity: .5; }
- 50% { transform: rotate(45deg) translateY(6px); opacity: 1; }
- }
- @keyframes fadeInUp {
- from { opacity: 0; transform: translateX(-50%) translateY(10px); }
- to { opacity: 1; transform: translateX(-50%) translateY(0); }
- }
- /* ----------------------------------------------------------
- 7. About Section
- ---------------------------------------------------------- */
- .section-about {
- background: var(--bg-surface);
- }
- .about-grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: var(--space-xl);
- }
- .about-card {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-lg);
- padding: var(--space-2xl);
- text-align: center;
- transition: all var(--transition-normal);
- }
- .about-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- }
- .about-icon {
- width: 72px;
- height: 72px;
- margin: 0 auto var(--space-lg);
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .about-card h3 {
- font-size: var(--font-size-h3);
- margin-bottom: var(--space-sm);
- font-weight: 700;
- }
- .about-card p {
- color: var(--color-text-secondary);
- line-height: 1.7;
- font-size: var(--font-size-small);
- }
- /* ----------------------------------------------------------
- 8. Product Section
- ---------------------------------------------------------- */
- .section-product {
- background: linear-gradient(180deg, var(--bg-body) 0%, var(--color-primary-light) 100%);
- }
- .product-showcase {
- max-width: 800px;
- margin: 0 auto;
- }
- .product-quote {
- background: var(--bg-surface);
- border-left: 4px solid var(--color-primary);
- padding: var(--space-xl) var(--space-2xl);
- border-radius: 0 var(--radius-md) var(--radius-md) 0;
- margin-bottom: var(--space-2xl);
- box-shadow: var(--shadow-sm);
- }
- .product-quote p {
- font-size: 1.0625rem;
- line-height: 1.9;
- color: var(--color-text-secondary);
- font-style: italic;
- }
- .product-stats {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: var(--space-lg);
- margin-bottom: var(--space-2xl);
- }
- .stat {
- text-align: center;
- padding: var(--space-lg);
- background: var(--bg-surface);
- border-radius: var(--radius-md);
- border: 1px solid var(--color-border-light);
- }
- .stat-link {
- display: block;
- text-decoration: none;
- color: inherit;
- transition: transform var(--transition-normal);
- }
- .stat-link:hover {
- transform: translateY(-3px);
- }
- .stat-num {
- display: block;
- font-size: 2rem;
- font-weight: 800;
- color: var(--color-primary);
- line-height: 1.2;
- margin-bottom: var(--space-xs);
- }
- .stat-label {
- font-size: var(--font-size-tiny);
- color: var(--color-text-secondary);
- font-weight: 500;
- }
- /* 幸福三支柱 */
- /* ----------------------------------------------------------
- 9. Footer
- ---------------------------------------------------------- */
- .section-products {
- background: linear-gradient(180deg, var(--color-primary-light) 0%, var(--bg-body) 100%);
- }
- .products-grid {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: var(--space-xl);
- max-width: 920px;
- margin: 0 auto;
- }
- .product-card {
- background: var(--bg-surface);
- border-radius: var(--radius-lg);
- padding: var(--space-2xl);
- border: 1px solid var(--color-border-light);
- transition: all var(--transition-normal);
- position: relative;
- overflow: hidden;
- }
- .product-card::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 4px;
- background: var(--product-color, var(--color-primary));
- }
- .product-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- }
- .product-card-icon {
- width: 56px;
- height: 56px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: var(--radius-md);
- background: var(--product-bg, var(--color-primary-light));
- margin-bottom: var(--space-md);
- }
- .product-card h3 {
- font-size: 1.1rem;
- font-weight: 700;
- color: var(--color-text-primary);
- margin-bottom: var(--space-xs);
- }
- .product-card .product-sub {
- font-size: var(--font-size-small);
- color: var(--product-color, var(--color-primary));
- font-weight: 600;
- margin-bottom: var(--space-sm);
- margin-top: -4px;
- }
- .product-card > p {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.75;
- margin-bottom: var(--space-md);
- }
- .product-tags {
- display: flex;
- flex-wrap: wrap;
- gap: var(--space-xs);
- }
- .product-tags span {
- display: inline-block;
- padding: 2px 10px;
- font-size: var(--font-size-tiny);
- color: var(--product-color, var(--color-text-secondary));
- background: color-mix(in srgb, var(--product-color, var(--color-primary)) 10%, transparent);
- border-radius: 100px;
- font-weight: 500;
- }
- .product-plus {
- color: var(--product-color, var(--color-primary));
- font-weight: 700;
- }
- @media (max-width: 768px) {
- .products-grid {
- grid-template-columns: 1fr;
- gap: var(--space-lg);
- }
- }
- /* ----------------------------------------------------------
- 10. Dimensions Section
- ---------------------------------------------------------- */
- .section-dimensions {
- background: var(--bg-surface);
- }
- .dimension-grid {
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- gap: var(--space-xl);
- }
- .dimension-grid > .dimension-card {
- width: calc((100% - var(--space-xl) * 2) / 3);
- }
- .dimension-card {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-lg);
- padding: var(--space-2xl);
- position: relative;
- overflow: hidden;
- transition: all var(--transition-normal);
- }
- .dim-bg-illustration {
- position: absolute;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 28%;
- pointer-events: none;
- opacity: 0.3;
- transition: opacity var(--transition-normal);
- mask-image: linear-gradient(to top, black 0%, black 50%, transparent 100%);
- -webkit-mask-image: linear-gradient(to top, black 0%, black 50%, transparent 100%);
- }
- .dim-bg-illustration svg {
- width: 100%;
- height: 100%;
- color: var(--dim-color);
- display: block;
- }
- .dimension-card:hover .dim-bg-illustration {
- opacity: 0.3;
- }
- .dimension-card::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 4px;
- background: var(--dim-color);
- opacity: .6;
- transition: opacity var(--transition-normal);
- }
- .dimension-card:hover {
- transform: translateY(-6px);
- box-shadow: var(--shadow-lg);
- border-color: transparent;
- }
- .dimension-card:hover::before {
- opacity: 1;
- }
- .dim-title {
- font-size: var(--font-size-h3);
- font-weight: 700;
- margin-bottom: var(--space-sm);
- display: flex;
- align-items: center;
- gap: var(--space-xs);
- }
- .dim-emoji {
- font-size: 1.5rem;
- }
- .dim-desc {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- margin-bottom: var(--space-md);
- }
- .dim-points {
- display: flex;
- flex-wrap: wrap;
- gap: var(--space-xs);
- }
- .dim-points li {
- font-size: var(--font-size-tiny);
- font-weight: 500;
- color: var(--dim-color);
- background: var(--dim-bg);
- padding: .3em .9em;
- border-radius: var(--radius-full);
- }
- /* Make 2 items in last row centered */
- /* 5 items in 3-col grid: items 4 & 5 naturally wrap to row 2, cols 1 & 2 */
- /* ----------------------------------------------------------
- 11. Features Section
- ---------------------------------------------------------- */
- .section-features {
- background: var(--bg-section-alt);
- }
- .features-grid {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: var(--space-lg);
- }
- .feature-card {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-lg);
- padding: var(--space-xl);
- transition: all var(--transition-normal);
- text-align: center;
- }
- .feature-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- }
- .feature-icon {
- width: 56px;
- height: 56px;
- margin: 0 auto var(--space-md);
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: var(--radius-md);
- background: color-mix(in srgb, var(--fc) 10%, white);
- color: var(--fc);
- }
- .feature-card h3 {
- font-size: 1rem;
- font-weight: 700;
- margin-bottom: var(--space-sm);
- }
- .feature-card p {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.7;
- }
- /* Loop flow — 科学成长闭环 */
- .loop-flow {
- display: flex;
- align-items: flex-start;
- justify-content: center;
- gap: var(--space-md);
- flex-wrap: wrap;
- }
- .loop-step {
- flex: 1;
- min-width: 200px;
- max-width: 260px;
- background: var(--bg-surface);
- border-radius: var(--radius-lg);
- padding: var(--space-xl) var(--space-lg);
- border: 1px solid var(--color-border-light);
- text-align: left;
- transition: transform .3s ease, box-shadow .3s ease;
- }
- .loop-step:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-lg);
- }
- .loop-header {
- display: flex;
- align-items: center;
- gap: var(--space-sm);
- margin-bottom: var(--space-md);
- }
- .loop-icon {
- color: var(--step-color);
- flex-shrink: 0;
- display: flex;
- align-items: center;
- justify-content: center;
- width: 40px;
- height: 40px;
- border-radius: var(--radius-md);
- background: var(--step-bg);
- }
- .loop-step h3 {
- font-size: 1rem;
- font-weight: 700;
- color: var(--color-text-primary);
- margin-bottom: 0;
- }
- .loop-step p {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.7;
- margin-bottom: var(--space-md);
- }
- .loop-tags {
- display: flex;
- flex-wrap: wrap;
- justify-content: flex-start;
- gap: .3em;
- }
- .loop-tags span {
- font-size: 11px;
- padding: .2em .6em;
- border-radius: var(--radius-full);
- background: var(--step-bg);
- color: var(--step-color);
- font-weight: 500;
- }
- .loop-arrow {
- font-size: 1.5rem;
- color: var(--color-text-muted);
- align-self: center;
- flex-shrink: 0;
- }
- @media (max-width: 900px) {
- .loop-flow {
- flex-direction: column;
- align-items: center;
- }
- .loop-arrow {
- transform: rotate(90deg);
- margin: 0;
- }
- }
- /* ----------------------------------------------------------
- 12. AI Technology Section
- ---------------------------------------------------------- */
- .section-ai-tech {
- background: linear-gradient(180deg, var(--bg-surface) 0%, var(--bg-section-alt) 100%);
- }
- .ai-grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: var(--space-xl);
- max-width: 1000px;
- margin: 0 auto;
- }
- .ai-card {
- background: var(--bg-surface);
- border-radius: var(--radius-lg);
- padding: var(--space-2xl);
- border: 1px solid var(--color-border-light);
- transition: all var(--transition-normal);
- position: relative;
- overflow: hidden;
- }
- .ai-card::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 3px;
- background: var(--ai-color, var(--color-primary));
- opacity: .4;
- transition: opacity var(--transition-normal);
- }
- .ai-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- }
- .ai-card:hover::before {
- opacity: 1;
- }
- .ai-card-header {
- display: flex;
- align-items: center;
- gap: var(--space-sm);
- margin-bottom: var(--space-md);
- }
- .ai-card-icon {
- width: 48px;
- height: 48px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: var(--radius-md);
- background: var(--ai-bg, var(--color-primary-light));
- flex-shrink: 0;
- }
- .ai-card-badge {
- display: inline-block;
- padding: 2px 10px;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- color: var(--ai-color, var(--color-primary));
- background: color-mix(in srgb, var(--ai-color, var(--color-primary)) 10%, white);
- border-radius: 100px;
- white-space: nowrap;
- }
- .ai-card h3 {
- font-size: 1.05rem;
- font-weight: 700;
- color: var(--color-text-primary);
- margin-bottom: var(--space-sm);
- line-height: 1.4;
- }
- .ai-card p {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- margin: 0;
- }
- @media (max-width: 900px) {
- .ai-grid {
- grid-template-columns: repeat(2, 1fr);
- }
- }
- @media (max-width: 600px) {
- .ai-grid {
- grid-template-columns: 1fr;
- }
- }
- /* ----------------------------------------------------------
- 13. Roles Section
- ---------------------------------------------------------- */
- .section-roles {
- background: var(--bg-surface);
- }
- .roles-flow {
- display: flex;
- align-items: stretch;
- justify-content: center;
- gap: var(--space-xl);
- max-width: 960px;
- margin: 0 auto;
- }
- .role-card {
- flex: 1;
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-lg);
- padding: var(--space-xl);
- text-align: center;
- position: relative;
- transition: all var(--transition-normal);
- }
- .role-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- }
- .role-badge {
- display: inline-block;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- padding: .25em 1em;
- border-radius: var(--radius-full);
- margin-bottom: var(--space-md);
- }
- .role-parent .role-badge { background: var(--color-primary-light); color: var(--color-primary); }
- .role-teacher .role-badge { background: #F0F7FF; color: #3B82F6; }
- .role-admin .role-badge { background: #EEF0FF; color: #6366F1; }
- .role-member-tag {
- display: inline-block;
- font-size: .7rem;
- font-weight: 500;
- color: var(--color-primary);
- background: var(--color-primary-light);
- padding: .15em .7em;
- border-radius: var(--radius-full);
- vertical-align: middle;
- margin-left: .4em;
- }
- .role-icon {
- margin-bottom: var(--space-md);
- }
- .role-card h3 {
- font-size: var(--font-size-h3);
- font-weight: 700;
- margin-bottom: var(--space-sm);
- }
- .role-card > p {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.7;
- margin-bottom: var(--space-md);
- }
- .role-perms {
- text-align: left;
- }
- .role-perms li {
- font-size: var(--font-size-tiny);
- color: var(--color-text-secondary);
- padding: .35em 0;
- display: flex;
- align-items: flex-start;
- gap: var(--space-xs);
- }
- .role-perms li::before {
- content: '';
- width: 5px;
- height: 5px;
- border-radius: 50%;
- background: var(--color-primary);
- flex-shrink: 0;
- margin-top: 7px;
- }
- .role-teacher .role-perms li::before { background: #3B82F6; }
- .role-admin .role-perms li::before { background: #6366F1; }
- /* 客户角色 — 小程序二维码 */
- .role-qr {
- margin-top: var(--space-lg);
- padding-top: var(--space-md);
- border-top: 1px solid var(--color-border-light);
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: var(--space-xs);
- }
- .role-qr-code {
- display: block;
- width: 180px;
- height: 180px;
- border-radius: var(--radius-md);
- box-shadow: 0 2px 8px rgba(0,0,0,.10);
- transition: transform .3s ease, box-shadow .3s ease;
- }
- .role-qr-code:hover {
- transform: scale(1.08);
- box-shadow: 0 4px 16px rgba(0,0,0,.12);
- }
- .role-qr-label {
- font-size: var(--font-size-tiny);
- color: var(--color-text-secondary);
- font-weight: 500;
- letter-spacing: .05em;
- }
- .roles-connector {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: var(--space-xs);
- color: var(--color-text-muted);
- font-size: var(--font-size-tiny);
- font-weight: 500;
- flex-shrink: 0;
- align-self: center;
- }
- .connector-arrow {
- width: 2px;
- height: 40px;
- background: var(--color-border);
- position: relative;
- }
- .connector-arrow::after {
- content: '';
- position: absolute;
- bottom: -4px;
- left: 50%;
- transform: translateX(-50%);
- border: 5px solid transparent;
- border-top-color: var(--color-border);
- }
- /* ----------------------------------------------------------
- 14. Contact Section
- ---------------------------------------------------------- */
- .section-contact {
- background: linear-gradient(180deg, var(--bg-surface) 0%, var(--bg-body) 100%);
- }
- .contact-grid {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: var(--space-3xl);
- align-items: start;
- max-width: 800px;
- margin: 0 auto;
- }
- .contact-info {
- display: flex;
- flex-direction: column;
- gap: var(--space-lg);
- }
- .contact-item {
- display: flex;
- align-items: flex-start;
- gap: var(--space-md);
- padding: var(--space-lg);
- background: var(--bg-surface);
- border-radius: var(--radius-md);
- border: 1px solid var(--color-border-light);
- }
- .contact-item svg {
- flex-shrink: 0;
- margin-top: 2px;
- }
- .contact-item strong {
- display: block;
- font-size: var(--font-size-tiny);
- color: var(--color-text-muted);
- font-weight: 500;
- text-transform: uppercase;
- letter-spacing: .04em;
- margin-bottom: 2px;
- }
- .contact-item span {
- font-weight: 600;
- color: var(--color-text-primary);
- }
- .contact-cta {
- text-align: center;
- padding: var(--space-2xl);
- background: var(--bg-surface);
- border-radius: var(--radius-lg);
- border: 1px solid var(--color-border-light);
- }
- .contact-cta > p {
- font-size: var(--font-size-h3);
- font-weight: 700;
- margin-bottom: var(--space-xs);
- }
- .cta-sub {
- font-size: var(--font-size-small) !important;
- font-weight: 400 !important;
- color: var(--color-text-secondary);
- margin-bottom: var(--space-xl) !important;
- }
- .cta-cards {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: var(--space-sm);
- }
- .cta-card {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: var(--space-xs);
- padding: var(--space-md);
- background: var(--bg-body);
- border-radius: var(--radius-md);
- font-size: var(--font-size-tiny);
- font-weight: 600;
- border: 1px solid var(--color-border-light);
- transition: all var(--transition-fast);
- }
- .cta-card:hover {
- border-color: var(--color-primary);
- background: var(--color-primary-light);
- }
- .cta-card-icon {
- font-size: 1.5rem;
- }
- .cta-card-desc {
- font-weight: 400;
- color: var(--color-text-muted);
- font-size: var(--font-size-tiny);
- }
- /* ----------------------------------------------------------
- 15. Footer
- ---------------------------------------------------------- */
- .site-footer {
- background: var(--color-text-primary);
- color: #fff;
- padding: var(--space-3xl) 0 0;
- }
- .footer-inner {
- display: flex;
- justify-content: space-between;
- gap: var(--space-3xl);
- padding-bottom: var(--space-2xl);
- border-bottom: 1px solid rgba(255, 255, 255, .1);
- }
- .footer-brand .logo-text {
- color: #fff;
- font-size: 1.25rem;
- font-weight: 700;
- }
- .footer-brand .logo-tag {
- color: var(--color-primary);
- font-weight: 600;
- font-size: 1.25rem;
- }
- .footer-brand p {
- color: rgba(255, 255, 255, .6);
- font-size: var(--font-size-small);
- margin-top: var(--space-sm);
- max-width: 300px;
- line-height: 1.7;
- }
- .footer-links {
- display: flex;
- gap: var(--space-3xl);
- }
- .footer-col h4 {
- font-size: var(--font-size-tiny);
- font-weight: 600;
- text-transform: uppercase;
- letter-spacing: .06em;
- color: rgba(255, 255, 255, .5);
- margin-bottom: var(--space-md);
- }
- .footer-col ul li {
- margin-bottom: var(--space-sm);
- }
- .footer-col ul li a {
- font-size: var(--font-size-small);
- color: rgba(255, 255, 255, .7);
- transition: color var(--transition-fast);
- }
- .footer-col ul li a:hover {
- color: var(--color-primary);
- }
- .footer-bottom {
- text-align: center;
- padding: var(--space-lg) 0;
- }
- .footer-bottom p {
- font-size: var(--font-size-tiny);
- color: rgba(255, 255, 255, .4);
- }
- /* ----------------------------------------------------------
- 16. Scroll Animations (AOS-like)
- ---------------------------------------------------------- */
- .reveal {
- opacity: 0;
- transform: translateY(30px);
- transition: opacity .6s ease, transform .6s cubic-bezier(.4, 0, .2, 1);
- }
- .reveal.visible {
- opacity: 1;
- transform: translateY(0);
- }
- /* ----------------------------------------------------------
- 17. Responsive - Tablet
- ---------------------------------------------------------- */
- @media (max-width: 1024px) {
- .hero-inner {
- grid-template-columns: 1fr;
- text-align: center;
- }
- .hero-desc {
- margin-left: auto;
- margin-right: auto;
- }
- .hero-actions {
- justify-content: center;
- }
- .hero-visual {
- display: none;
- }
- .dimension-grid > .dimension-card {
- width: calc((100% - var(--space-xl)) / 2);
- }
- .features-grid {
- grid-template-columns: repeat(2, 1fr);
- }
- .roles-flow {
- gap: var(--space-md);
- }
- .role-card {
- padding: var(--space-lg) var(--space-md);
- }
- .roles-connector {
- flex-direction: row;
- gap: 0;
- }
- .connector-arrow {
- width: 40px;
- height: 2px;
- }
- .connector-arrow::after {
- top: 50%;
- left: auto;
- right: -4px;
- bottom: auto;
- transform: translateY(-50%);
- border: 5px solid transparent;
- border-left-color: var(--color-border);
- border-top-color: transparent;
- }
- .contact-grid {
- grid-template-columns: 1fr;
- }
- .product-stats {
- grid-template-columns: repeat(2, 1fr);
- }
- }
- /* ----------------------------------------------------------
- 18. Responsive - Mobile
- ---------------------------------------------------------- */
- @media (max-width: 768px) {
- :root {
- --space-section: 3.5rem;
- --header-height: 56px;
- }
- .container {
- padding: 0 var(--space-md);
- }
- /* Mobile Nav */
- .nav-toggle {
- display: flex;
- }
- .nav {
- position: fixed;
- top: var(--header-height);
- left: 0;
- right: 0;
- background: rgba(255, 249, 240, .98);
- backdrop-filter: blur(16px);
- -webkit-backdrop-filter: blur(16px);
- border-bottom: 1px solid var(--color-border-light);
- padding: var(--space-lg);
- transform: translateY(-110%);
- opacity: 0;
- transition: all var(--transition-normal);
- pointer-events: none;
- }
- .nav.open {
- transform: translateY(0);
- opacity: 1;
- pointer-events: auto;
- }
- .nav-list {
- flex-direction: column;
- gap: 0;
- }
- .nav-link {
- display: block;
- padding: var(--space-md) 0;
- border-bottom: 1px solid var(--color-border-light);
- width: 100%;
- }
- .nav-link::after {
- display: none;
- }
- /* Hero */
- .hero-title {
- font-size: clamp(1.75rem, 7vw, 2.5rem);
- }
- .hero-desc {
- font-size: var(--font-size-small);
- }
- .hero-actions {
- flex-direction: column;
- align-items: stretch;
- }
- .btn {
- justify-content: center;
- }
- /* Grids */
- .about-grid {
- grid-template-columns: 1fr;
- }
- .dimension-grid > .dimension-card {
- width: 100%;
- }
- .features-grid {
- grid-template-columns: 1fr;
- }
- .contact-grid {
- grid-template-columns: 1fr;
- }
- .product-stats {
- grid-template-columns: repeat(2, 1fr);
- }
- .cta-cards {
- grid-template-columns: 1fr;
- }
- .footer-inner {
- flex-direction: column;
- gap: var(--space-xl);
- }
- .footer-links {
- gap: var(--space-xl);
- }
- .product-quote {
- padding: var(--space-md) var(--space-lg);
- }
- .product-quote p {
- font-size: var(--font-size-small);
- }
- .stat-num {
- font-size: 1.5rem;
- }
- /* Roles row — tighter spacing */
- .roles-flow {
- gap: var(--space-sm);
- }
- .role-card {
- padding: var(--space-md);
- }
- .role-card h3 {
- font-size: calc(var(--font-size-h3) * 0.85);
- }
- .role-perms li {
- font-size: calc(var(--font-size-tiny) * 0.9);
- }
- .role-qr-code {
- width: 150px;
- height: 150px;
- }
- }
- @media (max-width: 480px) {
- .product-stats {
- grid-template-columns: repeat(2, 1fr);
- gap: var(--space-sm);
- }
- .stat {
- padding: var(--space-md);
- }
- .roles-flow {
- flex-direction: column;
- gap: var(--space-md);
- }
- .roles-connector {
- flex-direction: column;
- gap: var(--space-xs);
- }
- .connector-arrow {
- width: 2px;
- height: 40px;
- }
- .connector-arrow::after {
- top: auto;
- left: 50%;
- right: auto;
- bottom: -4px;
- transform: translateX(-50%);
- border: 5px solid transparent;
- border-top-color: var(--color-border);
- border-left-color: transparent;
- }
- .footer-links {
- flex-direction: column;
- gap: var(--space-lg);
- }
- }
- /* ----------------------------------------------------------
- 19. Logo
- ---------------------------------------------------------- */
- .logo-img {
- display: block;
- flex-shrink: 0;
- border-radius: 8px;
- width: 36px;
- height: 36px;
- object-fit: contain;
- }
- .footer-logo-img {
- display: block;
- flex-shrink: 0;
- border-radius: 10px;
- margin-bottom: var(--space-xs);
- object-fit: contain;
- }
- /* ----------------------------------------------------------
- 20. Wuxing Philosophy Section
- ---------------------------------------------------------- */
- .section-wuxing {
- background: linear-gradient(180deg, var(--bg-body) 0%, var(--bg-surface) 100%);
- }
- /* --- Diagram --- */
- .wuxing-diagram {
- position: relative;
- width: 100%;
- max-width: 480px;
- aspect-ratio: 1;
- margin: 0 auto var(--space-3xl);
- }
- .wuxing-diagram canvas {
- display: block;
- width: 100%;
- height: 100%;
- }
- .wuxing-diagram .taiji-center {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- pointer-events: none;
- z-index: 1;
- color: var(--color-text-secondary);
- }
- .wuxing-diagram .taiji-svg {
- display: block;
- animation: taiji-rotate 24s linear infinite;
- }
- @keyframes taiji-rotate {
- to { transform: rotate(360deg); }
- }
- /* --- Explanation Cards --- */
- .wuxing-explanations {
- max-width: 960px;
- margin: 0 auto;
- }
- .we-section {
- margin-bottom: var(--space-2xl);
- }
- .we-section:last-child {
- margin-bottom: 0;
- }
- .we-title {
- font-size: var(--font-size-h3);
- font-weight: 700;
- margin-bottom: var(--space-xs);
- }
- .we-sheng {
- color: var(--color-secondary);
- }
- .we-ke {
- color: var(--color-primary);
- }
- .we-subtitle {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- margin-bottom: var(--space-lg);
- }
- .we-grid {
- display: grid;
- grid-template-columns: repeat(5, 1fr);
- gap: var(--space-md);
- }
- .wuxing-card {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-md);
- padding: var(--space-lg);
- text-align: center;
- transition: all var(--transition-normal);
- position: relative;
- overflow: hidden;
- }
- .wuxing-card::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 3px;
- background: var(--wc-color);
- opacity: .5;
- transition: opacity var(--transition-normal);
- }
- .wuxing-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- }
- .wuxing-card:hover::before {
- opacity: 1;
- }
- .wc-arrow {
- display: inline-block;
- font-size: var(--font-size-tiny);
- font-weight: 700;
- color: var(--wc-color);
- padding: .15em .6em;
- border-radius: var(--radius-full);
- background: color-mix(in srgb, var(--wc-color) 10%, white);
- margin-bottom: var(--space-sm);
- }
- .wuxing-card h4 {
- font-size: 1rem;
- font-weight: 700;
- margin-bottom: var(--space-xs);
- color: var(--color-text-primary);
- }
- .wuxing-card p {
- font-size: var(--font-size-tiny);
- color: var(--color-text-secondary);
- line-height: 1.6;
- }
- @media (max-width: 1024px) {
- .we-grid {
- grid-template-columns: repeat(3, 1fr);
- }
- }
- @media (max-width: 600px) {
- .we-grid {
- grid-template-columns: repeat(2, 1fr);
- }
- }
- @media (max-width: 480px) {
- .we-grid {
- grid-template-columns: 1fr;
- }
- }
- /* Mobile: prevent dimension title wrapping */
- @media (max-width: 600px) {
- .dim-title {
- font-size: 1rem;
- flex-wrap: wrap;
- }
- .dim-emoji {
- font-size: 1.2rem;
- }
- .dim-element {
- font-size: 9px;
- }
- }
- /* ----------------------------------------------------------
- 21. Dimension Energy Tips
- ---------------------------------------------------------- */
- .dim-energy {
- margin-top: var(--space-md);
- padding-top: var(--space-md);
- border-top: 1px dashed var(--color-border-light);
- }
- .dim-energy h4 {
- font-size: var(--font-size-small);
- font-weight: 700;
- color: var(--dim-color);
- margin-bottom: var(--space-sm);
- }
- .dim-energy ul {
- display: flex;
- flex-direction: column;
- gap: var(--space-xs);
- }
- .dim-energy ul li {
- font-size: var(--font-size-tiny);
- color: var(--color-text-secondary);
- padding: .25em 0;
- display: flex;
- align-items: center;
- gap: var(--space-xs);
- }
- .dim-energy ul li::before {
- content: '✦';
- color: var(--dim-color);
- font-size: 10px;
- flex-shrink: 0;
- }
- /* Dim element badge */
- .dim-element {
- display: inline-block;
- font-size: 10px;
- font-weight: 600;
- color: #fff;
- padding: .15em .6em;
- border-radius: var(--radius-full);
- margin-left: var(--space-xs);
- vertical-align: middle;
- letter-spacing: .04em;
- white-space: nowrap;
- }
- /* Prevent role name (家长/孩子/成长规划师) from breaking across lines */
- .role-perms li strong {
- white-space: nowrap;
- }
- /* Responsive: Wuxing diagram — handled by aspect-ratio and Canvas redraw */
- @media (max-width: 600px) {
- .wuxing-diagram {
- max-width: 360px;
- }
- }
|