| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769 |
- /* ============================================================
- 亿图腾 · 浠艾福 — 企业官网样式表
- 设计系统基于 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 proximity;
- }
- /* Sections gently align when scrolling stops */
- section[id] {
- scroll-snap-align: start;
- }
- 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);
- }
- .btn-accent {
- background: linear-gradient(135deg, var(--color-primary) 0%, #6BB5E0 100%);
- color: #fff;
- border-color: var(--color-primary);
- box-shadow: 0 4px 16px rgba(74, 155, 215, .3);
- }
- .btn-accent:hover {
- transform: translateY(-2px);
- box-shadow: 0 8px 28px rgba(74, 155, 215, .45);
- background: linear-gradient(135deg, var(--color-primary-hover) 0%, #5DABD6 100%);
- }
- /* 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:
- url(../img/hero-family-bg.png) center/cover no-repeat,
- 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-bg::after {
- content: '';
- position: absolute;
- inset: 0;
- background: linear-gradient(
- to right,
- rgba(254, 249, 240, 0.82) 0%,
- rgba(254, 249, 240, 0.65) 45%,
- rgba(254, 249, 240, 0.10) 70%,
- transparent 100%
- );
- 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); }
- }
- /* Stats Banner */
- .stats-banner {
- background: #EEF5FB;
- padding: var(--space-2xl) 0;
- border-bottom: 1px solid var(--color-border-light);
- }
- .stats-banner .container {
- display: flex;
- justify-content: center;
- align-items: center;
- gap: var(--space-3xl);
- }
- .stats-item {
- text-align: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: var(--space-xs);
- }
- .stat-number {
- font-size: 2.5rem;
- font-weight: 800;
- color: #1a4a6e;
- line-height: 1.2;
- }
- .stat-label {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- font-weight: 500;
- }
- @media (max-width: 768px) {
- .stats-banner .container {
- flex-direction: column;
- gap: var(--space-xl);
- }
- .stat-number {
- font-size: 2rem;
- }
- }
- /* ----------------------------------------------------------
- 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;
- }
- /* 幸福三支柱 */
- .section-pillars {
- background: linear-gradient(180deg, var(--bg-body) 0%, var(--color-primary-light) 100%);
- }
- .pillars-grid {
- display: flex;
- flex-direction: column;
- gap: var(--space-xl);
- max-width: 960px;
- margin: 0 auto;
- }
- .pillar-card {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-lg);
- padding: var(--space-2xl);
- transition: all var(--transition-normal);
- position: relative;
- overflow: hidden;
- }
- .pillar-card::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 4px;
- background: var(--pillar-color, var(--color-primary));
- opacity: .6;
- transition: opacity var(--transition-normal);
- }
- .pillar-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- }
- .pillar-card:hover::before {
- opacity: 1;
- }
- .pillar-main {
- display: flex;
- align-items: center;
- gap: var(--space-xl);
- margin-bottom: var(--space-lg);
- }
- .pillar-left {
- flex-shrink: 0;
- min-width: 160px;
- text-align: center;
- }
- .pillar-name {
- font-size: var(--font-size-h3);
- font-weight: 700;
- color: var(--pillar-color, var(--color-primary));
- margin-bottom: var(--space-xs);
- }
- .pillar-subtitle {
- font-size: var(--font-size-tiny);
- color: var(--color-text-muted);
- font-weight: 500;
- }
- .pillar-arrow {
- flex-shrink: 0;
- font-size: 1.5rem;
- color: var(--color-text-muted);
- }
- .pillar-dimensions {
- display: flex;
- gap: var(--space-md);
- flex-wrap: wrap;
- }
- .pillar-dim-badge {
- display: inline-flex;
- align-items: center;
- gap: var(--space-xs);
- padding: .5em 1.25em;
- border-radius: var(--radius-full);
- font-size: var(--font-size-small);
- font-weight: 600;
- color: #fff;
- background: var(--dim-color);
- white-space: nowrap;
- }
- .pillar-dim-badge .dim-sub {
- font-weight: 400;
- font-size: var(--font-size-tiny);
- opacity: .85;
- }
- .pillar-interpretation {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- padding-top: var(--space-lg);
- border-top: 1px dashed var(--color-border-light);
- }
- .pillar-interpretation strong {
- color: var(--color-text-primary);
- }
- /* Pillar-specific colors */
- .pillar-card--material { --pillar-color: #FF8C42; }
- .pillar-card--respect { --pillar-color: #6366F1; }
- .pillar-card--legacy { --pillar-color: #FF6B9D; }
- /* Responsive */
- @media (max-width: 768px) {
- .pillar-main {
- flex-direction: column;
- text-align: center;
- gap: var(--space-md);
- }
- .pillar-arrow {
- transform: rotate(90deg);
- }
- .pillar-dimensions {
- justify-content: center;
- }
- .pillar-left {
- min-width: auto;
- }
- }
- @media (max-width: 480px) {
- .pillar-card {
- padding: var(--space-lg);
- }
- .pillar-dim-badge {
- padding: .4em 1em;
- font-size: var(--font-size-tiny);
- }
- .pillar-dimensions {
- flex-direction: column;
- align-items: center;
- }
- }
- /* ----------------------------------------------------------
- 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);
- }
- .contact-qr img {
- width: 200px;
- height: auto;
- border-radius: var(--radius-md);
- display: block;
- margin: 0 auto;
- }
- .contact-qr span {
- display: block;
- margin-top: var(--space-sm);
- font-size: var(--font-size-tiny);
- color: var(--color-text-muted);
- }
- @media (max-width: 768px) {
- .contact-qr img {
- width: 160px;
- }
- }
- /* Testimonials Section */
- .section-testimonials { background: var(--bg-section-alt); }
- .testimonials-grid {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: var(--space-lg);
- max-width: 960px;
- margin: 0 auto;
- }
- .testimonial-card {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-lg);
- padding: var(--space-xl);
- border-left: 4px solid var(--color-primary);
- transition: all var(--transition-normal);
- }
- .testimonial-card:hover {
- transform: translateY(-4px);
- box-shadow: var(--shadow-md);
- border-color: transparent;
- border-left-color: var(--color-primary);
- }
- .testimonial-stars { display: flex; gap: 2px; margin-bottom: var(--space-md); }
- .testimonial-text {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- font-style: italic;
- margin-bottom: var(--space-lg);
- }
- .testimonial-author {
- border-top: 1px solid var(--color-border-light);
- padding-top: var(--space-md);
- }
- .testimonial-name { font-size: var(--font-size-tiny); font-weight: 600; color: var(--color-text-primary); }
- @media (max-width: 900px) { .testimonials-grid { grid-template-columns: repeat(2, 1fr); } }
- @media (max-width: 600px) { .testimonials-grid { grid-template-columns: 1fr; } }
- /* ----------------------------------------------------------
- 14.5. FAQ Section
- ---------------------------------------------------------- */
- .section-faq {
- background: var(--bg-section-alt);
- }
- .faq-list {
- max-width: 800px;
- margin: 0 auto;
- display: flex;
- flex-direction: column;
- gap: var(--space-md);
- }
- .faq-item {
- background: var(--bg-surface);
- border: 1px solid var(--color-border-light);
- border-radius: var(--radius-md);
- overflow: hidden;
- transition: all var(--transition-normal);
- }
- .faq-item:hover {
- border-color: var(--color-primary);
- box-shadow: var(--shadow-sm);
- }
- .faq-item[open] {
- border-color: var(--color-primary);
- box-shadow: var(--shadow-md);
- }
- .faq-item > summary {
- padding: var(--space-lg) var(--space-xl);
- font-weight: 600;
- font-size: var(--font-size-body);
- color: var(--color-text-primary);
- cursor: pointer;
- list-style: none;
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: var(--space-md);
- transition: color var(--transition-fast);
- }
- .faq-item > summary::-webkit-details-marker {
- display: none;
- }
- .faq-item > summary::after {
- content: '+';
- font-size: 1.25rem;
- font-weight: 700;
- color: var(--color-primary);
- flex-shrink: 0;
- transition: transform var(--transition-fast);
- }
- .faq-item[open] > summary::after {
- content: '−';
- }
- .faq-item > summary:hover {
- color: var(--color-primary);
- }
- .faq-answer {
- padding: 0 var(--space-xl) var(--space-lg);
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- border-top: 1px solid var(--color-border-light);
- padding-top: var(--space-md);
- }
- @media (max-width: 768px) {
- .faq-item > summary {
- padding: var(--space-md) var(--space-lg);
- font-size: var(--font-size-small);
- }
- .faq-answer {
- padding: 0 var(--space-lg) var(--space-md);
- 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(245, 250, 254, .97);
- 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;
- }
- /* ----------------------------------------------------------
- 22. Product Feature Bullet Lists
- ---------------------------------------------------------- */
- .product-summary {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.6;
- margin-bottom: var(--space-sm);
- }
- .product-features {
- list-style: none;
- padding: 0;
- margin: 0 0 var(--space-md);
- }
- .product-features li {
- position: relative;
- padding-left: 1.25em;
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- }
- .product-features li::before {
- content: '·';
- position: absolute;
- left: .35em;
- color: var(--product-color, var(--color-primary));
- font-weight: 700;
- font-size: 1.1em;
- }
- /* ----------------------------------------------------------
- 23. Floating CTA Button
- ---------------------------------------------------------- */
- .float-cta {
- position: fixed;
- bottom: 2rem;
- right: 2rem;
- z-index: 999;
- display: flex;
- flex-direction: column;
- align-items: flex-end;
- gap: var(--space-sm);
- }
- .float-cta-btn {
- width: 52px;
- height: 52px;
- border-radius: 50%;
- border: none;
- background: var(--color-primary);
- color: #fff;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- box-shadow: 0 4px 16px rgba(74, 155, 215, .35);
- transition: all var(--transition-fast);
- position: relative;
- }
- .float-cta-btn:hover {
- background: var(--color-primary-hover);
- transform: scale(1.08);
- box-shadow: 0 6px 24px rgba(74, 155, 215, .45);
- }
- .float-cta-btn:active {
- transform: scale(.95);
- }
- .float-cta-popup {
- position: absolute;
- bottom: 64px;
- right: 0;
- opacity: 0;
- visibility: hidden;
- transform: translateY(8px) scale(.95);
- transition: all var(--transition-normal);
- transform-origin: bottom right;
- }
- .float-cta-popup.open {
- opacity: 1;
- visibility: visible;
- transform: translateY(0) scale(1);
- }
- .float-cta-popup-inner {
- background: var(--bg-surface);
- border-radius: var(--radius-lg);
- box-shadow: var(--shadow-xl);
- padding: var(--space-lg);
- text-align: center;
- min-width: 200px;
- position: relative;
- }
- .float-cta-close {
- position: absolute;
- top: 6px;
- right: 10px;
- border: none;
- background: none;
- font-size: 1.4rem;
- color: var(--color-text-muted);
- cursor: pointer;
- line-height: 1;
- padding: 4px;
- }
- .float-cta-close:hover {
- color: var(--color-text-primary);
- }
- .float-cta-title {
- font-size: var(--font-size-small);
- font-weight: 600;
- color: var(--color-text-primary);
- margin-bottom: var(--space-sm);
- }
- .float-cta-qr {
- margin: 0 auto var(--space-sm);
- width: 72px;
- height: 72px;
- display: flex;
- align-items: center;
- justify-content: center;
- background: var(--bg-body);
- border-radius: var(--radius-sm);
- }
- .float-cta-tip {
- font-size: var(--font-size-tiny);
- color: var(--color-text-muted);
- }
- /* ----------------------------------------------------------
- 24. Cookie Consent Banner
- ---------------------------------------------------------- */
- .cookie-consent {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- background: var(--color-text-primary);
- color: #fff;
- padding: var(--space-md) var(--space-xl);
- display: flex;
- align-items: center;
- justify-content: center;
- gap: var(--space-lg);
- z-index: 1000;
- transform: translateY(100%);
- transition: transform var(--transition-normal);
- flex-wrap: wrap;
- }
- .cookie-consent.visible {
- transform: translateY(0);
- }
- .cookie-consent-text {
- font-size: var(--font-size-small);
- color: rgba(255, 255, 255, .85);
- line-height: 1.5;
- }
- .cookie-consent-text a {
- color: var(--color-accent);
- text-decoration: underline;
- }
- .cookie-consent-btn {
- background: var(--color-primary);
- color: #fff;
- border: none;
- border-radius: var(--radius-full);
- padding: .5em 1.5em;
- font-size: var(--font-size-small);
- cursor: pointer;
- white-space: nowrap;
- transition: background var(--transition-fast);
- flex-shrink: 0;
- }
- .cookie-consent-btn:hover {
- background: var(--color-primary-hover);
- }
- /* ----------------------------------------------------------
- 25. Footer Enhancements
- ---------------------------------------------------------- */
- .footer-contact li {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.8;
- }
- .footer-legal {
- margin-top: var(--space-xs);
- font-size: var(--font-size-tiny);
- color: var(--color-text-muted);
- display: flex;
- gap: var(--space-md);
- justify-content: center;
- flex-wrap: wrap;
- }
- .footer-legal a {
- color: var(--color-text-muted);
- text-decoration: underline;
- }
- .footer-legal a:hover {
- color: var(--color-primary);
- }
- /* Responsive footer bottom on small screens */
- @media (max-width: 480px) {
- .footer-legal {
- flex-direction: column;
- gap: var(--space-xs);
- align-items: center;
- }
- .float-cta {
- bottom: 1rem;
- right: 1rem;
- }
- .float-cta-btn {
- width: 46px;
- height: 46px;
- }
- .cookie-consent {
- padding: var(--space-sm) var(--space-md);
- flex-direction: column;
- text-align: center;
- }
- }
- /* ----------------------------------------------------------
- 26. Knowledge Base Section
- ---------------------------------------------------------- */
- .section-knowledge {
- background: var(--bg-section-alt);
- }
- .knowledge-grid {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: var(--space-xl);
- margin-top: var(--space-xl);
- }
- .knowledge-card {
- background: var(--bg-surface);
- border-radius: var(--radius-lg);
- overflow: hidden;
- box-shadow: var(--shadow-sm);
- transition: all var(--transition-normal);
- display: flex;
- flex-direction: column;
- }
- .knowledge-card:hover {
- box-shadow: var(--shadow-md);
- transform: translateY(-3px);
- }
- .knowledge-card-cover {
- width: 100%;
- height: 180px;
- object-fit: cover;
- background: var(--color-primary-light);
- display: flex;
- align-items: center;
- justify-content: center;
- color: var(--color-primary);
- font-size: 2.5rem;
- }
- .knowledge-card-body {
- padding: var(--space-lg);
- flex: 1;
- display: flex;
- flex-direction: column;
- }
- .knowledge-card-category {
- display: inline-block;
- font-size: var(--font-size-tiny);
- font-weight: 600;
- color: var(--color-primary);
- background: var(--color-primary-light);
- padding: .2em .8em;
- border-radius: var(--radius-full);
- margin-bottom: var(--space-sm);
- align-self: flex-start;
- }
- .knowledge-card-title {
- font-size: 1.05rem;
- font-weight: 700;
- color: var(--color-text-primary);
- line-height: 1.5;
- margin-bottom: var(--space-sm);
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- overflow: hidden;
- }
- .knowledge-card-summary {
- font-size: var(--font-size-small);
- color: var(--color-text-secondary);
- line-height: 1.7;
- flex: 1;
- display: -webkit-box;
- -webkit-line-clamp: 3;
- -webkit-box-orient: vertical;
- overflow: hidden;
- margin-bottom: var(--space-md);
- }
- .knowledge-card-meta {
- font-size: var(--font-size-tiny);
- color: var(--color-text-muted);
- display: flex;
- align-items: center;
- gap: var(--space-md);
- padding-top: var(--space-sm);
- border-top: 1px solid var(--color-border-light);
- }
- .knowledge-card-meta .dimension-tag {
- display: inline-block;
- font-size: 10px;
- font-weight: 600;
- padding: .15em .5em;
- border-radius: var(--radius-full);
- color: #fff;
- }
- .knowledge-footer {
- text-align: center;
- margin-top: var(--space-2xl);
- }
- .knowledge-tip {
- font-size: var(--font-size-small);
- color: var(--color-text-muted);
- }
- .knowledge-tip strong {
- color: var(--color-primary);
- }
- .knowledge-loading {
- grid-column: 1 / -1;
- text-align: center;
- padding: var(--space-3xl) 0;
- }
- .knowledge-loading-text {
- font-size: var(--font-size-small);
- color: var(--color-text-muted);
- }
- .knowledge-error {
- grid-column: 1 / -1;
- text-align: center;
- padding: var(--space-xl) 0;
- color: var(--color-text-muted);
- font-size: var(--font-size-small);
- }
- @media (max-width: 600px) {
- .knowledge-grid {
- grid-template-columns: 1fr;
- }
- .knowledge-card-cover {
- height: 140px;
- }
- }
- /* Responsive: Wuxing diagram — handled by aspect-ratio and Canvas redraw */
- @media (max-width: 600px) {
- .wuxing-diagram {
- max-width: 360px;
- }
- }
|