:root{--text:#6b6375;--text-h:#08060d;--bg:#f5f5f5;--card-bg:#fff;--border-color:#00000014;--code-bg:#f4f3ec;--accent:#34495e;--accent-hover:#2c3e50;--badge-bg:#eef1f5;--badge-text:#34495e;--badge-border:#d6dce6;--nav-color:#0000008c;--nav-hover:#000000d9;--pipe-line:#4a89dc;--pipe-dot:#34495e;--pipe-dot-border:#fff;--pipe-header-bg:#34495e;--pipe-header-text:#fff;--shadow:#00000014 0 4px 16px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme=dark]{--text:#b0b8c8;--text-h:#e8eaf0;--bg:#0f1117;--card-bg:#1a1d27;--border:#2a2d3a;--border-color:#ffffff0f;--code-bg:#1f2230;--accent:#7c9cbf;--accent-hover:#a0bcd8;--badge-bg:#252836;--badge-text:#c8d6e8;--badge-border:#363a4f;--nav-color:#ffffff8c;--nav-hover:#ffffffe6;--pipe-line:#4a89dc;--pipe-dot:#4a89dc;--pipe-dot-border:#1a1d27;--pipe-header-bg:#1e2235;--pipe-header-text:#c8d6e8;--shadow:#00000073 0 4px 20px}html,body{background:var(--bg)!important;color:var(--text)!important}.theme-transitioning,.theme-transitioning *,.theme-transitioning :before,.theme-transitioning :after{transition:background-color .5s,color .5s,border-color .5s,box-shadow .5s!important}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2;animation:1.2s cubic-bezier(.22,1,.36,1) forwards theme-reveal}html[data-reveal=dark]::view-transition-old(root){z-index:2;animation:.85s cubic-bezier(.22,1,.36,1) forwards theme-conceal}html[data-reveal=dark]::view-transition-new(root){z-index:1;animation:none}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--reveal-x,50%) var(--reveal-y,50%))}to{clip-path:circle(var(--reveal-r,150vmax) at var(--reveal-x,50%) var(--reveal-y,50%))}}@keyframes theme-conceal{0%{clip-path:circle(var(--reveal-r,150vmax) at var(--reveal-x,50%) var(--reveal-y,50%))}to{clip-path:circle(0 at var(--reveal-x,50%) var(--reveal-y,50%))}}@media (prefers-reduced-motion:reduce){::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}}.skill-section-label{color:var(--text);margin-bottom:.2rem;font-size:.9rem;font-weight:600;display:block}body{margin:0}#root{text-align:left;box-sizing:border-box;background:var(--bg);flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2,h3,h4,h5{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){:root{font-size:16px}h1{margin:20px 0;font-size:36px}}p{margin:0}.skills-section>h2{color:#8e44ad}.work-experience-section>h2{color:#4a89dc}.education-section>h2{color:#37bc9b}.contant-section>h2{color:#2c3e50}.avatar{position:relative;overflow:hidden;box-sizing:content-box!important;border:8px solid #fff!important;width:200px!important;max-width:none!important;height:260px!important;max-height:none!important;padding:0!important}.avatar-stage{background:#fff;width:100%;height:100%;position:relative;overflow:hidden}.avatar img,.avatar-photo{filter:none!important}.avatar-photo{object-fit:cover;object-position:center 12%;transform-origin:50% 35%;pointer-events:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;animation:.9s cubic-bezier(.22,1,.36,1) both avatar-focus-in;display:block;transform:scale(1.1)}.avatar-photo-dark{object-position:center top;transform-origin:50% 5%}@keyframes avatar-focus-in{0%{opacity:0;filter:blur(14px);transform:scale(1.3)}60%{opacity:1}to{opacity:1;filter:blur();transform:scale(1.1)}}.avatar-stage:before{content:"tvbchary.vercel.app";color:#ffffff12;letter-spacing:2px;white-space:nowrap;text-shadow:none;z-index:3;pointer-events:none;font-family:monospace;font-size:9px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-35deg)}.avatar-stage:after{content:"";z-index:4;position:absolute;inset:0}@media (width>=48em){.avatar{margin-top:0!important;margin-bottom:0!important}}@media (width<=991px){.avatar{border-width:6px!important;width:160px!important;height:208px!important}}@media (width<=575px){.avatar{border-width:4px!important;width:110px!important;height:143px!important;margin-top:8px!important}}.cover hr{opacity:0!important;background-color:#0000!important}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}[data-theme=dark] .cover.shadow-lg{background:var(--card-bg)!important}[data-theme=dark] .bg-white{background-color:var(--card-bg)!important}[data-theme=dark] .avatar{border-color:#fff!important}[data-theme=dark] .card{color:var(--text);background-color:var(--card-bg)!important;border-color:var(--border)!important}[data-theme=dark] .card-body{background-color:var(--card-bg);color:var(--text)}[data-theme=dark] .text-dark,[data-theme=dark] .text-secondary,[data-theme=dark] .text-muted,[data-theme=dark] h1,[data-theme=dark] h2,[data-theme=dark] h3,[data-theme=dark] h4,[data-theme=dark] h5,[data-theme=dark] .h3,[data-theme=dark] .h4,[data-theme=dark] .h5,[data-theme=dark] .h6{color:var(--text-h)!important}[data-theme=dark] .keep-white,[data-theme=dark] .keep-white h1,[data-theme=dark] .keep-white h2,[data-theme=dark] .keep-white p,.keep-white,.keep-white h1,.keep-white h2,.keep-white p{color:#fff!important}[data-theme=dark] hr{border-color:var(--border)}[data-theme=dark] .form-control{color:var(--text-h);border-color:var(--border);background-color:#252836}[data-theme=dark] .form-control::placeholder{color:#6b7280}[data-theme=dark] .nav-link{color:var(--nav-color)}[data-theme=dark] .nav-link:hover{color:var(--nav-hover)}[data-theme=dark] footer,[data-theme=dark] .site-footer{color:var(--text)!important}[data-theme=dark] .page-content{background:var(--bg)!important}[data-theme=dark] .text-success{color:#4ade80!important}[data-theme=dark] .timeline-card{background-color:var(--card-bg)!important}[data-theme=dark] .timeline-card:before{background-color:var(--card-bg)}[data-theme=dark] .about-section p,[data-theme=dark] .contant-section p,[data-theme=dark] .work-experience-section div,[data-theme=dark] .education-section div{color:var(--text)}[data-theme=dark] .skill-badge{color:#b0b8c8;background-color:#0000;border-color:#3a3f4f}[data-theme=dark] .skill-badge:hover{color:#4aafdb;background-color:#4aafdb1f;border-color:#4aafdb;box-shadow:0 2px 6px #4aafdb26}[data-theme=dark] .timeline{border-left-color:var(--border)}[data-theme=dark] .timeline-card.timeline-card-primary{border-left-color:var(--border)!important}[data-theme=dark] .timeline-card.timeline-card-primary:before{border-color:var(--border)!important}[data-theme=dark] .timeline-card.timeline-card-primary:after{background-color:var(--border)!important}[data-theme=dark] .skills-section .timeline-card{background:linear-gradient(135deg,#1a1d27 0%,#37bc9b08 100%)}[data-theme=dark] .skills-section .timeline-card:hover{box-shadow:0 8px 20px #00000059}[data-theme=dark] .work-experience-section .timeline-card{background:linear-gradient(135deg,#1a1d27 0%,#4a89dc08 100%)}[data-theme=dark] .work-experience-section .timeline-card:hover{box-shadow:0 8px 20px #00000059}[data-theme=dark] .education-section .timeline-card{background:linear-gradient(135deg,#1a1d27 0%,#8e44ad08 100%)}[data-theme=dark] .education-section .timeline-card:hover{box-shadow:0 8px 20px #00000059}[data-theme=dark] .contant-section .timeline-card{background:linear-gradient(135deg,#1a1d27 0%,#2c3e500f 100%)}[data-theme=dark] .contant-section .timeline-card:hover{box-shadow:0 8px 20px #00000059}[data-theme=dark] .contant-section>h2,[data-theme=dark] .contant-section .timeline-card h4{color:#7c9cbf!important}@media (width<=575px){header .nav{gap:4px}header .nav-link,header .dark-mode-btn{justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:10px 14px!important;display:inline-flex!important}}.dark-mode-btn{cursor:pointer;color:var(--nav-color);padding:0;line-height:2.5rem;transition:color .2s;display:inline-block;box-shadow:none!important;background:0 0!important;border:none!important;outline:none!important;font-size:1rem!important}.dark-mode-btn i{vertical-align:middle;font-size:1rem!important}.dark-mode-btn:hover{color:var(--nav-hover)}.dark-mode-btn:focus{box-shadow:none!important;outline:none!important}.gap-2{gap:.6rem}.skill-badge{color:var(--badge-text);border:1px solid var(--badge-border);cursor:default;letter-spacing:.3px;background-color:#0000;border-radius:4px;padding:.35rem .7rem;font-size:.8rem;font-weight:500;transition:all .25s;display:inline-block;position:relative}.skill-badge:hover{color:#34495e;background-color:#4a89dc14;border-color:#4a89dc;box-shadow:0 2px 6px #4a89dc1f}@media print{body{background-color:#fff}.container{width:auto;max-width:100%;padding:0}.cover,.cover-bg{border-radius:0}.cover.shadow-lg{box-shadow:none!important}.cover-bg{padding:5rem 5rem 10px!important}.avatar{margin-top:-10px}.about-section{padding:6.5rem 5rem 2rem!important}.skills-section,.work-experience-section,.education-section,.contant-section{padding:1.5rem 5rem 2rem!important}.page-break{page-break-before:always;padding-top:5rem}.dark-mode-btn{display:none}}.site-footer{text-align:center;margin-top:auto;padding:2rem 1rem}.site-footer .footer-tagline{color:var(--text-h);letter-spacing:.8px;text-transform:uppercase;margin:0 0 .75rem;font-size:.8rem;font-weight:600}.site-footer .footer-links{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem .75rem;margin-bottom:1rem;display:flex}.site-footer .footer-links a{color:var(--text);font-size:.875rem;text-decoration:none;transition:color .2s}.site-footer .footer-links a:hover{color:var(--text-h)}.site-footer .footer-links span{color:var(--nav-color);-webkit-user-select:none;user-select:none;font-size:.75rem}.lang-toggle-btn{letter-spacing:.02em;font-weight:600}.site-footer .footer-copy{color:var(--text);opacity:.7;margin:0;font-size:.78rem}.about-icons-col{flex-direction:column;justify-content:center;display:flex}.devops-icon-grid{grid-template-columns:repeat(4,1fr);gap:.75rem;display:grid}.devops-icon-tile{cursor:default;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:.3rem;height:76px;transition:transform .2s;display:flex}.devops-icon-tile:hover{transform:translateY(-2px)}.devops-icon-tile i{color:var(--accent);font-size:2.1rem}.devops-icon-tile span{color:var(--text);white-space:nowrap;text-align:center;font-size:.72rem}@media (width<=767px){.about-icons-col{justify-content:flex-start;margin-top:1rem}}[data-theme=dark] .devops-icon-tile i{color:var(--text-h)}.hero-banner{background:#34495e}[data-lang=zh] .about-section{padding-top:2rem!important}.hero-subtitle{white-space:pre-line;margin-bottom:.25rem}.hero-subtitle2{white-space:pre-line;margin-bottom:.5rem;font-size:.75rem;font-style:italic}.company-logo{vertical-align:middle;width:auto;height:30px}.aws-logo{vertical-align:middle;width:auto;height:25px}.contact-textarea{resize:none}
