:root{color:#183252;background:#edf5f4;font-family:Microsoft YaHei,PingFang SC,Noto Sans CJK SC,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}.app-shell{display:grid;grid-template-columns:minmax(420px,42vw) 1fr;min-height:100vh}.workspace-panel{background:#fff;border-right:1px solid #d9e7e5;height:100vh;overflow-y:auto;padding:24px}.preview-panel{min-width:0;height:100vh;overflow-y:auto;padding:22px 28px 40px}.app-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.app-logo{align-items:center;background:#e8f7f5;border:1px solid #c8e7e3;border-radius:8px;display:flex;height:54px;justify-content:center;width:54px}.app-logo img{height:38px;width:38px;object-fit:contain}.app-header p{color:#2ca9a1;font-size:13px;margin:0 0 2px}.app-header h1{font-size:22px;line-height:1.25;margin:0}.progress-strip{border:1px solid #d9e7e5;border-radius:8px;display:grid;gap:8px;grid-template-columns:1fr auto;margin-bottom:18px;padding:14px}.progress-strip span{color:#5c6f7d;font-size:13px}.progress-strip strong{color:#183252;font-size:13px}.progress-strip div{background:#e5eeee;border-radius:999px;grid-column:1 / -1;height:8px;overflow:hidden}.progress-strip i{background:#2ca9a1;display:block;height:100%}.form-section{border-top:1px solid #e5eeee;padding:20px 0}.section-title{align-items:center;display:flex;gap:8px;margin-bottom:14px}.section-title svg{color:#2ca9a1}.section-title h2,.case-editor h3{font-size:16px;margin:0}.field-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.photo-uploader{align-items:center;background:#f7fbfb;border:1px solid #d9e7e5;border-radius:8px;display:grid;gap:14px;grid-template-columns:86px 1fr;margin-bottom:14px;padding:14px}.photo-uploader:focus,.photo-uploader:focus-within{border-color:#2ca9a1;box-shadow:0 0 0 3px #2ca9a11f;outline:none}.photo-preview{align-items:center;background:#fff;border:1px solid #cbdcda;border-radius:8px;display:flex;height:105px;justify-content:center;overflow:hidden;width:75px}.photo-preview img,.teacher-photo img{height:100%;object-fit:cover;object-position:center top;width:100%}.photo-preview.photo-empty{color:#2ca9a1}.upload-button{align-items:center;background:#183252;border:1px solid #183252;border-radius:7px;color:#fff;display:inline-flex;gap:7px;min-height:38px;padding:0 13px}.native-file-input{border:1px dashed #9fcac6;border-radius:7px;color:#425667;display:block;margin-top:10px;max-width:100%;padding:8px;width:280px}.text-button{background:transparent;border:0;color:#2a827d;margin-left:10px;padding:0}.photo-uploader p{color:#5c6f7d;font-size:13px;line-height:1.55;margin:8px 0 0}.field{display:grid;gap:6px;min-width:0}.field-wide{grid-column:1 / -1}.field span{color:#425667;font-size:13px}.field input,.field textarea{border:1px solid #cbdcda;border-radius:7px;color:#183252;outline:none;padding:10px 11px;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.field textarea{line-height:1.55;resize:vertical}.field input:focus,.field textarea:focus{border-color:#2ca9a1;box-shadow:0 0 0 3px #2ca9a11f}.case-editor-list{display:grid;gap:12px}.case-editor{border:1px solid #d9e7e5;border-radius:8px;padding:14px}.case-editor-head{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.icon-button,.secondary-button,.primary-button,.template-tabs button{align-items:center;border-radius:7px;display:inline-flex;gap:7px;min-height:38px}.icon-button{background:#f5f8f8;border:1px solid #d9e7e5;color:#183252;justify-content:center;width:38px}.secondary-button{background:#fff;border:1px solid #cbdcda;color:#183252;justify-content:center;margin-top:12px;padding:0 13px}.primary-button{background:#183252;border:1px solid #183252;color:#fff;justify-content:center;padding:0 14px}.toolbar{align-items:flex-start;display:flex;gap:12px;justify-content:space-between;margin-bottom:12px}.template-tabs{background:#dcebea;border:1px solid #c8dddb;border-radius:8px;display:flex;gap:4px;padding:4px}.template-tabs button{background:transparent;border:0;color:#425667;padding:0 12px}.template-tabs button.active{background:#fff;color:#183252;box-shadow:0 1px 6px #1832521f}.toolbar-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.toolbar-actions .secondary-button{margin-top:0}.status-row{color:#5c6f7d;display:flex;font-size:13px;gap:16px;justify-content:space-between;margin-bottom:12px}.issue-list{background:#fff4ef;border:1px solid #f4c7b6;border-radius:8px;color:#a44728;margin-bottom:12px;padding:10px 14px}.issue-list p{margin:4px 0}.paper-stage{align-items:flex-start;display:flex;justify-content:center;min-width:0}.profile-page{background:#fff;box-shadow:0 18px 40px #18325229;color:#183252;min-height:1123px;padding:38px;position:relative;width:794px}.profile-brand{align-items:center;border-bottom:2px solid #d9e7e5;display:flex;justify-content:space-between;padding-bottom:20px}.brand-lockup{align-items:center;display:flex;gap:12px}.brand-lockup img{height:46px;object-fit:contain;width:46px}.brand-lockup strong{display:block;font-size:18px}.brand-lockup span,.profile-label{color:#5c6f7d;display:block;font-size:13px;margin-top:3px}.profile-label{border:1px solid #c8e7e3;border-radius:999px;color:#2ca9a1;padding:7px 13px}.profile-hero{background:linear-gradient(135deg,#e8f7f5,#f7fbfb);border:1px solid #9fcac6;border-radius:8px;display:grid;gap:24px;grid-template-columns:minmax(0,1fr) 170px;margin:26px 0;overflow:hidden;padding:28px;position:relative}.profile-hero>*:not(.hero-pattern){position:relative;z-index:1}.hero-pattern{bottom:0;left:0;opacity:.2;pointer-events:none;position:absolute;right:0;top:0}.city-reference-image{display:none;height:100%;top:0;right:0;bottom:0;left:0;object-fit:cover;object-position:center bottom;position:absolute;width:100%}.city-skyline{align-items:end;bottom:0;display:flex;gap:8px;height:92px;left:24px;position:absolute}.city-skyline i{background:#183252;display:block;position:relative;width:22px}.city-skyline i:before{background:linear-gradient(#fff 0,#fff 0) 5px 9px / 4px 4px no-repeat,linear-gradient(#fff 0,#fff 0) 13px 9px / 4px 4px no-repeat,linear-gradient(#fff 0,#fff 0) 5px 22px / 4px 4px no-repeat,linear-gradient(#fff 0,#fff 0) 13px 22px / 4px 4px no-repeat;content:"";top:0;right:0;bottom:0;left:0;opacity:.72;position:absolute}.city-skyline i:nth-child(1){height:34px}.city-skyline i:nth-child(2){height:58px}.city-skyline i:nth-child(3){height:44px}.city-skyline i:nth-child(4){height:70px}.city-skyline i:nth-child(5){height:50px}.city-skyline i:nth-child(6){height:84px;width:30px}.city-skyline i:nth-child(7){height:42px;width:34px}.urban-river{bottom:8px;height:36px;left:18px;position:absolute;right:26px}.urban-river span{border:4px solid #183252;border-left:0;border-right:0;border-top:0;border-radius:50%;display:block;height:34px;position:absolute;width:100%}.urban-river span:nth-child(2){bottom:-9px;opacity:.72;width:82%}.liuhetower-mark{align-items:center;bottom:0;display:flex;flex-direction:column;gap:2px;left:254px;position:absolute;width:92px}.liuhetower-mark:before{border-bottom:18px solid #183252;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:block;height:0;margin-bottom:1px;width:0}.liuhetower-mark span{background:#183252;display:block}.liuhetower-mark span:nth-child(1){clip-path:polygon(50% 0,100% 58%,86% 100%,14% 100%,0 58%);height:11px;width:42px}.liuhetower-mark span:nth-child(2){clip-path:polygon(50% 0,100% 50%,86% 100%,14% 100%,0 50%);height:10px;width:54px}.liuhetower-mark span:nth-child(3){height:9px;width:28px}.liuhetower-mark span:nth-child(4){clip-path:polygon(50% 0,100% 50%,88% 100%,12% 100%,0 50%);height:11px;width:66px}.liuhetower-mark span:nth-child(5){height:12px;width:34px}.liuhetower-mark span:nth-child(6){clip-path:polygon(50% 0,100% 50%,90% 100%,10% 100%,0 50%);height:12px;width:82px}.liuhetower-mark span:nth-child(7){height:30px;width:42px}.mountain-mark{bottom:0;height:64px;opacity:.68;position:absolute;right:24px;width:188px}.mountain-mark span{background:#183252;bottom:0;clip-path:polygon(50% 0,100% 100%,0 100%);display:block;position:absolute}.mountain-mark span:nth-child(1){height:42px;left:0;opacity:.62;width:96px}.mountain-mark span:nth-child(2){height:58px;left:48px;width:112px}.mountain-mark span:nth-child(3){height:36px;right:0;opacity:.58;width:86px}.westlake-mark,.hangzhou-arch-mark,.tianjin-eye-mark,.tianjin-tower-mark,.tianjin-bridge-mark{display:none;position:absolute}.westlake-mark{bottom:2px;height:78px;left:358px;width:118px}.westlake-mark:before{background:#183252;border-radius:50%;content:"";height:58px;left:38px;opacity:.35;position:absolute;top:2px;width:58px}.westlake-mark span{background:#183252;bottom:0;display:block;position:absolute}.westlake-mark span:nth-child(1),.westlake-mark span:nth-child(2),.westlake-mark span:nth-child(3){border-radius:2px 2px 0 0;height:44px;width:10px}.westlake-mark span:nth-child(1){left:14px}.westlake-mark span:nth-child(2){height:56px;left:54px}.westlake-mark span:nth-child(3){height:34px;left:92px}.westlake-mark span:before{background:inherit;border-radius:50%;content:"";height:12px;left:-1px;position:absolute;top:-7px;width:12px}.hangzhou-arch-mark{border:8px solid #183252;border-bottom:0;border-radius:76px 76px 0 0;bottom:0;height:54px;left:482px;width:132px}.hangzhou-arch-mark:before{background:#183252;bottom:0;content:"";height:8px;left:-18px;position:absolute;width:168px}.hangzhou-arch-mark span{background:#183252;bottom:0;display:block;position:absolute;width:6px}.hangzhou-arch-mark span:nth-child(1){height:30px;left:30px;transform:rotate(28deg)}.hangzhou-arch-mark span:nth-child(2){height:42px;left:58px}.hangzhou-arch-mark span:nth-child(3){height:30px;right:30px;transform:rotate(-28deg)}.tianjin-eye-mark{border:7px solid #183252;border-radius:50%;bottom:16px;height:116px;left:168px;width:116px}.tianjin-eye-mark:before,.tianjin-eye-mark:after{background:#183252;bottom:-36px;content:"";height:50px;position:absolute;width:7px}.tianjin-eye-mark:before{left:34px;transform:rotate(24deg)}.tianjin-eye-mark:after{right:34px;transform:rotate(-24deg)}.tianjin-eye-mark span{background:#183252;height:3px;left:50%;position:absolute;top:50%;transform-origin:left center;width:52px}.tianjin-eye-mark span:nth-child(1){transform:rotate(0)}.tianjin-eye-mark span:nth-child(2){transform:rotate(45deg)}.tianjin-eye-mark span:nth-child(3){transform:rotate(90deg)}.tianjin-eye-mark span:nth-child(4){transform:rotate(135deg)}.tianjin-eye-mark span:nth-child(5){transform:rotate(180deg)}.tianjin-eye-mark span:nth-child(6){transform:rotate(225deg)}.tianjin-eye-mark span:nth-child(7){transform:rotate(270deg)}.tianjin-eye-mark span:nth-child(8){transform:rotate(315deg)}.tianjin-eye-mark i{background:#183252;border-radius:50%;display:block;height:18px;left:42px;position:absolute;top:42px;width:18px}.tianjin-tower-mark{bottom:0;height:136px;left:68px;width:54px}.tianjin-tower-mark:before{background:#183252;content:"";height:132px;left:25px;position:absolute;top:4px;width:4px}.tianjin-tower-mark span{background:#183252;display:block;left:50%;position:absolute;transform:translate(-50%)}.tianjin-tower-mark span:nth-child(1){border-radius:50%;height:28px;top:38px;width:42px}.tianjin-tower-mark span:nth-child(2){border-radius:50%;height:16px;top:60px;width:30px}.tianjin-tower-mark span:nth-child(3){height:18px;top:118px;width:24px}.tianjin-bridge-mark{bottom:0;height:52px;left:294px;width:204px}.tianjin-bridge-mark:before{background:#183252;bottom:7px;content:"";height:7px;left:0;position:absolute;width:100%}.tianjin-bridge-mark span{background:#183252;bottom:13px;display:block;height:48px;position:absolute;width:5px}.tianjin-bridge-mark span:nth-child(1){left:34px;transform:rotate(42deg)}.tianjin-bridge-mark span:nth-child(2){left:100px}.tianjin-bridge-mark span:nth-child(3){right:34px;transform:rotate(-42deg)}.eyebrow{color:#2ca9a1;font-size:14px;margin:0 0 8px}.profile-hero h1{font-size:34px;line-height:1.18;margin:0}.hero-copy{color:#425667;font-size:15px;line-height:1.8;margin:14px 0 16px}.profile-block{background:#ffffffc7;border:1px solid #a9c9c5;border-radius:8px;padding:18px}.hero-side{align-items:start;display:flex;justify-items:center;justify-content:center;width:170px}.teacher-photo{background:#f8fbfb;border:4px solid #ffffff;border-radius:8px;box-shadow:0 12px 24px #18325229;aspect-ratio:5 / 7;height:210px;justify-self:center;overflow:hidden;width:150px}.teacher-photo.has-photo{background-image:var(--teacher-photo-url);background-position:center top;background-repeat:no-repeat;background-size:cover}.teacher-photo.has-photo img{display:block}.teacher-photo.photo-empty{align-items:center;border:1px dashed #9fcac6;box-shadow:none;color:#6b7d89;display:flex;font-size:14px;justify-content:center}.hero-meta-grid{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr));margin:0 0 16px;max-width:440px}.hero-meta-item{background:#ffffffc2;border:1px solid rgba(139,177,173,.92);border-radius:7px;padding:8px 10px}.hero-meta-item span{color:#6b7d89;display:block;font-size:12px;margin-bottom:2px}.hero-meta-item strong{color:#183252;display:block;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.profile-grid{display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:18px}.profile-block{margin-bottom:18px}.profile-block h2{align-items:center;color:#183252;display:flex;font-size:18px;gap:8px;margin:0 0 14px}.profile-block h2 svg{color:#2ca9a1;flex:0 0 auto}.info-line{border-bottom:1px solid #d1e1df;display:grid;gap:10px;grid-template-columns:72px 1fr;padding:8px 0}.info-line:last-child{border-bottom:0}.info-line span{color:#6b7d89;font-size:13px}.info-line strong{font-size:14px;font-weight:600;line-height:1.55;overflow-wrap:anywhere}.tag-list{display:flex;flex-wrap:wrap;gap:8px}.tag-list span{background:#2ca9a1;border-radius:999px;color:#fff;font-size:13px;padding:6px 10px}.teaching-columns{display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.case-list{display:grid;gap:14px}.case-item{border:1px solid #a9c9c5;border-radius:8px;display:grid;gap:14px;grid-template-columns:48px 1fr;padding:16px}.case-index{align-items:center;background:#183252;border-radius:8px;color:#fff;display:flex;font-size:15px;font-weight:700;height:42px;justify-content:center;width:42px}.case-item h3{font-size:16px;margin:0 0 8px}.case-item p,.case-item strong,.case-item em,.empty-state{display:block;font-size:14px;line-height:1.7;margin:5px 0;overflow-wrap:anywhere}.case-item strong{color:#2a827d}.case-item em{color:#5c6f7d;font-style:normal}.profile-footer{align-items:center;border-top:2px solid #d9e7e5;color:#5c6f7d;display:flex;font-size:13px;justify-content:space-between;margin-top:26px;padding-top:16px}.profile-footer strong{color:#183252}.template-achievement{background:linear-gradient(90deg,rgba(44,169,161,.16) 0 6px,transparent 6px),linear-gradient(180deg,rgba(24,50,82,.05) 1px,transparent 1px),#fff;background-size:100% 100%,30px 30px}.template-achievement .profile-brand{border-bottom-color:#2ca9a1}.template-achievement .brand-lockup strong,.template-achievement .profile-block h2{color:#10284a}.template-achievement .profile-hero{background:radial-gradient(circle at 82% 20%,rgba(44,169,161,.55),transparent 28%),linear-gradient(135deg,#10284a,#183252 52%,#1d5867);border-color:#10284a;box-shadow:inset 0 0 0 1px #ffffff24;color:#fff}.template-achievement .profile-hero:after{background:linear-gradient(90deg,rgba(255,255,255,.11) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.1) 1px,transparent 1px);background-size:22px 22px;content:"";top:0;right:0;bottom:0;left:0;opacity:.3;pointer-events:none;position:absolute}.template-achievement .eyebrow,.template-achievement .hero-copy,.template-achievement .hero-meta-item span,.template-achievement .hero-meta-item strong{color:#d6f3f0}.template-achievement .hero-meta-item{background:#ffffff24;border-color:#d6f3f057}.template-achievement .tag-list span{background:#d6f3f0;color:#10284a}.template-achievement .case-index{background:#10284a}.template-achievement .profile-label{background:#10284a;border-color:#10284a;color:#fff}.template-achievement .profile-block,.template-achievement .case-item,.template-achievement .teacher-photo{border-color:#2ca9a147;box-shadow:0 10px 24px #10284a14}.template-achievement .city-skyline i,.template-achievement .liuhetower-mark span,.template-achievement .mountain-mark span{background:#fff}.template-achievement .liuhetower-mark:before{border-bottom-color:#fff}.template-achievement .urban-river span{border-bottom-color:#fff}.template-caseRich .profile-hero{background:linear-gradient(135deg,#f4ad553d,#fffffff0),#fffaf2;border-color:#f4ad55}.template-caseRich{border:8px double #f4ad55;padding:30px}.template-caseRich .profile-label,.template-caseRich .tag-list span{background:#f4ad55;border-color:#f4ad55;color:#183252}.template-caseRich .cases-block{border-color:#f4ad55;border-top-width:5px}.template-caseRich .case-list{gap:10px}.template-hangzhouCity{background:linear-gradient(180deg,rgba(44,169,161,.1),transparent 250px),linear-gradient(90deg,rgba(244,173,85,.12) 0 5px,transparent 5px),#fff}.template-hangzhouCity .profile-brand{border-bottom-color:#87cfc8}.template-hangzhouCity .profile-label,.template-hangzhouCity .tag-list span{background:#2ca9a1;border-color:#2ca9a1;color:#fff}.template-hangzhouCity .profile-hero{background:radial-gradient(circle at 70% 18%,rgba(244,203,92,.5),transparent 17%),linear-gradient(180deg,#ddf9f5f5,#fffae3eb 58%,#ecf8f5fa),#f3fbfa;border-color:#7fc9c2}.template-hangzhouCity .hero-pattern{opacity:.42}.template-hangzhouCity .city-reference-hangzhou{display:block}.template-hangzhouCity .city-skyline,.template-hangzhouCity .urban-river,.template-hangzhouCity .liuhetower-mark,.template-hangzhouCity .mountain-mark,.template-hangzhouCity .westlake-mark,.template-hangzhouCity .hangzhou-arch-mark{display:none}.template-hangzhouCity .profile-block,.template-hangzhouCity .case-item,.template-hangzhouCity .teacher-photo{border-color:#83bbb6}.template-tianjinCity{background:linear-gradient(180deg,rgba(59,130,246,.08),transparent 270px),linear-gradient(90deg,rgba(198,45,45,.11) 0 5px,transparent 5px),#fff}.template-tianjinCity .profile-brand{border-bottom-color:#9fb8d8}.template-tianjinCity .profile-label{background:#1f4f8f;border-color:#1f4f8f;color:#fff}.template-tianjinCity .profile-hero{background:radial-gradient(circle at 12% 18%,rgba(255,255,255,.84),transparent 18%),linear-gradient(180deg,#dbeffffa,#f6fcfff2 50%,#e1f5fcfa),#e8f5ff;border-color:#8eb3d9}.template-tianjinCity .hero-pattern{opacity:.38}.template-tianjinCity .city-reference-tianjin{display:block}.template-tianjinCity .city-skyline,.template-tianjinCity .urban-river,.template-tianjinCity .liuhetower-mark,.template-tianjinCity .mountain-mark,.template-tianjinCity .westlake-mark,.template-tianjinCity .hangzhou-arch-mark,.template-tianjinCity .tianjin-eye-mark,.template-tianjinCity .tianjin-tower-mark,.template-tianjinCity .tianjin-bridge-mark{display:none}.template-tianjinCity .tag-list span,.template-tianjinCity .case-index{background:#1f4f8f;color:#fff}.template-tianjinCity .profile-block,.template-tianjinCity .case-item,.template-tianjinCity .teacher-photo{border-color:#94accd}@media(max-width:1180px){.app-shell{grid-template-columns:1fr}.workspace-panel,.preview-panel{height:auto}}@media(max-width:760px){.workspace-panel,.preview-panel{padding:16px}.field-grid,.profile-grid,.profile-hero,.photo-uploader,.teaching-columns{grid-template-columns:1fr}.toolbar{align-items:stretch;flex-direction:column}.template-tabs,.toolbar-actions,.status-row{justify-content:flex-start}.paper-stage{justify-content:flex-start;overflow-x:auto}}.png-export-host{background:#fff;left:-10000px;position:fixed;top:0;width:794px;z-index:-1}.export-profile-page.profile-page{box-shadow:none;width:794px!important}.export-profile-page .profile-brand{align-items:center!important;flex-direction:row!important}.export-profile-page .profile-hero{grid-template-columns:minmax(0,1fr) 170px!important}.export-profile-page .profile-grid,.export-profile-page .teaching-columns{grid-template-columns:repeat(2,minmax(0,1fr))!important}.export-profile-page .hero-side{width:170px!important}.export-profile-page .teacher-photo{height:210px!important;width:150px!important}@media print{body{background:#fff}.workspace-panel,.toolbar,.status-row,.issue-list{display:none!important}.app-shell,.preview-panel,.paper-stage{display:block;height:auto;overflow:visible;padding:0}.profile-page{box-shadow:none;min-height:auto;padding:16mm;width:100%}.profile-brand{align-items:center!important;flex-direction:row!important}.profile-hero{grid-template-columns:minmax(0,1fr) 170px!important}.profile-grid,.teaching-columns{grid-template-columns:repeat(2,minmax(0,1fr))!important}.hero-side{width:170px!important}.teacher-photo{height:210px!important;width:150px!important}@page{margin:0;size:A4}}
