.portfolio-page .inner-page{min-height:100svh;padding-block:175px 100px}.portfolio-page .page-heading{border-bottom:1px solid var(--line);margin-bottom:36px;padding-bottom:46px}.portfolio-page .eyebrow{letter-spacing:.09em;color:var(--muted);font-size:.7rem;font-weight:400;line-height:1.8;display:block}.portfolio-page .page-heading h1{letter-spacing:-.045em;margin-top:14px;font-size:2.7rem;font-weight:500;line-height:1.35}.portfolio-page .page-heading>p{max-width:730px;color:var(--muted);margin-top:22px;font-size:1rem;line-height:1.95}.portfolio-page .accent,.portfolio-page .serif-accent{color:inherit;font-family:inherit;font-weight:inherit}.portfolio-page .text-link{color:var(--muted);border:0;align-items:center;gap:18px;padding-block:8px;font-size:.9rem;font-weight:400;line-height:1.6;display:inline-flex}.portfolio-page .text-link:hover{color:var(--ink)}.portfolio-page .button{border:1px solid var(--line);min-height:44px;color:var(--ink);background:0 0;border-radius:25px;justify-content:space-between;align-items:center;gap:24px;padding:10px 18px;font-size:.85rem;line-height:1.6;transition:background .2s,border-color .2s;display:inline-flex}.portfolio-page .button:hover{background:var(--surface);border-color:var(--muted)}.portfolio-page .button.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.portfolio-page .tags{flex-wrap:wrap;gap:8px 18px;margin-top:22px;display:flex}.portfolio-page .tags span{color:var(--muted);background:0 0;border-radius:0;padding:0;font-size:.78rem;line-height:1.8}.portfolio-page .section-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px;display:flex}.portfolio-page .section-heading h2{margin-top:12px;font-size:1.65rem;font-weight:500;line-height:1.5}.portfolio-page .closing-note{border-top:1px solid var(--line);max-width:none;margin-top:64px;padding-top:32px}.portfolio-page .closing-note h2{margin-top:12px;font-size:1.35rem;font-weight:500;line-height:1.6}.portfolio-page .closing-note p{color:var(--muted);max-width:850px;margin-top:14px;font-size:.95rem;line-height:1.95}.portfolio-page .closing-note .text-link{margin-top:16px}.portfolio-page .work-count{color:var(--ink);justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;font-size:.85rem;display:flex}.portfolio-page .work-count .muted{color:var(--muted);letter-spacing:.06em;margin-left:12px;font-size:.68rem}.portfolio-page .project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:44px 32px;display:grid}.portfolio-page .project-card{min-width:0}.portfolio-page .project-cover{text-align:left;color:#253347;isolation:isolate;background:#e7ebf1;border-radius:8px;width:100%;height:310px;padding:0;transition:transform .25s;display:block;position:relative;overflow:hidden}.portfolio-page .project-cover:hover{transform:translateY(-3px)}.portfolio-page .weather-art,.portfolio-page .portfolio-art{flex-direction:column;height:100%;padding:25px 28px;display:flex}.portfolio-page .art-top,.portfolio-page .art-bottom{z-index:1;letter-spacing:.07em;justify-content:space-between;gap:12px;font-size:.6rem;line-height:1.7;display:flex;position:relative}.portfolio-page .art-bottom{margin-top:auto}.portfolio-page .weather-title{align-items:center;gap:22px;margin-top:22px;font-size:2.6rem;line-height:1.3;display:flex}.portfolio-page .weather-glyph{color:#667fa1;font-size:3.8rem;line-height:1}.portfolio-page .weather-sub{margin-top:7px;font-size:.78rem;line-height:1.8;display:block}.portfolio-page .weather-chart{align-items:flex-end;gap:7px;height:95px;margin:15px 0 18px;display:flex}.portfolio-page .weather-chart i{background:#99abc5;border-radius:3px 3px 0 0;flex:1;min-height:5px}.portfolio-page .weather-chart i:nth-child(3n){background:#617fa9}.portfolio-page .project-cover.downstream{color:#253347;background:#e5e9ed;padding:25px 28px}.portfolio-page .downstream>.art-top{position:absolute;inset:25px 28px auto}.portfolio-page .downstream>img{border:1px solid #ccd4dd;border-radius:8px;width:94%;max-width:none;position:absolute;top:83px;left:12%;box-shadow:0 12px 30px #17202d12}.portfolio-page .art-footnote{z-index:2;background:#e5e9ede8;padding:3px 7px;font-size:.65rem;position:absolute;bottom:13px;left:22px}.portfolio-page .project-cover.portfolio{color:#17191d;background:#eaeaf0}.portfolio-page .portfolio-monogram{letter-spacing:-.045em;flex-direction:column;gap:7px;margin:auto 0;font-family:inherit;font-size:2rem;font-style:normal;font-weight:600;line-height:1.15;display:flex}.portfolio-page .portfolio-monogram strong{font-size:3.5rem;font-weight:600}.portfolio-page .portfolio-monogram>span{color:inherit}.portfolio-page .cover-action{color:#17191d;opacity:0;z-index:3;background:#fff;border-radius:50%;place-items:center;width:36px;height:36px;font-size:1.15rem;transition:opacity .2s,transform .2s;display:grid;position:absolute;bottom:48px;right:18px;transform:translateY(3px)}.portfolio-page .project-cover:hover .cover-action,.portfolio-page .project-cover:focus-visible .cover-action{opacity:1;transform:none}.portfolio-page .project-meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px 16px;margin-top:20px;font-size:.76rem;line-height:1.7;display:flex}.portfolio-page .project-card h3{margin:10px 0 0;font-size:1.35rem;font-weight:500;line-height:1.6}.portfolio-page .project-card h3 button{text-align:left;width:100%;font:inherit;justify-content:space-between;gap:18px;padding:0;display:flex}.portfolio-page .project-card h3 button>span{color:var(--muted);font-size:1rem;font-weight:400}.portfolio-page .project-card>p{max-width:none;color:var(--muted);margin-top:11px;font-size:.95rem;line-height:1.9}.portfolio-page .project-dialog{border:1px solid var(--line);background:var(--bg);width:min(700px,100% - 40px);max-height:calc(100dvh - 64px);color:var(--ink);border-radius:16px;padding:32px 36px;overflow:auto;box-shadow:0 20px 80px #0002}.portfolio-page .project-dialog::backdrop{backdrop-filter:blur(5px);background:#17191d88}.portfolio-page .dialog-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px;display:flex}.portfolio-page .dialog-heading .icon-button{font-size:1.7rem}.portfolio-page .project-dialog h2{font-size:1.8rem;font-weight:500;line-height:1.5}.portfolio-page .dialog-subtitle{color:var(--muted);margin-top:14px;font-size:1rem;line-height:1.8}.portfolio-page .dialog-body{color:var(--muted);margin-top:28px;font-size:.95rem;line-height:1.95}.portfolio-page .dialog-body p+p{margin-top:16px}.portfolio-page .teaching-note{border-block:1px solid var(--line);margin-block:27px;padding-block:23px}.portfolio-page .teaching-note p{color:var(--muted);margin-top:12px;font-size:.95rem;line-height:1.9}.portfolio-page .teaching-note small{color:var(--muted);margin-top:12px;font-size:.75rem;line-height:1.8;display:block}.portfolio-page .about-grid{grid-template-columns:160px minmax(0,1fr);align-items:start;gap:44px;padding-block:4px 32px;display:grid}.portfolio-page .identity-panel{background:0 0;border:0;border-radius:0;min-width:0;height:auto;padding:0;overflow:visible}.portfolio-page .identity-panel h2{letter-spacing:-.025em;flex-direction:column;gap:4px;font-size:1.7rem;font-weight:500;line-height:1.5;display:flex}.portfolio-page .identity-panel h2 span{font:inherit;color:inherit}.portfolio-page .identity-panel p{color:var(--muted);margin-top:22px;font-size:.82rem;line-height:1.9}.portfolio-page .about-copy{min-width:0}.portfolio-page .about-copy>p{max-width:850px;color:var(--muted);font-size:1rem;line-height:2}.portfolio-page .about-copy>p+p{margin-top:18px}.portfolio-page .print-button{margin-top:25px}.portfolio-page .background-section{margin-top:35px}.portfolio-page .background-list{margin:0}.portfolio-page .background-list>div{border-top:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);gap:44px;padding-block:27px;display:grid}.portfolio-page .background-list dt{color:var(--ink);font-size:.86rem;font-weight:500;line-height:1.9}.portfolio-page .background-list dd{min-width:0;color:var(--muted);margin:0}.portfolio-page .background-list h3{color:var(--muted);font-size:1rem;font-weight:500;line-height:1.9}.portfolio-page .background-list p{color:var(--muted);margin-top:8px;font-size:.9rem;line-height:1.95}.portfolio-page .english-summary{border-top:1px solid var(--line);background:0 0;border-radius:0;margin-top:24px;padding:32px 0 0}.portfolio-page .english-summary h2{letter-spacing:-.025em;margin-top:15px;font-size:1.7rem;font-weight:500;line-height:1.5}.portfolio-page .english-summary p{max-width:900px;color:var(--muted);margin-top:19px;font-size:1rem;line-height:1.95}.portfolio-page .about-next{border-top:1px solid var(--line);flex-wrap:wrap;gap:16px 32px;margin-top:32px;padding-top:22px;display:flex}.portfolio-page .notes-list{border-top:0}.portfolio-page .note-entry{border-bottom:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);gap:44px;padding:4px 0 36px;display:grid}.portfolio-page .note-entry+.note-entry{padding-top:32px}.portfolio-page .note-entry time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem;line-height:2}.portfolio-page .note-entry h2{letter-spacing:-.025em;margin:0 0 18px;font-size:1.35rem;font-weight:500;line-height:1.6}.portfolio-page .note-entry p{max-width:800px;color:var(--muted);margin-top:10px;font-size:1rem;line-height:1.95}.portfolio-page .teaching-principles{grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;padding:0 0 35px;display:grid}.portfolio-page .teaching-principles>div>span{color:var(--muted);font-size:.75rem}.portfolio-page .teaching-principles h2{margin-top:10px;font-size:1.1rem;font-weight:500;line-height:1.7}.portfolio-page .teaching-principles p{color:var(--muted);margin-top:9px;font-size:.9rem;line-height:1.9}.portfolio-page .lesson-detail{border-top:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);gap:44px;padding-block:35px;display:grid}.portfolio-page .lesson-detail>*{min-width:0}.portfolio-page .lesson-sidebar{flex-direction:column;gap:17px;display:flex}.portfolio-page .pill{border:1px solid var(--line);width:fit-content;color:var(--muted);border-radius:20px;padding:4px 10px;font-size:.7rem;line-height:1.7;display:inline-block}.portfolio-page .lesson-symbol{border:1px solid var(--line);background:var(--surface);width:78px;height:78px;color:var(--muted);border-radius:14px;place-items:center;margin-block:2px;font-size:2.6rem;line-height:1;display:grid}.portfolio-page .lesson-sidebar>p{color:var(--muted);font-size:.83rem;line-height:2}.portfolio-page .lesson-main h2{margin-top:13px;font-size:1.7rem;font-weight:500;line-height:1.5}.portfolio-page .lesson-intro{color:var(--muted);margin-top:16px;font-size:1rem;line-height:1.95}.portfolio-page .lesson-description{margin:26px 0 0}.portfolio-page .lesson-description>div{border-top:1px solid var(--line);grid-template-columns:85px minmax(0,1fr);gap:22px;padding-block:20px;display:grid}.portfolio-page .lesson-description dt{font-size:.86rem;font-weight:500;line-height:1.95}.portfolio-page .lesson-description dd{color:var(--muted);margin:0;font-size:.95rem;line-height:1.95}.portfolio-page .lesson-description ol{margin:0;padding-left:1.3em}.portfolio-page .lesson-description li+li{margin-top:8px}.portfolio-page .not-found{min-height:100svh;padding-block:190px 100px}.portfolio-page .not-found h1{margin-top:25px;font-size:2.7rem;font-weight:500}.portfolio-page .not-found p{color:var(--muted);margin-block:24px;font-size:1rem;line-height:1.9}@media (width<=1000px){.portfolio-page .about-grid,.portfolio-page .background-list>div,.portfolio-page .note-entry,.portfolio-page .lesson-detail{gap:32px}.portfolio-page .project-cover{height:285px}.portfolio-page .portfolio-monogram strong{font-size:2.8rem}.portfolio-page .weather-art,.portfolio-page .portfolio-art{padding:22px}}@media (width<=700px){.portfolio-page .inner-page{padding-block:125px 65px}.portfolio-page .page-heading{margin-bottom:28px;padding-bottom:29px}.portfolio-page .page-heading h1{margin-top:12px;font-size:2.2rem}.portfolio-page .page-heading>p{margin-top:17px;font-size:.93rem;line-height:1.95}.portfolio-page .eyebrow{letter-spacing:.055em;font-size:.64rem}.portfolio-page .project-grid{grid-template-columns:minmax(0,1fr);gap:35px}.portfolio-page .project-cover{height:280px}.portfolio-page .project-meta{font-size:.71rem}.portfolio-page .project-card h3{font-size:1.25rem}.portfolio-page .project-card>p{font-size:.93rem}.portfolio-page .cover-action{opacity:1;transform:none}.portfolio-page .work-count .muted{display:none}.portfolio-page .weather-title{font-size:2.3rem}.portfolio-page .weather-chart{height:76px;margin-top:10px}.portfolio-page .portfolio-monogram strong{font-size:3rem}.portfolio-page .art-top,.portfolio-page .art-bottom{letter-spacing:.035em;font-size:.55rem}.portfolio-page .project-dialog{border-radius:14px;width:calc(100% - 28px);max-height:calc(100dvh - 40px);padding:22px}.portfolio-page .project-dialog h2{font-size:1.5rem}.portfolio-page .dialog-subtitle,.portfolio-page .dialog-body,.portfolio-page .teaching-note p{font-size:.93rem}.portfolio-page .closing-note{margin-top:44px;padding-top:26px}.portfolio-page .closing-note h2{font-size:1.2rem}.portfolio-page .closing-note p{font-size:.93rem}.portfolio-page .about-grid{grid-template-columns:minmax(0,1fr);gap:23px;padding-bottom:10px}.portfolio-page .identity-panel h2{font-size:1.65rem}.portfolio-page .identity-panel p{margin-top:13px}.portfolio-page .about-copy>p,.portfolio-page .english-summary p{font-size:.93rem}.portfolio-page .background-section{margin-top:34px}.portfolio-page .section-heading h2{font-size:1.4rem}.portfolio-page .background-list>div{grid-template-columns:80px minmax(0,1fr);gap:24px;padding-block:23px}.portfolio-page .background-list dt{font-size:.79rem}.portfolio-page .background-list h3{font-size:.93rem}.portfolio-page .background-list p{font-size:.84rem}.portfolio-page .english-summary h2{font-size:1.45rem}.portfolio-page .note-entry{grid-template-columns:minmax(0,1fr);gap:13px}.portfolio-page .note-entry time{font-size:.78rem}.portfolio-page .note-entry h2{font-size:1.2rem}.portfolio-page .note-entry p{font-size:.93rem}.portfolio-page .teaching-principles{grid-template-columns:minmax(0,1fr);gap:24px;padding-bottom:28px}.portfolio-page .teaching-principles h2{margin-top:5px;font-size:1rem}.portfolio-page .teaching-principles p{margin-top:5px;font-size:.88rem}.portfolio-page .lesson-detail{grid-template-columns:minmax(0,1fr);gap:25px;padding-block:29px}.portfolio-page .lesson-sidebar{grid-template-columns:minmax(0,1fr) auto;gap:12px 20px;display:grid}.portfolio-page .lesson-sidebar>.pill{grid-area:2/1}.portfolio-page .lesson-sidebar>p{grid-area:3/1}.portfolio-page .lesson-symbol{grid-area:2/2/4;margin:0}.portfolio-page .lesson-main h2{font-size:1.5rem}.portfolio-page .lesson-intro{font-size:.93rem}.portfolio-page .lesson-description>div{grid-template-columns:64px minmax(0,1fr);gap:16px;padding-block:17px}.portfolio-page .lesson-description dt{font-size:.79rem}.portfolio-page .lesson-description dd{font-size:.9rem}.portfolio-page .not-found{padding-block:145px 65px}.portfolio-page .not-found h1{font-size:2rem}}@media (width<=370px){.portfolio-page .background-list>div{grid-template-columns:1fr;gap:10px}.portfolio-page .lesson-description>div{grid-template-columns:1fr;gap:9px}.portfolio-page .project-cover{height:260px}.portfolio-page .portfolio-monogram strong{font-size:2.6rem}.portfolio-page .art-top{font-size:.49rem}}@media print{.portfolio-page{--bg:#fff;--ink:#111;--muted:#444;--line:#ccc;color:#111;color-scheme:light;background:#fff}.portfolio-page .site-header,.portfolio-page .print-button,.portfolio-page .about-next,.portfolio-page .skip-link{display:none!important}.portfolio-page .container{width:100%}.portfolio-page .inner-page{min-height:0;padding:0}.portfolio-page .page-heading{margin-bottom:22px;padding-bottom:20px}.portfolio-page .page-heading h1{font-size:25pt}.portfolio-page .about-grid{grid-template-columns:1fr;gap:15px}.portfolio-page .identity-panel h2{font-size:17pt}.portfolio-page .identity-panel h2 span{display:inline}.portfolio-page .about-copy>p,.portfolio-page .english-summary p{font-size:10pt;line-height:1.6}.portfolio-page .background-section{margin-top:20px}.portfolio-page .background-list>div{break-inside:avoid;grid-template-columns:110px 1fr;gap:20px;padding-block:12px}.portfolio-page .background-list p,.portfolio-page .background-list h3,.portfolio-page .background-qualifications li{font-size:10pt}.portfolio-page .english-summary{break-inside:avoid;margin-top:15px;padding-top:20px}.portfolio-page .english-summary h2{font-size:15pt}}.portfolio-page .news-art,.portfolio-page .bot-art{flex-direction:column;height:100%;padding:25px 28px;display:flex}.portfolio-page .project-cover.news{color:#2f5f53;background:#e7edea}.portfolio-page .project-shot{background:#fff;border:1px solid #d2dbd6;border-radius:8px;height:285px;position:absolute;top:63px;left:28px;right:28px;overflow:hidden;box-shadow:0 8px 22px #17202d0b}.portfolio-page .project-shot img{width:100%;max-width:none;height:auto}.portfolio-page .news-art>.art-footnote{background:#e7edeaf2}.portfolio-page .project-cover.feishu-bot{color:#253651;background:#e9edf5}.portfolio-page .feishu-flow{align-items:center;gap:25px;margin-block:auto;display:flex}.portfolio-page .feishu-flow>img{border-radius:20px;flex:none;width:90px;height:90px}.portfolio-page .flow-copy{min-width:0}.portfolio-page .flow-copy strong{letter-spacing:-.035em;font-size:1.65rem;font-weight:500;line-height:1.5}.portfolio-page .flow-steps{color:#68778b;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;font-size:.68rem;line-height:1.8;display:flex}.portfolio-page .flow-steps i{font-style:normal}@media (width<=1000px){.portfolio-page .feishu-flow{gap:18px}.portfolio-page .feishu-flow>img{border-radius:16px;width:70px;height:70px}.portfolio-page .flow-copy strong{font-size:1.35rem}.portfolio-page .flow-steps{gap:5px;font-size:.61rem}}@media (width<=700px){.portfolio-page .news-art,.portfolio-page .bot-art{padding:22px}.portfolio-page .project-shot{top:57px;left:20px;right:20px}.portfolio-page .feishu-flow{gap:20px}.portfolio-page .flow-copy strong{font-size:1.4rem}}.portfolio-page .project-cover.wechat-bot{color:#1e2a3e;background:#e9f1fd;container-type:inline-size}.portfolio-page .jeeves-art{isolation:isolate;height:100%;padding:25px 28px;position:relative}.portfolio-page .jeeves-platform{z-index:2;letter-spacing:.1em;color:#526880;font-size:.6rem;position:relative}.portfolio-page .jeeves-brand{z-index:2;width:43%;position:absolute;top:75px;left:28px}.portfolio-page .jeeves-brand strong{letter-spacing:-.055em;font-size:clamp(1.85rem,7.5cqw,2.75rem);font-weight:600;line-height:1.06}.portfolio-page .jeeves-brand strong span{color:#5489d7}.portfolio-page .jeeves-brand p{color:#526880;max-width:155px;margin-top:14px;font-size:clamp(.67rem,2.2cqw,.8rem);line-height:1.7}.portfolio-page .jeeves-mascot{aspect-ratio:1;object-fit:contain;z-index:1;border-radius:16px;width:46%;height:auto;position:absolute;top:50%;right:22px;transform:translateY(-50%)}.portfolio-page .project-cover.wechat-bot:hover>.jeeves-art img{transform:translateY(-50%)}.portfolio-page .jeeves-caption{color:#526880;font-size:.63rem;line-height:1.7;position:absolute;bottom:24px;left:28px}.portfolio-page .jeeves-showcase{color:#1e2a3e;background:#e9f1fd;border-radius:12px;grid-template-columns:155px minmax(0,1fr);align-items:center;gap:26px;margin-top:28px;padding:22px;display:grid}.portfolio-page .jeeves-showcase>img{border-radius:10px;width:100%;height:auto}.portfolio-page .jeeves-showcase .eyebrow{color:#526880;font-size:.6rem}.portfolio-page .jeeves-showcase h3{letter-spacing:-.025em;margin-top:8px;font-size:1.15rem;font-weight:500;line-height:1.5}.portfolio-page .jeeves-showcase p{color:#526880;margin-top:10px;font-size:.82rem;line-height:1.85}.portfolio-page .jeeves-workflow{color:#526880;flex-wrap:wrap;gap:5px 8px;margin-top:15px;font-size:.65rem;line-height:1.8;display:flex}@media (width<=1000px){.portfolio-page .jeeves-art{padding:22px}.portfolio-page .jeeves-brand{width:40%;top:74px;left:22px}.portfolio-page .jeeves-mascot{right:18px}.portfolio-page .jeeves-caption{max-width:85%;font-size:.59rem;left:22px}}@media (width<=700px){.portfolio-page .jeeves-mascot{width:46%}.portfolio-page .jeeves-brand p{max-width:130px}.portfolio-page .jeeves-showcase{grid-template-columns:90px minmax(0,1fr);gap:16px;padding:16px}.portfolio-page .jeeves-showcase h3{font-size:1rem}.portfolio-page .jeeves-showcase p{font-size:.77rem}}@media (width<=370px){.portfolio-page .jeeves-mascot{right:15px}.portfolio-page .jeeves-showcase{grid-template-columns:minmax(0,1fr)}.portfolio-page .jeeves-showcase>img{width:125px}}
