*{margin:0;-webkit-tap-highlight-color:transparent}html,body{-webkit-user-select:none;user-select:none;width:100%;height:100%}body{overflow-x:hidden;font-size:16px}uni-app,uni-page,uni-page-wrapper,uni-page-body{display:block;box-sizing:border-box;width:100%}uni-page-wrapper{position:relative}#app,uni-app,uni-page,uni-page-wrapper{height:100%}.uni-mask{position:fixed;z-index:999;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,.5)}.uni-fade-enter-active,.uni-fade-leave-active{transition-duration:.25s;transition-property:opacity;transition-timing-function:ease}.uni-fade-enter-from,.uni-fade-leave-active{opacity:0}.uni-loading,uni-button[loading]:before{background-color:transparent;background-image:url(data:image/svg+xml;base64,\ PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=);background-repeat:no-repeat}.uni-loading{width:20px;height:20px;display:inline-block;vertical-align:middle;animation:uni-loading 1s steps(12,end) infinite;background-size:100%}@keyframes uni-loading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}html{--primary-color: #007aff;--UI-BG: #fff;--UI-BG-1: #f7f7f7;--UI-BG-2: #fff;--UI-BG-3: #f7f7f7;--UI-BG-4: #4c4c4c;--UI-BG-5: #fff;--UI-FG: #000;--UI-FG-0: rgba(0, 0, 0, .9);--UI-FG-HALF: rgba(0, 0, 0, .9);--UI-FG-1: rgba(0, 0, 0, .5);--UI-FG-2: rgba(0, 0, 0, .3);--UI-FG-3: rgba(0, 0, 0, .1)}uni-page[data-type] uni-page-body{background-color:transparent}body:after{position:fixed;content:"";left:-1000px;top:-1000px;animation:shadow-preload .1s;animation-delay:3s}@keyframes shadow-preload{0%{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}to{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}}.uni-async-error{position:absolute;left:0;right:0;top:0;bottom:0;color:#999;padding:100px 10px;text-align:center}.uni-async-loading{box-sizing:border-box;width:100%;padding:50px;text-align:center}.uni-async-loading .uni-loading{width:30px;height:30px}:root{--color-bg: #0b0d10;--color-bg-subtle: #111419;--color-surface: #161a21;--color-surface-raised: #1c2129;--color-border: #2a303c;--color-border-subtle: #22262e;--color-text: #e8eaed;--color-text-secondary: #9aa3af;--color-text-muted: #6b7280;--color-accent: #8b9cb3;--color-accent-hover: #a3b2c6;--color-accent-muted: rgba(139, 156, 179, .12);--color-accent-border: rgba(139, 156, 179, .28);--color-on-accent: #0b0d10;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;color-scheme:dark}:root[data-theme=light],html[data-theme=light],body[data-theme=light],#app[data-theme=light]{--color-bg: #f5f6f8;--color-bg-subtle: #eef0f3;--color-surface: #ffffff;--color-surface-raised: #fafbfc;--color-border: #dfe3ea;--color-border-subtle: #e8ebf0;--color-text: #1a1d21;--color-text-secondary: #5c6370;--color-text-muted: #8b929e;--color-accent: #5a6b82;--color-accent-hover: #4a5869;--color-accent-muted: rgba(90, 107, 130, .1);--color-accent-border: rgba(90, 107, 130, .22);--color-on-accent: #ffffff;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);color-scheme:light}uni-page-body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-sans)}body{background-color:var(--color-bg)}.page-shell{min-height:100vh;background:var(--color-bg);display:flex;flex-direction:column;color:var(--color-text)}.page-main{padding:24px 20px;flex:1;max-width:960px;margin:0 auto;width:100%;box-sizing:border-box}.page-heading{display:block;font-size:22px;font-weight:600;color:var(--color-text);margin-bottom:24px;letter-spacing:.02em}.card-surface{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:24px}.btn-theme{margin:0;padding:9px 20px;border-radius:var(--radius-sm);font-size:14px;line-height:1.4;border:1px solid var(--color-border);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.btn-theme:after{border:none}.btn-theme-primary{background:var(--color-accent);color:var(--color-on-accent);border-color:var(--color-accent);font-weight:500}.btn-theme-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-theme-ghost{background:var(--color-accent-muted);color:var(--color-accent);border-color:var(--color-accent-border)}@media (min-width: 769px){.btn-theme-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-theme-outline:hover{border-color:var(--color-accent);color:var(--color-accent)}}.tool-card,.content-section,.portfolio-item{border:1px solid var(--color-border)}html[data-theme=dark] .uni-easyinput__content.is-input-border,html[data-theme=dark] .uni-easyinput__content-input,html[data-theme=dark] .uni-easyinput__content-textarea{background-color:#111418!important;color:#e8eaed!important}.uni-easyinput__content{background:var(--color-bg-subtle)!important;border-color:var(--color-border)!important}.uni-easyinput__content-input,.uni-easyinput__content-textarea{color:var(--color-text)!important}.uni-forms-item__label{color:var(--color-text-secondary)!important}.fa-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;flex-shrink:0}@keyframes reveal-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal-fade{0%{opacity:0}to{opacity:1}}@keyframes blink-cursor{0%,49%{opacity:1}50%,to{opacity:0}}.theme-transition-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99997;pointer-events:none;will-change:mask-image,opacity,filter;transform:translateZ(0);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat}.theme-transition-glow{z-index:99996;mix-blend-mode:soft-light}@keyframes hero-glow-pulse{0%,to{opacity:.45;transform:scale(1)}50%{opacity:.65;transform:scale(1.05)}}@keyframes float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.scroll-reveal{opacity:0;transform:translateY(28px);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.scroll-reveal.reveal-fade,.scroll-reveal.reveal-fade.is-visible{transform:none}.typewriter-cursor{display:inline-block;margin-left:2px;animation:blink-cursor 1s step-end infinite;color:var(--color-accent);font-weight:300}
