:root{--ink:#15111f;--muted:#716b7d;--paper:#f6f5f8;--white:#fff;--teal:#14b8a6;--teal-dark:#0b887d;--purple:#1d0c39;--purple-2:#301365;--line:rgba(30,17,55,.11);--shadow:0 20px 60px rgba(26,15,48,.12)}
*{box-sizing:border-box}html,body{margin:0;width:100%;min-height:100%;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink)}button,input,textarea{font:inherit}button,a{color:inherit}.showcase{height:100vh;overflow:hidden}.locked{pointer-events:none}.locked .welcome{pointer-events:auto}.eyebrow,.kicker{margin:0 0 12px;color:var(--teal-dark);font-size:11px;font-weight:800;letter-spacing:.2em}.welcome{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:radial-gradient(circle at 50% 42%,#fff 0,#fbfafc 35%,#eeeaf4 100%);transition:opacity .65s,visibility .65s;overflow:hidden}.welcome.done{opacity:0;visibility:hidden}.welcome-inner{position:relative;z-index:2;text-align:center;width:min(680px,88vw)}.welcome h1{margin:5px 0 20px;font-size:clamp(44px,6vw,72px);letter-spacing:-.06em}.welcome h2{margin:15px 0 8px;font-size:26px}.welcome-inner>p:not(.eyebrow){margin:0 auto 26px;max-width:560px;color:var(--muted);font-size:14px}.welcome-bot{width:92px;height:92px;border-radius:50%;object-fit:cover;animation:float .9s ease-in-out infinite alternate;box-shadow:var(--shadow)}.progress{width:150px;height:4px;margin:0 auto 10px;background:#ded9e5;border-radius:9px;overflow:hidden}.progress i{display:block;width:0;height:100%;background:var(--teal);transition:width .15s}.welcome small{color:var(--muted);font-size:11px}.welcome small b{color:var(--teal-dark)}.text-button{display:block;margin:22px auto 0;border:0;background:none;color:var(--muted);font-size:12px;cursor:pointer}.orbit{position:absolute;border:1px solid rgba(48,19,101,.1);border-radius:50%;animation:spin 14s linear infinite}.orbit:after{content:"";position:absolute;top:12%;left:8%;width:12px;height:12px;border-radius:50%;background:var(--teal)}.orbit-a{width:560px;height:560px}.orbit-b{width:800px;height:800px;animation-direction:reverse}.topbar{height:72px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 24px;background:rgba(255,255,255,.9);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:14px}.brand img{width:38px;height:38px;border-radius:50%;object-fit:cover}.mode-nav{display:flex;padding:4px;border-radius:999px;background:#f0edf3}.mode-nav button{border:0;background:transparent;padding:9px 18px;border-radius:999px;color:var(--muted);font-size:12px;cursor:pointer}.mode-nav button.active{background:white;color:var(--ink);box-shadow:0 3px 12px rgba(30,17,55,.1);font-weight:700}.icon-button{border:0;background:none;cursor:pointer}.share{justify-self:end;padding:0}.share img{display:block;width:35px;height:35px}.workspace{display:grid;grid-template-columns:minmax(330px,29vw) 1fr;height:calc(100vh - 72px)}.assistant-panel{display:grid;grid-template-rows:86px minmax(0,1fr) auto auto auto;background:#fff;border-right:1px solid var(--line);position:relative;z-index:15}.assistant-head{height:86px;padding:0 20px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--line)}.assistant-head>img{width:43px;height:43px;border-radius:50%;object-fit:cover}.assistant-head div{display:grid;gap:5px}.assistant-head b{font-size:14px}.assistant-head small{font-size:11px;color:var(--muted)}.assistant-head small i{display:inline-block;width:6px;height:6px;background:#22c55e;border-radius:50%;margin-right:6px}.assistant-head button{display:none;margin-left:auto;border:0;background:#f0edf3;width:34px;height:34px;border-radius:50%;font-size:22px}.messages{position:relative;padding:22px 18px 58px;overflow-y:auto;scrollbar-width:thin}.message{display:flex;align-items:flex-start;gap:9px;margin-bottom:18px;animation:message-in .3s}.message img{width:31px;height:31px;border-radius:50%;object-fit:cover;flex:none}.message p{margin:0;max-width:78%;padding:11px 13px;border-radius:5px 16px 16px;background:#f2eff5;font-size:12px;line-height:1.65;user-select:text}.message.user{justify-content:flex-end}.message.user p{background:var(--teal);color:#fff;border-radius:16px 5px 16px 16px}.mic-button,.bottom-button{position:sticky;float:right;bottom:0;width:40px;height:40px;padding:7px;border:1px solid var(--line);border-radius:50%;background:#fff;box-shadow:0 6px 20px rgba(30,17,55,.12);cursor:pointer}.mic-button img,.bottom-button img{width:100%;height:100%;object-fit:contain}.bottom-button{display:none;float:none;left:50%;transform:translateX(-50%);bottom:0}.bottom-button.show{display:block}.suggestions{display:flex;gap:7px;padding:8px 16px;overflow-x:auto;scrollbar-width:none}.suggestions button{flex:none;padding:8px 11px;border:1px solid rgba(20,184,166,.2);border-radius:999px;background:#ecfdfa;color:var(--teal-dark);font-size:10px;cursor:pointer}.chat-form{padding:4px 16px 10px}.chat-form>div{display:grid;grid-template-columns:1fr 40px;align-items:end;border:1px solid #d9d5df;border-radius:18px;padding:5px}.chat-form textarea{border:0;outline:0;resize:none;min-height:38px;max-height:90px;padding:9px;background:transparent;font-size:12px}.chat-form button{width:40px;height:40px;border:1px solid var(--teal);border-radius:50%;background:#fff;padding:6px}.chat-form button img{width:100%;height:100%}.chat-form small{display:block;margin-top:5px;text-align:center;color:var(--muted);font-size:9px}.wechat-hint{display:none;margin:0;padding:0 16px 9px;color:#a16207;font-size:10px}.wechat-hint.show{display:block}.stage{position:relative;min-width:0;background:var(--purple);overflow:hidden}.mode{position:absolute;inset:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s}.mode.active{opacity:1;visibility:visible;pointer-events:auto}.slides-mode{background:var(--purple);color:#fff;overflow:hidden}.slide-meta{position:absolute;z-index:5;left:25px;right:25px;top:20px;display:flex;justify-content:space-between;color:rgba(255,255,255,.45);font-size:10px;letter-spacing:.12em}.slide-meta b{color:#fff}.slide-stack,.slide{position:absolute;inset:0}.slide{display:flex;align-items:center;padding:clamp(65px,8vw,120px) clamp(60px,9vw,150px);opacity:0;transform:scale(.98);transition:opacity .55s,transform .55s;overflow:hidden}.slide.active{opacity:1;transform:scale(1)}.slide-copy{position:relative;z-index:2;max-width:760px}.slide .kicker{color:var(--teal)}.slide h2{margin:0;font-size:clamp(42px,5.5vw,84px);line-height:1.06;letter-spacing:-.055em}.slide-copy>p:last-of-type{max-width:650px;color:#bdb1cf;font-size:clamp(15px,1.4vw,21px);line-height:1.75}.slide>em{position:absolute;right:5vw;bottom:-5vh;color:rgba(255,255,255,.045);font-style:normal;font-size:25vw;font-weight:900}.rings{position:absolute;right:-5vw;top:-14vw;width:37vw;height:37vw;border:1px solid rgba(255,255,255,.09);border-radius:50%}.rings:before,.rings:after{content:"";position:absolute;border:1px solid rgba(20,184,166,.12);border-radius:50%}.rings:before{inset:15%}.rings:after{inset:32%;background:rgba(48,19,101,.45)}.slide-stats{display:flex;gap:34px;margin-top:32px}.slide-stats span{display:grid}.slide-stats b{font-size:28px;color:#fff}.slide-stats small{color:#8f83a5;font-size:10px}.slide-arrow,.auto-play{position:absolute;z-index:7;top:50%;transform:translateY(-50%);border:0;background:transparent;padding:0;cursor:pointer}.slide-arrow img,.auto-play img{display:block;width:58px;height:58px}.slide-arrow.prev{left:6px}.slide-arrow.next{right:6px}.auto-play{left:50%;transform:translate(-50%,-50%);opacity:.36;transition:opacity .2s}.auto-play:hover{opacity:1}.slide-dots{position:absolute;z-index:7;bottom:24px;left:50%;transform:translateX(-50%);display:flex;gap:8px}.slide-dots button{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.25)}.slide-dots button.active{width:24px;border-radius:10px;background:var(--teal)}.scroll-mode{overflow-y:auto;background:var(--paper);padding:clamp(28px,4vw,65px);color:var(--ink)}.resume-hero{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:45px;border-bottom:1px solid var(--line)}.resume-hero h1{margin:0;font-size:clamp(50px,7vw,96px);line-height:1;letter-spacing:-.07em}.resume-hero>div>p:last-child{color:var(--muted);font-size:17px}.meta-pills{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.meta-pills span{padding:9px 15px;background:#fff;border-radius:999px;font-size:11px}.resume-grid{display:grid;grid-template-columns:1.2fr 2fr;gap:6vw;padding:48px 0 90px}.resume-grid h2{font-size:27px}.intro{font-size:18px;line-height:1.8}.stats{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:25px 0 35px}.stats article{padding:18px;background:#fff;border-radius:14px;display:grid}.stats b{font-size:27px}.stats span{font-size:10px;color:var(--muted)}.skills{display:flex;flex-wrap:wrap;gap:7px}.skills span{padding:8px 11px;border-radius:999px;background:#e8e4ed;font-size:10px}.timeline article{display:grid;grid-template-columns:110px 1fr;position:relative;padding:0 0 34px 24px;border-left:1px solid #d7d2dc}.timeline article:before{content:"";position:absolute;width:9px;height:9px;left:-5px;top:4px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px #d9f7f3}.timeline time{font-size:10px;color:var(--muted)}.timeline h3{font-size:19px;margin:0 0 4px}.timeline div>b{font-size:11px;color:var(--teal-dark)}.timeline p{font-size:12px;line-height:1.75;color:var(--muted)}.timeline footer{display:flex;gap:5px;flex-wrap:wrap}.timeline footer span{padding:5px 7px;background:#eae7ee;font-size:9px}.edit-link{position:fixed;right:22px;bottom:18px;padding:9px 14px;background:var(--ink);color:#fff;border-radius:999px;text-decoration:none;font-size:10px}.portfolio-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:35px}.portfolio-head h1{margin:0;font-size:clamp(42px,5vw,70px);letter-spacing:-.06em}.portfolio-head>p{max-width:370px;color:var(--muted);font-size:13px;line-height:1.7}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding-bottom:80px}.project{min-height:250px;padding:26px;border-radius:20px;background:#fff;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;transition:.3s}.project:hover{transform:translateY(-5px);box-shadow:var(--shadow);outline:1px solid rgba(20,184,166,.25)}.project>i{position:absolute;width:170px;height:170px;border-radius:50%;right:-50px;top:-55px;opacity:.18}.project.violet>i{background:#7c3aed}.project.cyan>i{background:#06b6d4}.project.orange>i{background:#f97316}.project.green>i{background:#22c55e}.project-no{font-size:35px;color:#c6c1cc;font-weight:800}.project small{margin-top:10px;color:var(--teal-dark);font-weight:800;letter-spacing:.12em}.project h2{margin:6px 0 8px;font-size:24px}.project p{margin:0;color:var(--muted);font-size:12px;line-height:1.7;max-width:75%}.project>b{margin-top:auto;font-size:12px}.assistant-fab{display:none}.toast{position:fixed;z-index:80;left:50%;bottom:28px;transform:translate(-50%,20px);padding:10px 16px;border-radius:999px;background:var(--ink);color:#fff;opacity:0;transition:.25s;font-size:12px;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}.watermark{position:fixed;z-index:12;pointer-events:none;inset:72px 0 0 min(29vw,999px);opacity:1}
.editor-page{min-height:100vh;background:var(--paper)}.editor-shell{max-width:1080px;margin:auto;padding:45px 22px 110px}.editor-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:30px}.editor-header h1{margin:0;font-size:42px;letter-spacing:-.05em}.editor-header p:not(.eyebrow){color:var(--muted)}.editor-header a{font-size:12px;text-decoration:none;border-bottom:1px solid}.edit-card{margin:16px 0;padding:26px;background:#fff;border-radius:18px}.edit-card h2{margin-top:0}.edit-card>p{color:var(--muted);font-size:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .wide{grid-column:1/-1}.edit-card label{display:grid;gap:7px;font-size:12px;font-weight:700}.edit-card input,.edit-card textarea{width:100%;padding:12px;border:1px solid #d9d5df;border-radius:10px;outline:none;font-size:13px;font-weight:400;resize:vertical}.edit-card input:focus,.edit-card textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(20,184,166,.12)}.json-editor{min-height:360px;font-family:Consolas,monospace}.editor-actions{position:sticky;bottom:16px;display:flex;align-items:center;justify-content:space-between;padding:15px 18px;background:var(--ink);color:#fff;border-radius:16px;box-shadow:var(--shadow);font-size:12px}.editor-actions button{padding:10px 16px;border:0;border-radius:999px;background:var(--teal);color:#fff;font-weight:700}.editor-actions .secondary{margin-right:8px;background:rgba(255,255,255,.12)}.editor-actions .saved{color:#5eead4}
@keyframes float{to{transform:translateY(-10px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes message-in{from{opacity:0;transform:translateY(8px)}}
@media(max-width:767px){.showcase{height:100dvh}.orbit{display:none}.topbar{height:62px;padding:0 10px 0 12px;grid-template-columns:36px 1fr 36px}.brand img{width:34px;height:34px}.brand b{display:none}.mode-nav{justify-self:center}.mode-nav button{padding:8px 9px;font-size:11px}.share img{width:35px;height:35px}.workspace{display:block;height:calc(100dvh - 62px)}.stage{height:100%}.assistant-panel{position:fixed;inset:0;z-index:40;transform:translateY(105%);transition:transform .4s;border:0}.assistant-panel.open{transform:none}.assistant-head button{display:block}.assistant-fab{display:flex;position:fixed;right:14px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:25;align-items:center;gap:7px;padding:6px 12px 6px 6px;border:1px solid var(--line);border-radius:999px;background:#fff;box-shadow:var(--shadow);font-size:11px;font-weight:700}.assistant-fab img{width:36px;height:36px;border-radius:50%}.slide-meta{left:14px;right:14px}.slide-meta span{display:none}.slide{padding:80px 28px 100px}.slide h2{font-size:42px}.slide-copy>p:last-of-type{font-size:15px}.slide-arrow,.auto-play{display:none}.slide>em{font-size:50vw}.slide-stats{gap:18px}.slide-stats b{font-size:22px}.scroll-mode{padding:28px 20px 110px}.resume-hero{display:block}.resume-hero h1{font-size:58px}.meta-pills{flex-direction:row;align-items:flex-start;flex-wrap:wrap;margin-top:25px}.resume-grid{grid-template-columns:1fr;gap:45px}.timeline article{grid-template-columns:1fr;padding-left:22px}.timeline time{margin-bottom:8px}.portfolio-head{display:block}.portfolio-head>p{margin-top:20px}.project-grid{grid-template-columns:1fr}.project{min-height:220px}.project p{max-width:90%}.edit-link{display:none}.watermark{inset:62px 0 0}.welcome h1{font-size:46px}.welcome-inner>p:not(.eyebrow){font-size:12px}.editor-header{display:block}.editor-header a{display:inline-block;margin-top:12px}.editor-header h1{font-size:36px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.editor-actions{gap:12px;align-items:flex-start}.editor-actions div{display:flex;flex-direction:column;gap:6px}.editor-actions .secondary{margin:0}}
@media(max-width:340px){.mode-nav button{padding:7px 6px}.topbar{padding-left:8px}.slide h2{font-size:38px}.scroll-mode{padding-left:15px;padding-right:15px}}
:focus-visible{outline:3px solid rgba(20,184,166,.5);outline-offset:2px}

/* Structured content editor */
.editor-shell{max-width:1180px}.editor-header{position:relative;padding:8px 4px 18px}.editor-header:after{content:"";position:absolute;left:4px;bottom:0;width:52px;height:3px;background:var(--teal)}
.edit-card{padding:30px}.edit-section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.edit-section-head>div{display:flex;align-items:center;gap:12px}.edit-section-head h2,.edit-section-head h3{margin:0}.edit-section-head>div>span{display:grid;place-items:center;width:31px;height:31px;border-radius:50%;background:#e9fbf8;color:var(--teal-dark);font-size:10px;font-weight:900}.edit-section-head.nested{margin:26px 0 14px;padding-top:22px;border-top:1px solid var(--line)}.edit-section-head.nested h3{font-size:14px}.edit-note{margin:-10px 0 20px!important}.add-item{padding:9px 14px;border:1px solid rgba(20,184,166,.3);border-radius:999px;background:#ecfdfa;color:var(--teal-dark);font-size:11px;font-weight:800;cursor:pointer}.add-item:hover{background:var(--teal);color:#fff}.repeat-list{display:grid;gap:12px}.repeat-item{padding:20px;border:1px solid #e2dee7;border-radius:14px;background:#fbfafc}.repeat-item>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.repeat-item>header>div{display:flex;align-items:center;gap:10px}.repeat-item>header span,.drag-index{color:var(--teal-dark);font-size:10px;font-weight:900;letter-spacing:.1em}.repeat-item>header b{font-size:14px}.delete-item{padding:7px 11px;border:0;border-radius:999px;background:#f3eff4;color:#8d6572;font-size:10px;cursor:pointer}.delete-item:hover{background:#fee2e2;color:#b91c1c}.edit-card select,.scalar-item input{width:100%;padding:12px;border:1px solid #d9d5df;border-radius:10px;background:#fff;outline:none;font-size:13px}.edit-card select:focus,.scalar-item input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(20,184,166,.12)}.compact-list{grid-template-columns:repeat(2,minmax(0,1fr))}.scalar-item{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px 12px}.empty-list{padding:26px;border:1px dashed #d9d5df;border-radius:12px;color:var(--muted);text-align:center;font-size:12px}.editor-actions button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:767px){.edit-card{padding:20px}.edit-section-head{align-items:flex-start}.edit-section-head>div{align-items:flex-start}.compact-list{grid-template-columns:1fr}.scalar-item{grid-template-columns:26px minmax(0,1fr) auto}.editor-actions{position:sticky;bottom:8px}.editor-actions>span{max-width:52%}}

/* Keep long conversations inside the fixed-height workspace. */
@media(min-width:768px){
  .workspace{min-height:0;overflow:hidden}
  .assistant-panel{height:100%;min-height:0;overflow:hidden}
  .messages{min-height:0;overscroll-behavior:contain}
  .stage{height:100%;min-height:0}
}

/* Assistant identity now lives in the global header. */
.assistant-identity{gap:11px}
.assistant-identity>img{width:43px;height:43px}
.assistant-identity>span{display:grid;gap:4px}
.assistant-identity b{font-size:14px}
.assistant-identity small{color:var(--muted);font-size:10px}
.assistant-identity small i{display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#22c55e}
.assistant-panel{grid-template-rows:minmax(0,1fr) auto auto auto auto}
.assistant-close{display:none;position:absolute;z-index:5;top:14px;right:14px;width:38px;height:38px;border:0;border-radius:50%;background:#f0edf3;font-size:24px;cursor:pointer}
.mic-row{display:flex;justify-content:flex-end;padding:0 18px 16px;background:#fff}
.mic-button{position:relative;float:none;bottom:auto;display:flex;align-items:center;justify-content:center;width:54px;height:54px;padding:12px;overflow:hidden;transition:width .25s,transform .15s,background .25s,border-color .25s,box-shadow .25s}
.mic-button img{flex:0 0 28px;width:28px;height:28px}
.mic-button span{width:0;opacity:0;overflow:hidden;white-space:nowrap;color:var(--teal-dark);font-size:11px;font-weight:700;transition:width .25s,opacity .2s,margin .25s}
.mic-button:hover{width:150px;justify-content:flex-start;background:#ecfdfa;border-color:rgba(20,184,166,.45)}
.mic-button:hover span,.mic-button.listening span{width:auto;margin-left:8px;opacity:1}
.mic-button:active,.mic-button.starting{transform:scale(.9);box-shadow:0 2px 8px rgba(20,184,166,.22)}
.mic-button.listening{width:150px;justify-content:flex-start;background:#dffaf5;border-color:var(--teal);box-shadow:0 0 0 7px rgba(20,184,166,.12)}
.mic-button.listening:before{content:"";position:absolute;inset:-1px;border:2px solid var(--teal);border-radius:999px;animation:voice-pulse 1.15s ease-out infinite}
.mic-button.unsupported{animation:button-shake .35s}
.chat-form>div{min-height:200px;align-items:end}
.chat-form textarea{min-height:184px;max-height:240px;align-self:stretch}
.chat-form button{width:54px;height:54px;padding:10px;transition:transform .15s,background .2s,box-shadow .2s}
.chat-form button:hover{background:#ecfdfa;box-shadow:0 7px 18px rgba(20,184,166,.18)}
.chat-form button:active{transform:scale(.88) rotate(-5deg);background:#ccfbf1;box-shadow:0 2px 7px rgba(20,184,166,.25)}
@keyframes voice-pulse{from{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.18)}}
@keyframes button-shake{25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}
@media(max-width:767px){.assistant-identity>span{display:none}.assistant-panel{grid-template-rows:minmax(0,1fr) auto auto auto auto}.assistant-close{display:block}.mic-button:hover{width:54px}.mic-button:hover span{width:0;margin:0;opacity:0}.mic-button.listening{width:145px}.mic-button.listening span{width:auto;margin-left:8px;opacity:1}.chat-form>div{min-height:200px}}

/* Refined assistant controls and presentation controls. */
.assistant-panel{grid-template-rows:minmax(0,1fr) auto auto auto auto}
.voice-controls{display:grid;grid-template-columns:1fr 1fr;align-items:end;min-height:70px;padding:0 18px 2px;background:#fff}
.voice-controls .bottom-button{position:relative;display:none;float:none;left:auto;bottom:auto;justify-self:center;transform:translateY(10px);width:48px;height:48px;margin:0;padding:10px}
.voice-controls .bottom-button{grid-column:1}
.voice-controls .bottom-button.show{display:block}
.voice-controls .mic-button{justify-self:end;transform:translateY(0);width:60px;height:60px;padding:11px;overflow:visible}
.voice-controls .mic-button{grid-column:2}
.voice-controls .mic-button img{width:45px;height:45px;flex-basis:45px}
.voice-controls .mic-button:hover,.voice-controls .mic-button.listening{width:164px}
.voice-controls .mic-button:active,.voice-controls .mic-button.starting{transform:scale(.92)}
.suggestions{padding:6px 16px 10px}
.message-body{display:grid;gap:7px;max-width:78%}.message-body>p{max-width:none}.message-followups{display:flex;flex-wrap:wrap;gap:6px;padding-left:2px}.message-followups button{padding:6px 10px;border:1px solid rgba(20,184,166,.25);border-radius:999px;background:#ecfdfa;color:var(--teal-dark);font-size:10px;line-height:1.35;cursor:pointer;transition:background .2s,border-color .2s,transform .15s}.message-followups button:hover{transform:translateY(-1px);border-color:var(--teal);background:#d9faf5}.message-followups button:disabled{opacity:.45;cursor:default;transform:none}
.chat-form{padding-top:0}
.chat-form>div{min-height:140px}
.chat-form textarea{min-height:124px;max-height:180px}
.chat-form button{position:relative;width:60px;height:60px;padding:9px;overflow:visible}
.chat-form button img{width:40px;height:40px}
.mic-button.ripple-active:after,.chat-form button.ripple-active:after,.mic-button.listening:after{content:"";position:absolute;inset:-8px;border:2px solid rgba(20,184,166,.8);border-radius:999px;pointer-events:none;animation:glow-ripple .7s ease-out both}
.mic-button.listening:after{animation:glow-ripple 1.25s ease-out infinite}
.mic-button.listening{background:#dffaf5;border-color:var(--teal);box-shadow:0 0 18px rgba(20,184,166,.38),0 0 0 7px rgba(20,184,166,.1)}
.mic-button.listening:before{display:none}
.slide-arrow{opacity:.5;transition:opacity .22s,transform .22s}
.slide-arrow:hover{opacity:1}
.auto-play{opacity:.16}
.auto-play:hover{opacity:.72}
@keyframes glow-ripple{0%{opacity:.95;transform:scale(.82);box-shadow:0 0 8px rgba(20,184,166,.45)}70%{opacity:.3;box-shadow:0 0 26px rgba(20,184,166,.5)}100%{opacity:0;transform:scale(1.28);box-shadow:0 0 34px rgba(20,184,166,0)}}
@media(max-width:767px){.voice-controls .mic-button:hover{width:60px}.voice-controls .mic-button.listening{width:154px}.chat-form>div{min-height:140px}.chat-form textarea{min-height:124px}}

/* Keep the voice control circular; show state in a separate tooltip. */
.voice-controls .mic-button,.voice-controls .mic-button:hover,.voice-controls .mic-button.listening{width:60px;min-width:60px;height:60px;border-radius:50%;justify-content:center}
.voice-controls .mic-button span{position:absolute;z-index:3;right:72px;top:50%;width:max-content;max-width:150px;height:auto;margin:0;padding:7px 10px;overflow:visible;border:1px solid rgba(20,184,166,.2);border-radius:999px;background:rgba(255,255,255,.96);box-shadow:0 8px 22px rgba(26,15,48,.12);color:var(--teal-dark);opacity:0;transform:translate(6px,-50%);transition:opacity .2s,transform .2s;pointer-events:none}
.voice-controls .mic-button:hover span,.voice-controls .mic-button.listening span{width:max-content;margin:0;opacity:1;transform:translate(0,-50%)}
.voice-controls .mic-button.listening{background:#dffaf5;box-shadow:0 0 18px rgba(20,184,166,.38),0 0 0 7px rgba(20,184,166,.1)}
@media(max-width:767px){.voice-controls .mic-button,.voice-controls .mic-button:hover,.voice-controls .mic-button.listening{width:60px}.voice-controls .mic-button span{right:68px}}

/* Final icon and composer alignment refinements. */
.chat-form>div{grid-template-columns:minmax(0,1fr) 90px}
.chat-form button{justify-self:start;width:54px;height:54px;padding:8px}
.chat-form button img{width:38px;height:38px}

/* Center the jump control and tighten the send control. */
.voice-controls .bottom-button,.voice-controls .bottom-button.show{position:absolute;z-index:6;top:50%;left:50%;grid-column:auto;display:none;margin:0;transform:translate(-50%,-50%)}
.voice-controls .bottom-button.show{display:block}
.chat-form>div{grid-template-columns:minmax(0,1fr) 80px}
.chat-form button{width:38px;height:38px;padding:0;border-radius:50%}
.chat-form button img{width:38px;height:38px}

/* Requested position offsets. */
.voice-controls .bottom-button,.voice-controls .bottom-button.show{top:calc(50% + 200px)}
.chat-form>div{grid-template-columns:minmax(0,1fr) 45px}

/* Quiet scrollbar for the AI conversation panel. */
.assistant-panel .messages{scrollbar-width:thin;scrollbar-color:rgba(91,85,97,.18) transparent}
.assistant-panel .messages::-webkit-scrollbar{width:4px;height:4px}
.assistant-panel .messages::-webkit-scrollbar-track{background:transparent}
.assistant-panel .messages::-webkit-scrollbar-thumb{border-radius:999px;background:rgba(91,85,97,.16)}
.assistant-panel .messages::-webkit-scrollbar-thumb:hover{background:rgba(91,85,97,.3)}
.assistant-panel .messages::-webkit-scrollbar-button,.assistant-panel .messages::-webkit-scrollbar-button:vertical:start:decrement,.assistant-panel .messages::-webkit-scrollbar-button:vertical:end:increment{display:none!important;width:0!important;height:0!important;min-height:0!important;border:0!important;background:transparent!important}

/* Keep voice actions floating inside the conversation zone. */
.assistant-panel{grid-template-rows:minmax(0,1fr) auto auto}
.conversation-zone{position:relative;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;padding-bottom:5px;overflow:hidden;border-bottom:1px solid rgba(31,20,45,.09);background:#fff}
.conversation-zone .messages{min-height:0;padding-bottom:88px}
.conversation-zone .suggestions{position:relative;z-index:4;padding:6px 16px 10px;background:#fff}
.conversation-zone .voice-controls{position:absolute;z-index:7;left:0;right:0;bottom:50px;display:block;height:70px;min-height:0;padding:0;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 44%);pointer-events:none}
.conversation-zone .voice-controls .bottom-button,.conversation-zone .voice-controls .bottom-button.show{position:absolute;top:50%;left:50%;display:none;margin:0;transform:translate(-50%,-50%);pointer-events:auto}
.conversation-zone .voice-controls .bottom-button.show{display:block}
.conversation-zone .voice-controls .mic-button,.conversation-zone .voice-controls .mic-button:hover,.conversation-zone .voice-controls .mic-button.listening{position:absolute;top:50%;right:18px;left:auto;margin:0;transform:translateY(-50%);pointer-events:auto}

#analyticsNotice{position:fixed;z-index:20;bottom:7px;left:16px;max-width:310px;margin:0;color:#938da5;font-size:9px}
#analyticsNotice summary{display:inline;list-style:none;cursor:pointer;color:inherit}
#analyticsNotice summary::-webkit-details-marker{display:none}
#analyticsNotice summary::marker{display:none;content:""}
#analyticsNotice[open] p{position:absolute;bottom:18px;left:0;width:290px;margin:0;padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:rgba(31,22,58,.96);box-shadow:0 8px 24px rgba(0,0,0,.24);color:#c8c3d1;font-size:10px;line-height:1.65}
.conversation-zone .voice-controls .mic-button:active,.conversation-zone .voice-controls .mic-button.starting{transform:translateY(-50%) scale(.92)}

/* Replace the generated slide demo with the supplied 16:9 JPG deck. */
.slides-mode{background:#120a20}
.slide.image-slide{display:grid;place-items:center;padding:0;background:#120a20;overflow:hidden}
.slide.image-slide:before{content:"";position:absolute;inset:-24px;background-image:var(--slide-image);background-position:center;background-size:cover;filter:blur(24px) brightness(.32) saturate(.75);opacity:.55;transform:scale(1.06)}
.slide.image-slide>img{position:relative;z-index:2;display:block;width:100%;height:100%;object-fit:contain;object-position:center;user-select:none}
.slides-mode .slide-meta{top:16px;align-items:center;pointer-events:none}.slides-mode .slide-meta b,.slides-mode .slide-meta span{padding:7px 10px;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:rgba(18,10,32,.48);backdrop-filter:blur(10px);color:rgba(255,255,255,.86)}
.slides-mode .slide-dots{max-width:calc(100% - 150px);padding:7px 10px;border-radius:999px;background:rgba(18,10,32,.42);backdrop-filter:blur(9px)}
.slides-mode .slide-dots button{cursor:pointer}.slides-mode .slide-dots button.active{width:20px}
.slides-mode .auto-play.playing{opacity:0;visibility:hidden;pointer-events:none}
.slides-mode .image-slide.active{cursor:pointer}
@media(max-width:767px){.slide.image-slide{padding:0}.slides-mode .slide-meta{top:12px}.slides-mode .slide-meta b{font-size:9px}.slides-mode .slide-dots{max-width:calc(100% - 30px);gap:6px;padding:6px 8px}.slides-mode .slide-dots button{width:6px;height:6px}.slides-mode .slide-dots button.active{width:16px}}

/* Formal resume mode v1.2 — scoped to #resume so other modes stay unchanged. */
#resume{padding:0;overflow:hidden;background:#f7f6f8}
#resume .formal-resume{height:100%;min-width:0;display:grid;grid-template-columns:minmax(330px,42%) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);overflow:hidden;color:#211d25;background:#f7f6f8;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.formal-resume-title{grid-column:1/-1;display:flex;align-items:flex-end;justify-content:space-between;gap:38px;padding:27px 32px 24px;border-bottom:1px solid #cbc8cf;background:#f7f6f8}
.formal-kicker{margin:0 0 9px;color:#079f91;font-size:10px;font-weight:700;letter-spacing:.18em}.formal-resume-title h1{margin:0;color:#17131b;font-size:clamp(38px,4vw,58px);font-weight:760;line-height:1;letter-spacing:-.065em}.formal-resume-title>div:first-child>p:last-child{margin:11px 0 0;color:#706a75;font-size:14px;font-weight:400}
.formal-head-tags{max-width:380px;display:flex;justify-content:flex-end;align-content:flex-end;gap:7px;flex-wrap:wrap}.formal-head-tags span,.formal-skill-tags button{display:inline-flex;align-items:center;padding:7px 11px;border:1px solid #aaa5af;border-radius:999px;background:#fff;color:#514b56;font-size:10px;font-weight:500}.formal-head-tags span{cursor:default}
.formal-profile{grid-column:1;grid-row:2;min-height:0;padding:24px 28px 68px;overflow-y:auto;border-right:1px solid #cbc8cf;background:#f7f6f8;scrollbar-width:thin;scrollbar-color:rgba(91,85,97,.24) transparent}.formal-profile>section+section{padding-top:28px}.formal-profile h2,.formal-experience h2{margin:0 0 14px;color:#332e37;font-size:12px;font-weight:600;letter-spacing:.055em}.formal-profile h2 span,.formal-experience h2 span{color:#079f91}.formal-intro{margin:0;color:#5d5762;font-size:12px;font-weight:400;line-height:1.82;white-space:pre-line}
.formal-abilities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.formal-abilities button{position:relative;isolation:isolate;min-height:100px;display:flex;align-items:flex-end;justify-content:space-between;overflow:hidden;padding:16px;border:1px solid #aaa5af;border-radius:9px;background-color:#faf9fb;background-image:linear-gradient(90deg,rgba(247,246,248,.97) 0%,rgba(247,246,248,.82) 48%,rgba(247,246,248,.3) 100%),var(--ability-image,url('assets/ability-visuals-v1.png'));background-size:cover;background-position:center;background-repeat:no-repeat;cursor:pointer;text-align:left;transition:.25s}.formal-abilities button:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 48%,rgba(255,255,255,.38))}.formal-abilities b{color:#252029;font-size:17px;font-weight:620;letter-spacing:-.02em;text-shadow:0 1px 8px #fff}.formal-abilities i{color:#9b95a0;font-size:19px;font-style:normal;font-weight:400;transition:.25s}.formal-abilities button:hover,.formal-abilities button:focus-visible{transform:translateY(-3px);border-color:var(--teal);box-shadow:var(--shadow)}.formal-abilities button:hover i{color:var(--teal);transform:translateX(3px)}
.formal-skill-tags{display:flex;gap:7px;flex-wrap:wrap}.formal-skill-tags button{cursor:pointer;transition:.2s}.formal-skill-tags button:hover{transform:translateY(-2px);border-color:var(--teal);background:#edfffc;color:#087f75}
.formal-experience{grid-column:2;grid-row:2;min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;background:#f7f6f8}.formal-experience>header{padding:20px 16px 0}.formal-experience>header h2{margin:0}.formal-experience-scroll{position:relative;min-height:0;display:grid;grid-template-columns:42px minmax(0,1fr);padding:0 16px 52px 13px;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:rgba(91,85,97,.24) transparent}
.formal-timeline-nav{position:relative;height:100%;min-height:100%;z-index:3}.formal-timeline-nav:before{content:"";position:absolute;left:20px;top:var(--timeline-top,36px);width:1px;height:var(--timeline-height,0);background:#918b96}.formal-timeline-dot{appearance:none;position:absolute;left:14px;width:13px;height:13px;min-width:13px;aspect-ratio:1;padding:0;border:2px solid #f7f6f8;border-radius:50%;background:#aaa4ae;box-shadow:0 0 0 1px #8f8994;cursor:pointer;transition:.25s}.formal-timeline-dot.active{background:var(--teal);box-shadow:0 0 0 5px #dcf8f4}
.formal-job-list{min-width:0}.formal-job{padding:24px 0;border-bottom:1px solid #d8d5db;scroll-margin-top:8px}.formal-job-summary{display:grid;grid-template-columns:92px minmax(150px,1fr) 42px;gap:13px;align-items:start}.formal-job time{display:inline-block;padding:4px 0;border:0;background:transparent;color:#087f75;font-size:12px;font-weight:750;text-align:left}.formal-job-title h3{margin:0;color:#26212a;font-size:16px;font-weight:650;letter-spacing:-.018em}.formal-job-title-toggle{padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.formal-job-title-toggle:hover,.formal-job-title-toggle:focus-visible{color:#079f91;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;outline:0}.formal-job-title>b{display:block;margin-top:6px;color:#79737e;font-size:11px;font-weight:500}.formal-job-toggle{width:34px;height:34px;border:1px solid #aaa5af;border-radius:2px;background:#fff;color:#4f4954;font-size:18px;font-weight:400;cursor:pointer;transition:.25s}.formal-job.expanded .formal-job-toggle{border-color:var(--teal);color:var(--teal)}
.formal-job-detail{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .42s ease,opacity .3s}.formal-job-detail>div{overflow:hidden}.formal-job.expanded .formal-job-detail{grid-template-rows:1fr;opacity:1}.formal-job-copy{margin:14px 0 10px;padding:15px;border:0;background:#fbfafc;color:#5b5560;font-size:12px;font-weight:400;line-height:1.72;white-space:pre-line;cursor:pointer}.formal-case-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.formal-case-grid button{padding:9px 11px;border:0;background:#eceaee;color:#5b5560;font-size:11px;font-weight:450;text-align:center;cursor:pointer;transition:.2s}.formal-case-grid button:hover{transform:translateY(-2px);background:#e1f5f2;color:#087f75}
.formal-profile::-webkit-scrollbar,.formal-experience-scroll::-webkit-scrollbar,#resume::-webkit-scrollbar{width:4px;height:4px}.formal-profile::-webkit-scrollbar-track,.formal-experience-scroll::-webkit-scrollbar-track,#resume::-webkit-scrollbar-track{background:transparent}.formal-profile::-webkit-scrollbar-thumb,.formal-experience-scroll::-webkit-scrollbar-thumb,#resume::-webkit-scrollbar-thumb{border-radius:999px;background:rgba(91,85,97,.22)}.formal-profile::-webkit-scrollbar-thumb:hover,.formal-experience-scroll::-webkit-scrollbar-thumb:hover,#resume::-webkit-scrollbar-thumb:hover{background:rgba(91,85,97,.38)}.formal-profile::-webkit-scrollbar-button,.formal-experience-scroll::-webkit-scrollbar-button,#resume::-webkit-scrollbar-button{display:none!important;width:0!important;height:0!important;min-height:0!important;border:0!important;background:transparent!important}
@media(max-width:767px){#resume{overflow-y:auto;padding:0 0 100px}.formal-resume{display:block;height:auto;min-height:100%;overflow:visible}.formal-resume-title{display:block;padding:26px 20px}.formal-resume-title h1{font-size:45px}.formal-head-tags{max-width:none;justify-content:flex-start;margin-top:18px}.formal-profile,.formal-experience{height:auto;overflow:visible;border-right:0}.formal-profile{padding:25px 20px 42px}.formal-experience{display:block;border-top:7px solid var(--paper)}.formal-experience>header{padding:24px 20px 0}.formal-experience-scroll{display:block;overflow:visible;padding:0 20px 90px}.formal-timeline-nav{display:none}.formal-job-summary{grid-template-columns:1fr 40px}.formal-job time{grid-column:1;width:max-content}.formal-job-title{grid-column:1}.formal-job-toggle{grid-column:2;grid-row:1/3}.formal-abilities{gap:9px}.formal-abilities button{min-height:92px;padding:14px}}

/* Project media configuration and resume presentation. */
.case-media-editor{margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}.case-media-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:12px}.case-media-head>div{display:grid;gap:4px}.case-media-head b{font-size:13px}.case-media-head small{color:var(--muted);font-size:10px;font-weight:400}.case-editor-list{display:grid;gap:10px}.case-editor{padding:14px;border:1px solid #e6e2e9;border-radius:12px;background:#fff}.case-editor>header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.case-editor>header input{font-weight:700}.media-editor-list{display:grid;gap:7px;margin-top:10px}.media-editor-row{display:grid;grid-template-columns:88px minmax(180px,1.35fr) minmax(140px,1fr) auto;gap:7px}.media-editor-row input,.media-editor-row select,.case-editor>header input{width:100%;padding:10px;border:1px solid #d9d5df;border-radius:8px;background:#fff;font-size:11px}.media-add{margin-top:9px;padding:7px 10px;border:1px dashed rgba(20,184,166,.45);border-radius:8px;background:#f2fcfa;color:var(--teal-dark);font-size:10px;cursor:pointer}
.formal-case-card{min-width:0;background:#eceaee}.formal-case-card>button{width:100%;min-height:34px}.formal-case-card>[data-case-toggle]:after{content:"＋";float:right;color:#8b8490}.formal-case-card.open>[data-case-toggle]:after{content:"−";color:var(--teal-dark)}.formal-case-media{display:none;gap:5px;padding:0 7px 7px}.formal-case-card.open .formal-case-media{display:grid}.formal-case-media figure{position:relative;margin:0;overflow:hidden;background:#fff}.formal-case-media img,.formal-case-media video{display:block;width:100%;max-height:170px;aspect-ratio:16/9;object-fit:contain;background:#f8f7f9}.formal-case-media figcaption{padding:6px 8px;color:#6b6570;background:#fff;font-size:9px;line-height:1.4}.formal-case-grid button:hover{transform:none}
@media(max-width:767px){.case-media-head{align-items:flex-start}.media-editor-row{grid-template-columns:1fr}.formal-case-grid{grid-template-columns:1fr}.formal-case-media img,.formal-case-media video{max-height:none}}
.upload-media{padding:9px 11px;border:1px solid rgba(20,184,166,.35);border-radius:8px;background:#e9fbf8;color:var(--teal-dark);font-size:10px;font-weight:800;white-space:nowrap;cursor:pointer}.upload-media:hover{background:var(--teal);color:#fff}.upload-media:disabled{opacity:.55;cursor:wait}.media-editor-row{grid-template-columns:80px minmax(160px,1.25fr) minmax(130px,.9fr) auto auto}
.upload-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.editor-image-preview{display:block;width:min(420px,100%);max-height:240px;margin-top:9px;border-radius:10px;object-fit:contain;background:#fff}
#slidesEditor{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}#slidesEditor .repeat-item{min-width:0}#slidesEditor .form-grid{grid-template-columns:1fr}#slidesEditor .form-grid .wide{grid-column:auto}#slidesEditor .editor-image-preview{width:100%;max-width:none;aspect-ratio:16/9;max-height:none}
#abilitiesEditor{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}#abilitiesEditor .repeat-item{min-width:0}#abilitiesEditor .form-grid{grid-template-columns:1fr}#abilitiesEditor .form-grid .wide{grid-column:auto}.case-editor-list{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.case-editor{min-width:0}.case-editor .media-editor-row{grid-template-columns:80px minmax(0,1fr)}.color-control{display:flex;align-items:center;gap:10px}.color-control input[type="color"]{flex:none;width:52px;height:40px;padding:3px;border:1px solid #d9d5df;border-radius:8px;background:#fff;cursor:pointer}.color-control output{color:var(--muted);font-family:ui-monospace,Consolas,monospace;font-size:12px}
@media(max-width:820px){#slidesEditor,#abilitiesEditor,.case-editor-list{grid-template-columns:1fr}}
.slide-question-bubble{position:absolute;z-index:8;right:38px;bottom:68px;display:grid;grid-template-columns:34px minmax(160px,320px) auto;align-items:center;gap:10px;max-width:min(560px,70%);padding:11px 17px 11px 11px;border:1px solid rgba(255,255,255,.58);border-radius:28px;background:linear-gradient(135deg,rgba(255,255,255,.76),rgba(236,252,250,.52));-webkit-backdrop-filter:blur(13px) saturate(135%);backdrop-filter:blur(13px) saturate(135%);color:#28222e;box-shadow:inset 0 1px 0 rgba(255,255,255,.72),inset -8px -9px 20px rgba(20,184,166,.06),0 14px 36px rgba(20,10,40,.2);opacity:0;visibility:hidden;transform:translateX(35px) translateY(8px);transition:opacity .45s,visibility .45s;cursor:pointer;text-align:left}.slide-question-bubble:before,.slide-question-bubble:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.58);border-radius:50%;background:rgba(239,253,250,.54);box-shadow:inset 0 1px 2px rgba(255,255,255,.8)}.slide-question-bubble:before{right:20px;bottom:-11px;width:16px;height:16px}.slide-question-bubble:after{right:12px;bottom:-20px;width:8px;height:8px}.slide-question-bubble.show{opacity:1;visibility:visible;animation:question-bubble-float 5.2s ease-in-out infinite alternate}.slide-question-bubble img{width:34px;height:34px;border-radius:50%;box-shadow:0 2px 9px rgba(20,184,166,.2)}.slide-question-bubble span{font-size:12px;line-height:1.5}.slide-question-bubble b{color:var(--teal-dark);font-size:10px;white-space:nowrap}.slide-question-bubble:hover{animation-play-state:paused;background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(236,252,250,.68));box-shadow:inset 0 1px 0 #fff,0 18px 42px rgba(20,10,40,.28)}
@keyframes question-bubble-float{0%{transform:translate3d(0,8px,0) rotate(-.25deg)}35%{transform:translate3d(-12px,-3px,0) rotate(.15deg)}70%{transform:translate3d(8px,-11px,0) rotate(-.1deg)}100%{transform:translate3d(-5px,-18px,0) rotate(.2deg)}}
.slide-question-bubble{right:35px;bottom:45px;display:grid;width:240px;height:240px;max-width:none;padding:58px 48px;border:0;border-radius:50%;background:transparent url('assets/ai-question-bubble.png') center/contain no-repeat;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;color:#183248;text-align:center;place-items:center}.slide-question-bubble:before,.slide-question-bubble:after,.slide-question-bubble>img,.slide-question-bubble>b{display:none}.slide-question-bubble>span{display:-webkit-box;max-width:142px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:4;font-size:12px;font-weight:650;line-height:1.55;text-shadow:0 1px 3px rgba(255,255,255,.95)}.slide-question-bubble:hover{background:transparent url('assets/ai-question-bubble.png') center/contain no-repeat;filter:brightness(1.04) drop-shadow(0 12px 18px rgba(48,125,174,.22));box-shadow:none}
.slide-question-bubble.show{animation-duration:2.6s;animation-timing-function:ease-in-out}@keyframes question-bubble-float{0%{transform:translate3d(10px,14px,0) rotate(-1deg)}30%{transform:translate3d(-18px,2px,0) rotate(.65deg)}65%{transform:translate3d(16px,-15px,0) rotate(-.45deg)}100%{transform:translate3d(-9px,-30px,0) rotate(.8deg)}}
@media(max-width:767px){.slide-question-bubble{display:none!important}}
.editor-multiselect{margin:0;padding:12px;border:1px solid #d9d5df;border-radius:12px}.editor-multiselect legend{padding:0 6px;font-size:12px;font-weight:700}.editor-multiselect>div{display:flex;flex-wrap:wrap;gap:8px}.editor-multiselect label{display:block}.editor-multiselect input{position:absolute;opacity:0;pointer-events:none}.editor-multiselect span{display:block;padding:8px 11px;border:1px solid #ddd8e2;border-radius:999px;background:#fff;color:#625c68;font-size:11px;font-weight:500;cursor:pointer;transition:.2s}.editor-multiselect input:checked+span{border-color:var(--teal);background:#e8fbf8;color:var(--teal-dark);box-shadow:0 0 0 2px rgba(20,184,166,.1)}.editor-multiselect input:focus-visible+span{outline:2px solid var(--teal);outline-offset:2px}
.message.pending p{color:#756e7b}.message.pending p:after{content:'…';display:inline-block;width:1.2em;overflow:hidden;vertical-align:bottom;animation:thinking-dots 1.2s steps(4,end) infinite}@keyframes thinking-dots{0%{width:0}100%{width:1.2em}}

/* Editor mode navigation */
.editor-mode-tabs{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:0 0 20px;padding:5px;border:1px solid #e2dee7;border-radius:15px;background:rgba(247,246,248,.94);box-shadow:0 8px 24px rgba(34,25,52,.06);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.editor-mode-tabs button{min-height:46px;padding:10px 16px;border:0;border-radius:11px;background:transparent;color:#746d7c;font:700 14px/1.2 inherit;cursor:pointer;transition:background .2s ease,color .2s ease,box-shadow .2s ease,transform .15s ease}
.editor-mode-tabs button:hover{color:var(--teal-dark);background:rgba(255,255,255,.6)}
.editor-mode-tabs button:active{transform:scale(.985)}
.editor-mode-tabs button.active{background:#fff;color:var(--ink);box-shadow:0 4px 14px rgba(38,27,54,.1)}
.edit-card[hidden]{display:none!important}
@media(max-width:620px){.editor-mode-tabs{gap:3px;padding:4px}.editor-mode-tabs button{min-height:42px;padding:8px 5px;font-size:12px}}
.cms-auth-card label[hidden]{display:none!important}

/* Formal portfolio mode: the existing AI panel remains untouched. */
#portfolio{padding:0;overflow:hidden;background:var(--paper)}.formal-portfolio{position:relative;display:grid;grid-template-rows:162px minmax(0,1fr);height:100%;overflow:hidden}.formal-portfolio-title{display:flex;align-items:flex-end;padding:27px 32px 24px;border-bottom:1px solid #cbc8cf;background:var(--paper)}.formal-portfolio-title p{margin:0 0 9px;color:#079f91;font-size:10px;font-weight:700;letter-spacing:.18em}.formal-portfolio-title h1{margin:0;color:#17131b;font-size:clamp(38px,4vw,58px);font-weight:760;line-height:1;letter-spacing:-.065em}.formal-portfolio-title small{display:block;margin-top:11px;color:#706a75;font-size:14px}.portfolio-detail-heading{align-self:center;margin-left:auto;padding:0 72px 0 36px;text-align:right;opacity:0;transform:translateY(4px);transition:opacity .2s,transform .2s;pointer-events:none}.portfolio-detail-heading.visible{opacity:1;transform:none}.portfolio-detail-heading small{margin:0;color:#079f91;font-size:10px;font-weight:800;letter-spacing:.12em}.portfolio-detail-heading h2{margin:7px 0 0;color:#211a32;font-size:clamp(18px,1.8vw,28px);line-height:1.2}.formal-portfolio-scroll{overflow-y:auto;padding:28px 32px 80px;scrollbar-width:thin;scrollbar-color:rgba(91,85,97,.25) transparent}.formal-portfolio-scroll::-webkit-scrollbar,.portfolio-detail-scroll::-webkit-scrollbar{width:4px}.formal-portfolio-scroll::-webkit-scrollbar-thumb,.portfolio-detail-scroll::-webkit-scrollbar-thumb{border-radius:999px;background:rgba(91,85,97,.28)}.formal-portfolio-scroll::-webkit-scrollbar-button,.portfolio-detail-scroll::-webkit-scrollbar-button{display:none;width:0;height:0}.portfolio-category{margin-bottom:38px}.portfolio-category h2{margin:0 0 18px;font-size:14px;font-weight:650}.portfolio-category h2 span{margin-right:8px;color:var(--teal);font-size:16px;font-weight:850;letter-spacing:.04em}.portfolio-works{display:grid;grid-template-columns:repeat(3,minmax(0,400px));gap:22px 16px}.portfolio-work{width:100%;max-width:400px;padding:0;border:0;background:transparent;cursor:pointer;text-align:left;transition:transform .25s}.portfolio-work:hover{transform:translateY(-4px)}.portfolio-work strong{display:block;margin:0 0 10px;color:#2d2831;font-size:14px;font-weight:700;line-height:1.4}.portfolio-work-preview{display:block;width:100%;aspect-ratio:8/5;overflow:hidden;background:#fff;transition:box-shadow .25s}.portfolio-work:hover .portfolio-work-preview{box-shadow:0 13px 30px rgba(31,20,45,.13)}.portfolio-work img,.portfolio-work video{display:block;width:100%;height:100%;object-fit:contain;background:#fff}.portfolio-work-empty{display:block;width:100%;height:100%;background:#fff}.portfolio-detail-layer{position:absolute;z-index:10;inset:162px 0 0;background:#17131b;opacity:0;visibility:hidden;transition:opacity .28s,visibility .28s}.portfolio-detail-layer.open{opacity:1;visibility:visible}.portfolio-detail-close{position:absolute;z-index:12;right:14px;top:12px;width:38px;height:38px;border:0;border-radius:50%;background:#fff;color:#3d3741;box-shadow:0 5px 18px rgba(0,0,0,.18);font-size:24px;cursor:pointer}.portfolio-detail-scroll{height:100%;overflow-y:auto;padding:12px 32px 45px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.45) transparent}.portfolio-detail-content{display:grid;width:min(1180px,100%);margin:0 auto;gap:18px}.portfolio-detail-content img,.portfolio-detail-content video{display:block;width:100%;max-height:720px;object-fit:contain;background:transparent}
@media(max-width:767px){#portfolio{overflow-y:auto}.formal-portfolio{display:block;height:auto;min-height:100%}.formal-portfolio-title{height:150px;padding:26px 20px}.formal-portfolio-title h1{font-size:45px}.portfolio-detail-heading{display:none}.formal-portfolio-scroll{overflow:visible;padding:25px 20px 100px}.portfolio-works{grid-template-columns:1fr}.portfolio-work{max-width:none;height:auto}.portfolio-work-preview{aspect-ratio:8/5}.portfolio-work img,.portfolio-work video{height:100%;min-height:0}.portfolio-detail-layer{position:fixed;inset:62px 0 0}.portfolio-detail-scroll{padding:58px 16px 40px}.portfolio-detail-close{right:12px;top:10px}}
@media(max-width:767px){.media-editor-row{grid-template-columns:1fr}.upload-media{width:100%}}
.portfolio-work video{display:block;width:100%;height:100%;object-fit:contain;background:#fff}

/* 2026-09-05 palette refresh: color-only overrides. */
:root{
  --ink:#211a32;
  --muted:#8b8594;
  --paper:#f7f7fa;
  --white:#fff;
  --teal:#12b8a6;
  --teal-dark:#079b8d;
  --purple:#21163f;
  --purple-2:#39266d;
  --line:#e5e2ea;
  --shadow:0 20px 60px rgba(33,22,63,.12);
}
.welcome{background:radial-gradient(circle at 50% 42%,#fff 0,#f8f8fb 38%,#efedf5 100%)}
.progress{background:#e5e2ea}
.orbit{border-color:rgba(57,38,109,.12)}
.topbar{background:rgba(255,255,255,.92)}
.mode-nav,.assistant-head button,.assistant-close{background:#f1eff5}
.mode-nav button.active{color:#211a32;box-shadow:0 3px 12px rgba(57,38,109,.1)}
.assistant-panel,.mic-row{background:#fff}
.assistant-head small i,.assistant-identity small i{background:#31bd78}
.message p{background:#f3f2f6;color:#4d4857}
.message.user p{background:#12b8a6;color:#fff}
.message.pending p{color:#8b8594}
.suggestions button{border-color:rgba(18,184,166,.28);background:#e8f8f5;color:#079b8d}
.suggestions button:hover{border-color:#12b8a6;background:#d9f3ef;color:#067d73}
.chat-form>div,.edit-card input,.edit-card textarea,.edit-card select,.scalar-item input,.media-editor-row input,.media-editor-row select,.case-editor>header input,.color-control input[type="color"]{border-color:#e5e2ea}
.chat-form button{border-color:#12b8a6}
.wechat-hint{color:#b66b16}
.stage,.slides-mode{background:#21163f}
.rings:after{background:rgba(57,38,109,.45)}
.slide-copy>p:last-of-type{color:#c9c1d7}
.slide-stats small{color:#9f96b0}
.scroll-mode,.editor-page,#portfolio,.formal-portfolio-title{background:#f7f7fa}
.stats article,.meta-pills span,.edit-card,.repeat-item,.case-editor{background:#fff}
.stats b,.project>b{color:#f29b38}
.skills span,.timeline footer span{background:#efedf3;color:#4d4857}
.timeline article{border-left-color:#d9d5e0}
.timeline article:before{box-shadow:0 0 0 4px #d9f3ef}
.project:hover{outline-color:rgba(18,184,166,.3);box-shadow:0 20px 60px rgba(33,22,63,.12)}
.project-no{color:#c9c5d0}
.editor-actions,.edit-link,.toast{background:#211a32}
.editor-actions .saved{color:#69ded2}
.edit-section-head>div>span,.upload-media{background:#e8f8f5;color:#079b8d}
.add-item,.media-add{border-color:rgba(18,184,166,.38);background:#e8f8f5;color:#079b8d}
.add-item:hover,.upload-media:hover{background:#12b8a6;color:#fff}
.repeat-item,.case-editor{border-color:#e5e2ea}
.delete-item{background:#f6f0f2;color:#956573}
.formal-resume-title{background:#fff;border-bottom-color:#e5e2ea}
.formal-resume-title h1,.formal-portfolio-title h1{color:#211a32}
.formal-head-tags span{border-color:#e5e2ea;background:#f7f7fa;color:#4d4857}
.formal-profile{background:#fff;border-right-color:#e5e2ea}
.formal-profile h2,.formal-experience h2,.formal-portfolio-title p,.portfolio-category h2 span{color:#079b8d}
.formal-intro,.formal-job-copy{color:#4d4857}
.formal-abilities button{border-color:#e5e2ea;background:#f7f7fa;color:#211a32}
.formal-abilities button:hover{border-color:#12b8a6;background:#e8f8f5}
.formal-skill-tags button{border-color:#e5e2ea;background:#fff;color:#4d4857}
.formal-skill-tags button:hover{border-color:#12b8a6;background:#e8f8f5;color:#079b8d}
.formal-timeline-nav:before{background:#aaa4b1}
.formal-timeline-dot{border-color:#f7f7fa;background:#aaa4b1;box-shadow:0 0 0 1px #918b99}
.formal-timeline-dot.active{background:#12b8a6;box-shadow:0 0 0 5px #d9f3ef}
.formal-job{border-bottom-color:#e5e2ea}
.formal-job time,.formal-job-title-toggle:hover,.formal-job-title-toggle:focus-visible{color:#079b8d}
.formal-job-title h3{color:#211a32}
.formal-job-title>b{color:#8b8594}
.formal-job-toggle{border-color:#aaa4b1;color:#4d4857;background:#fff}
.formal-job-copy{background:#f7f7fa}
.formal-case-card,.formal-case-grid button{background:#efedf3;color:#4d4857}
.formal-case-grid button:hover,.formal-case-card.open>[data-case-toggle]{background:#e8f8f5;color:#079b8d}
.editor-mode-tabs{border-color:#e5e2ea;background:rgba(247,247,250,.95);box-shadow:0 8px 24px rgba(33,22,63,.06)}
.editor-mode-tabs button{color:#8b8594}
.editor-mode-tabs button:hover{color:#079b8d}
.editor-mode-tabs button.active{background:#fff;color:#211a32;box-shadow:0 4px 14px rgba(33,22,63,.1)}
.formal-portfolio-title{border-bottom-color:#e5e2ea}
.formal-portfolio-title small{color:#8b8594}
.portfolio-work strong{color:#211a32}
.portfolio-work:hover .portfolio-work-preview{box-shadow:0 13px 30px rgba(33,22,63,.13)}
.portfolio-detail-layer{background:#21163f}
.portfolio-detail-content small{color:#69ded2}
.slide-question-bubble b{color:#079b8d}
.editor-multiselect{border-color:#e5e2ea}
.editor-multiselect span{border-color:#e5e2ea;color:#4d4857}
.editor-multiselect input:checked+span{border-color:#12b8a6;background:#e8f8f5;color:#079b8d;box-shadow:0 0 0 2px rgba(18,184,166,.1)}
:focus-visible{outline-color:rgba(18,184,166,.55)}

/* Shared project tab panel inside each work experience. */
.formal-case-grid{display:block}.formal-project-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:4px}.formal-project-tabs button{min-width:0;padding:9px 12px;border:0;background:#eceaee;color:#5b5560;font-size:11px;text-align:center;cursor:pointer}.formal-project-tabs button[aria-selected="true"]{background:#0aa99c;color:#fff;font-weight:700}.formal-project-tabs button:hover{background:#dff7f4;color:#087f75}.formal-project-tabs button[aria-selected="true"]:hover{background:#0aa99c;color:#fff}.formal-project-panel{display:grid;grid-template-rows:0fr;opacity:0;overflow:hidden;background:#fff;transition:grid-template-rows .34s ease,opacity .24s ease}.formal-project-panel.open{grid-template-rows:1fr;opacity:1}.formal-project-detail{min-height:0;overflow:hidden}.formal-project-detail>div{padding:12px 9px 10px}.formal-project-detail header{display:flex;justify-content:space-between;gap:20px;margin-bottom:10px;color:#58515c;font-size:10px}.formal-project-detail p{margin:0 0 12px;color:#5b5560;font-size:11px;line-height:1.65;white-space:pre-line}.formal-project-media{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;background:#fff}.formal-project-media figure{margin:0;min-width:0;border:0;background:#fff}.formal-project-media img,.formal-project-media video{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;background:#fff}.formal-project-media figcaption{padding:6px 8px;color:#66606a;background:#fff;font-size:9px;line-height:1.4}
.project-detail-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.project-detail-fields label{display:grid;gap:6px;color:#4f4954;font-size:10px;font-weight:700}.project-detail-fields .wide{grid-column:1/-1}.project-detail-fields input,.project-detail-fields textarea{width:100%;padding:10px;border:1px solid #d9d5df;border-radius:8px;background:#fff;font-size:11px;font-weight:400;resize:vertical}.project-detail-fields input:focus,.project-detail-fields textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(20,184,166,.12);outline:0}
@media(max-width:767px){.formal-project-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.formal-project-detail header{display:grid;gap:5px}.formal-project-media{grid-template-columns:1fr}.project-detail-fields{grid-template-columns:1fr}.project-detail-fields .wide{grid-column:auto}}

/* Resume education row, narrower profile column, and bounded brand click target. */
@media(min-width:768px){#resume .formal-resume{grid-template-columns:minmax(330px,38%) minmax(0,1fr)}}
.brand{width:max-content;justify-self:start;align-self:center}
.formal-profile>.formal-education{padding-top:28px}.formal-education-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;color:#5d5762;font-size:11px;line-height:1.5}.formal-education-row time{color:#087f75;font-weight:700}.formal-education-row strong{color:#332e37;font-weight:650}.formal-education-row span{color:#79737e}
@media(max-width:900px){.formal-education-row{grid-template-columns:auto 1fr}.formal-education-row span{grid-column:2}}

/* Compact resume cards and align education typography with body copy. */
.formal-education-row time,.formal-education-row strong,.formal-education-row span{color:#5d5762;font-weight:400}
.formal-abilities button{min-height:95px}
@media(max-width:767px){.formal-abilities button{min-height:87px}}

/* Use the available row width so long employment periods stay on one line. */
@media(min-width:768px){.formal-job-summary{grid-template-columns:120px minmax(150px,1fr) 42px}.formal-job time{white-space:nowrap}}

/* Authenticated content management */
.cms-locked{overflow:hidden}.cms-auth{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 35%,#fff,#eeeaf4)}.cms-auth[hidden]{display:none}.cms-auth-card{width:min(430px,100%);padding:34px;border:1px solid rgba(30,17,55,.08);border-radius:22px;background:#fff;box-shadow:var(--shadow)}.cms-auth-card h1{margin:0 0 10px;font-size:34px;letter-spacing:-.04em}.cms-auth-card>p:not(.eyebrow){margin:0 0 24px;color:var(--muted);font-size:12px;line-height:1.7}.cms-auth-card label{display:grid;gap:7px;margin:14px 0;color:#4f4954;font-size:11px;font-weight:700}.cms-auth-card input{padding:13px;border:1px solid #d9d5df;border-radius:10px;outline:0}.cms-auth-card input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(20,184,166,.12)}.cms-auth-card>button{width:100%;margin-top:8px;padding:12px;border:0;border-radius:10px;background:var(--teal);color:#fff;font-weight:800;cursor:pointer}.cms-auth-card small{display:block;min-height:20px;margin-top:10px;color:#b42318}.cms-auth-card>a{display:inline-block;margin-top:10px;color:var(--muted);font-size:11px;text-decoration:none}.editor-head-actions{display:flex;align-items:center;gap:14px}.editor-head-actions button{padding:8px 12px;border:1px solid #d9d5df;border-radius:999px;background:#fff;color:var(--muted);font-size:10px;cursor:pointer}.cms-notice{display:inline-block!important;margin:8px 0 0!important;padding:7px 10px;border-radius:8px;background:#fff7d6;color:#8a6410!important;font-size:10px!important}.editor-actions .publish-button{margin-left:8px;background:#fff;color:#0b887d}.version-list{display:grid;gap:8px}.version-list article{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 14px;border:1px solid #e2dee7;border-radius:10px;background:#fbfafc}.version-list article div{display:grid;gap:4px}.version-list article b{font-size:12px}.version-list article small{color:var(--muted);font-size:10px}.version-list article button{padding:7px 11px;border:1px solid rgba(20,184,166,.25);border-radius:999px;background:#ecfdfa;color:var(--teal-dark);font-size:10px;cursor:pointer}
@media(max-width:767px){.editor-head-actions{justify-content:space-between;margin-top:14px}.editor-actions div{align-items:stretch}.editor-actions .publish-button{margin:0}.version-list article{align-items:flex-start}.cms-auth-card{padding:26px}}
.assistant-rules-editor{margin-top:24px;padding:16px;border:1px solid #e2dee7;border-radius:12px;background:#fbfafc}.assistant-rules-editor summary{color:var(--teal-dark);font-size:13px;font-weight:800;cursor:pointer}.assistant-rules-editor[open] summary{margin-bottom:10px}.assistant-rules-editor .edit-note{margin:0 0 16px}.assistant-rules-editor select{width:100%;padding:11px;border:1px solid #d9d5df;border-radius:8px;background:#fff}
.portfolio-work-editor-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.portfolio-work-editor-list .case-editor{min-width:0}.portfolio-work-editor-list .editor-image-preview{width:100%;max-width:none;aspect-ratio:16/10;max-height:250px}.portfolio-work-editor-list .media-editor-row{grid-template-columns:80px minmax(0,1fr)}
@media(max-width:820px){.portfolio-work-editor-list{grid-template-columns:1fr}}

/* WeChat contact dialog reuses the existing topbar and teal visual language. */
.portfolio-detail-layer{background:rgba(23,19,27,.8)}
.share img{object-fit:contain}.wechat-modal{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:24px;background:rgba(21,17,31,.58);opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}.wechat-modal.open{opacity:1;visibility:visible}.wechat-modal-card{position:relative;width:min(420px,92vw);padding:30px 34px 26px;border-radius:22px;background:#fff;box-shadow:0 28px 80px rgba(21,17,31,.3);text-align:center;transform:translateY(12px) scale(.98);transition:transform .25s}.wechat-modal.open .wechat-modal-card{transform:none}.wechat-modal-card .eyebrow{margin-bottom:7px}.wechat-modal-card h2{margin:0 0 16px;font-size:25px;letter-spacing:-.03em}.wechat-modal-card>img{display:block;width:min(310px,100%);margin:0 auto;border-radius:12px}.wechat-modal-card>p:last-child{margin:15px 0 0;color:var(--muted);font-size:12px}.wechat-modal-close{position:absolute;right:13px;top:11px;width:34px;height:34px;padding:0;border:0;border-radius:50%;background:#f0edf3;color:#514a57;font-size:23px;line-height:1;cursor:pointer}.wechat-modal-close:hover{background:#dff7f4;color:var(--teal-dark)}
@media(max-width:767px){.wechat-modal{padding:16px}.wechat-modal-card{width:min(360px,94vw);padding:27px 22px 22px}.wechat-modal-card>img{width:min(280px,100%)}}

/* Fixed desktop slide question capsule. */
.slide-question-bubble,.slide-question-bubble:hover{left:50%;right:auto;top:48px;bottom:auto;display:grid;width:auto;height:auto;max-width:min(620px,72%);grid-template-columns:32px minmax(150px,360px) auto;gap:10px;padding:9px 16px 9px 9px;border:0;border-radius:999px;background:var(--slide-bubble-color,#fff);filter:none;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 10px 28px rgba(20,10,40,.2);color:var(--slide-bubble-text-color,#28222e);text-align:left;place-items:center;transform:translateX(-50%)!important;transition:opacity .55s ease,visibility .55s ease}.slide-question-bubble:before,.slide-question-bubble:after{display:none}.slide-question-bubble>img{display:block;width:32px;height:32px}.slide-question-bubble>span{display:block;max-width:none;overflow:visible;font-size:12px;font-weight:550;line-height:1.45;text-shadow:none}.slide-question-bubble>b{display:block;color:inherit;font-size:10px;white-space:nowrap}.slide-question-bubble:not(.show){opacity:0;visibility:hidden;animation:none}.slide-question-bubble.show{opacity:1;visibility:visible;animation:slide-bubble-breathe 1s ease-in-out infinite}.slide-question-bubble:hover{opacity:1;animation-play-state:paused;box-shadow:0 13px 34px rgba(20,10,40,.25)}
@keyframes slide-bubble-breathe{0%,100%{opacity:1}50%{opacity:.5}}
@media(max-width:767px){.slide-question-bubble{display:none!important}}

/* 2026-09-06: approved dual-domain visual treatment. */
:root{--ink:#1b1730;--muted:#767181;--paper:#f7f8fb;--teal:#10b9aa;--teal-dark:#078f84;--purple:#17122e;--purple-2:#242046;--line:#e1e3ea;--shadow:0 14px 38px rgba(20,15,46,.14)}
.topbar{background:#fff;border-bottom-color:#e2e4eb;backdrop-filter:none}
.mode-nav{padding:0;gap:24px;border-radius:0;background:transparent}.mode-nav button{position:relative;padding:25px 5px 22px;border-radius:0;color:#827d8c}.mode-nav button.active{background:transparent;color:#1b1730;box-shadow:none}.mode-nav button.active:after{content:"";position:absolute;left:5px;right:5px;bottom:15px;height:2px;background:var(--teal)}
.assistant-panel{background:linear-gradient(150deg,#17122e 0%,#1d1738 54%,#211a42 100%);border-right-color:#dfe1e8;color:#fff}.conversation-zone{border-bottom:0;background:transparent}.conversation-zone .messages{background:transparent}
.message p{background:rgba(255,255,255,.1);color:#f4f2fa;border:1px solid rgba(255,255,255,.04)}.message.user p{background:var(--teal);color:#fff;border-color:transparent}.message.pending p{color:#c9c5d4}
.conversation-zone .suggestions{padding-top:9px;border-top:1px solid rgba(255,255,255,.08);background:transparent}.suggestions button{border-color:rgba(66,220,204,.42);background:rgba(16,185,170,.1);color:#a8f1e8}.suggestions button:hover{border-color:#55dfd1;background:rgba(16,185,170,.22);color:#fff}
.conversation-zone .voice-controls{background:linear-gradient(180deg,rgba(23,18,46,0),#1b1536 46%)}.voice-controls .mic-button,.voice-controls .mic-button:hover{border-color:rgba(81,224,210,.48);background:#fff;box-shadow:0 10px 26px rgba(0,0,0,.28)}.voice-controls .mic-button span{border-color:rgba(81,224,210,.35);background:#211a42;color:#baf5ee;box-shadow:0 10px 26px rgba(0,0,0,.25)}.voice-controls .mic-button.listening{background:#dffaf5}.bottom-button{border-color:rgba(81,224,210,.35);background:#fff}
.chat-form{padding:10px 16px 12px;background:transparent}.chat-form>div{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.055);box-shadow:0 12px 30px rgba(0,0,0,.18)}.chat-form textarea{color:#fff}.chat-form textarea::placeholder{color:#8f8a9f}.chat-form button{border-color:rgba(20,184,166,.9);background:rgba(20,184,166,.14);box-shadow:0 0 0 1px rgba(255,255,255,.04),0 5px 14px rgba(0,0,0,.2);cursor:pointer;transition:background .2s,transform .2s,box-shadow .2s}.chat-form button:hover{background:rgba(20,184,166,.24);box-shadow:0 0 0 1px rgba(255,255,255,.06),0 6px 16px rgba(0,0,0,.24)}.chat-form button:active{transform:scale(.96)}.chat-form button:disabled{cursor:wait;opacity:.55}.chat-form small{color:#938da5}.wechat-hint{color:#f6c778}
.stage{border-left:0}#resume,#portfolio{background:var(--paper)}#resume .formal-resume{background:#fff}.formal-resume-title{padding:25px 32px 22px;background:#fff;border-bottom-color:#e1e3ea}.formal-head-tags span{background:#fff;border-color:#dfe2e9;color:#504b5d}
.formal-profile{background:#fff;border-right-color:#e1e3ea}.formal-experience,.formal-experience-scroll{background:#fff}.formal-experience>header{padding-top:22px}.formal-timeline-nav:before{background:#c9cbd3}.formal-job{border-bottom-color:#e5e6ec}
.formal-job.expanded{margin-left:-1px;padding-left:14px;background:#f3f8f8;border-left:3px solid var(--teal);border-bottom-color:#dfe9e8}.formal-job.expanded .formal-job-summary,.formal-job.expanded .formal-job-detail{padding-right:10px}.formal-job-copy{padding:14px 0;background:transparent;color:#514c59}
.formal-project-tabs{gap:1px;border-bottom:1px solid #dfe3e8;background:#dfe3e8}.formal-project-tabs button{background:#eef0f4;color:#5d5864}.formal-project-tabs button[aria-selected="true"],.formal-project-tabs button[aria-selected="true"]:hover{background:var(--teal);color:#fff}.formal-project-panel,.formal-project-media,.formal-project-media figure,.formal-project-media figcaption{background:#fff}.formal-project-detail>div{padding:14px 10px 12px}
.formal-abilities{gap:10px}.formal-abilities button{border-color:#e0e2e8;background:#f8f9fb;box-shadow:none}.formal-abilities button:hover{background:#eefaf8}.formal-skill-tags button{background:#fff}.formal-portfolio-title{background:#fff;border-bottom-color:#e1e3ea}.formal-portfolio-scroll{background:var(--paper)}.portfolio-work-preview{background:#fff;border:1px solid #e7e8ed}.portfolio-work:hover .portfolio-work-preview{box-shadow:0 12px 28px rgba(27,23,48,.11)}
@media(max-width:767px){.mode-nav{gap:5px;padding:4px;border-radius:999px;background:#f1eff5}.mode-nav button{padding:8px 9px;border-radius:999px}.mode-nav button.active{background:#fff;box-shadow:0 3px 12px rgba(33,22,63,.1)}.mode-nav button.active:after{display:none}.assistant-panel{background:linear-gradient(150deg,#17122e,#211a42)}.assistant-close{background:rgba(255,255,255,.1);color:#fff}.formal-job.expanded{margin-left:0;padding-left:12px}}

/* 2026-09-06: visual QA corrections requested after review. */
.assistant-panel{border-right:0}
.mode-nav{gap:30px}
.mode-nav button{padding-left:10px;padding-right:10px;font-size:15px;font-weight:600}
.mode-nav button.active:after{left:9px;right:9px}
.formal-resume-title h1{letter-spacing:.055em}
.formal-job.expanded{margin-left:0;padding-left:0;border-left:0}
.formal-job.expanded .formal-job-summary,.formal-job.expanded .formal-job-detail{padding-right:10px;padding-left:0}
.formal-abilities button,.formal-abilities button:hover,.formal-abilities button:focus-visible{background-color:#f8f9fb;background-image:linear-gradient(90deg,rgba(247,248,251,.97) 0%,rgba(247,248,251,.82) 48%,rgba(247,248,251,.3) 100%),var(--ability-image,url('assets/ability-visuals-v1.png'));background-size:cover;background-position:center;background-repeat:no-repeat}
.voice-controls .mic-button,.voice-controls .mic-button:hover,.voice-controls .mic-button.listening{border-color:transparent;background:transparent;box-shadow:none}
.portfolio-work-preview{aspect-ratio:16/9}
@media(max-width:767px){.mode-nav{gap:8px}.mode-nav button{padding:8px 12px;font-size:13px}.formal-job.expanded{padding-left:0}.portfolio-work-preview{aspect-ratio:16/9}}

@media(max-width:767px){
  #resume{width:100%;max-width:100%;overflow-x:hidden;overflow-y:auto}
  #resume .formal-resume{display:block;width:100%;max-width:100%;height:auto;min-height:100%;overflow:visible}
  #resume .formal-profile,#resume .formal-experience{display:block;width:100%;max-width:100%;grid-column:auto;grid-row:auto;overflow:visible}
  #resume .formal-experience{border-top:7px solid var(--paper)}
  #resume .formal-experience-scroll{display:block;width:100%;max-width:100%;overflow:visible}
}

/* Match generated follow-up questions to the fixed suggestion controls. */
.message-followups button{border-color:rgba(66,220,204,.42);background:rgba(16,185,170,.1);color:#a8f1e8}
.message-followups button:hover{border-color:#55dfd1;background:rgba(16,185,170,.22);color:#fff}

/* Mobile landscape slide workspace: large deck, persistent AI, page-bound prompts. */
.enter-slide-landscape,.slide-landscape-top,.slide-landscape-questions{display:none}
@media(max-width:767px){.enter-slide-landscape{position:absolute;z-index:12;right:14px;top:14px;display:block;padding:9px 13px;border:1px solid rgba(94,231,217,.65);border-radius:999px;background:rgba(22,15,45,.74);color:#baf5ee;font-size:13px;font-weight:650;box-shadow:0 8px 22px rgba(0,0,0,.22);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}}
body.slide-landscape{position:fixed;inset:0;width:100vw;height:100dvh;overflow:hidden;background:#17122e}
body.slide-landscape .topbar,body.slide-landscape .assistant-fab,body.slide-landscape #analyticsNotice{display:none!important}
body.slide-landscape .workspace{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);grid-template-areas:"stage assistant";width:100vw;height:100dvh}
body.slide-landscape .stage{grid-area:stage;width:auto;height:100dvh;min-width:0;border-right:1px solid rgba(255,255,255,.09)}
body.slide-landscape .assistant-panel{grid-area:assistant;position:relative;inset:auto;z-index:20;display:grid;width:auto;height:100dvh;min-width:0;transform:none;border:0}
body.slide-landscape .assistant-close{display:none}
body.slide-landscape .slides-mode{inset:0;width:100%;height:100%;background:#17122e}
body.slide-landscape .enter-slide-landscape,body.slide-landscape .slide-meta,body.slide-landscape .slide-dots,body.slide-landscape .auto-play,body.slide-landscape .slide-question-bubble{display:none!important}
body.slide-landscape .slide-landscape-top{position:absolute;z-index:11;left:0;right:0;top:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:58px;padding:0 24px;background:rgba(83,73,111,.68);color:#60e0d4;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:opacity .22s ease,transform .22s ease,visibility .22s}
body.slide-landscape .slide-landscape-top nav{display:flex;gap:34px}
body.slide-landscape .slide-landscape-top button{padding:8px 0;border:0;background:transparent;color:inherit;font-size:15px;cursor:pointer}
body.slide-landscape .slide-landscape-top>b{color:#82eee5;font-size:17px;font-weight:500;letter-spacing:.06em}
body.slide-landscape #exitSlideLandscape{justify-self:end}
body.slide-landscape .slide-landscape-questions{position:absolute;z-index:11;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:10px 18px;background:rgba(83,73,111,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:opacity .22s ease,transform .22s ease,visibility .22s}
body.slide-landscape .slide-landscape-questions>div{display:flex;align-items:center;gap:10px;min-width:0;overflow-x:auto;scrollbar-width:none}
body.slide-landscape .slide-landscape-questions>div::-webkit-scrollbar{display:none}
body.slide-landscape .slide-landscape-questions button{flex:none;padding:8px 13px;border:1px solid rgba(75,225,211,.72);border-radius:999px;background:rgba(14,185,169,.08);color:#aef4ed;font-size:13px;line-height:1.25;white-space:nowrap;cursor:pointer}
body.slide-landscape .slide-landscape-questions .landscape-free-question{border:0;border-left:1px solid rgba(255,255,255,.17);border-radius:0;padding-left:18px}
body.slide-landscape .slide-arrow{display:block;z-index:10;opacity:.68}
body.slide-landscape .slide-arrow img{width:48px;height:48px}
body.slide-landscape .slide.image-slide{inset:0;padding:0}
body.slide-landscape .slide.image-slide>img{width:100%;height:100%;object-fit:contain}
body.slide-landscape.slide-chrome-hidden .slide-landscape-top{opacity:0;visibility:hidden;transform:translateY(-100%);pointer-events:none}
@media(max-height:430px){body.slide-landscape .workspace{grid-template-columns:minmax(0,2fr) minmax(300px,1fr)}body.slide-landscape .assistant-panel{grid-template-rows:minmax(0,1fr) auto auto auto}body.slide-landscape .slide-landscape-top{height:48px}body.slide-landscape .slide-landscape-questions{min-height:56px;padding-top:7px;padding-bottom:7px}}

.share-actions{display:flex;align-items:center;justify-self:end;gap:12px}.website-share{display:grid;place-items:center;padding:4px;color:#aaa8b0}.website-share:hover{color:#85838c}.website-copy-actions{display:flex;justify-content:center;gap:12px}.website-copy-actions .wechat-copy-button{margin:18px 0 0}
@media(max-width:767px){.topbar{grid-template-columns:36px minmax(0,1fr) 72px}.share-actions{gap:4px}.website-share{padding:2px}.website-share svg{width:30px;height:30px}.mode-nav button{padding-left:7px;padding-right:7px}.mode-nav{gap:3px}}
.wechat-copy-button{display:block;margin:18px auto 0;padding:9px 18px;border:1px solid #b4e5df;border-radius:999px;background:#ecfdfa;color:#087f75;font-size:13px;cursor:pointer}
.wechat-copy-button:hover{background:#d8f6f0}.wechat-copy-button:disabled{opacity:.6;cursor:wait}
.wechat-copy-status{display:block;min-height:18px;margin-top:8px;color:#79737e;font-size:11px}
/* Readable desktop typography; compact sizing belongs to mobile layouts only. */
.message p{font-size:13px}
.message-followups button,.suggestions button{font-size:11px}
.chat-form textarea{font-size:13px}
.chat-form small{font-size:11px}
@media(max-width:767px){
  .message p{font-size:9px}
  .message-followups button,.suggestions button{font-size:9px}
  .chat-form textarea{font-size:9px}
  .chat-form small{font-size:8px}
}
body.slide-landscape .message p{font-size:9px}
body.slide-landscape .message-followups button,body.slide-landscape .suggestions button{font-size:9px}
body.slide-landscape .chat-form textarea{font-size:9px}
body.slide-landscape .chat-form small{font-size:8px}
body.slide-landscape .slide-landscape-questions button{font-size:9px}
body.slide-landscape .slide-landscape-top button{font-size:13px}
body.slide-landscape .slide-landscape-top>b{font-size:13px}

/* Reviewed landscape density and touch refinements. */
body.slide-landscape .slide-landscape-top{height:44px;padding-right:10px;padding-left:10px}
body.slide-landscape .slide-landscape-top nav{gap:18px}
body.slide-landscape .slide-landscape-top button{padding:3px 0}
body.slide-landscape .slide-landscape-questions{min-height:48px;padding:4px 7px;gap:5px}
body.slide-landscape .slide-landscape-questions>div{width:100%;gap:5px;overscroll-behavior-x:contain;touch-action:pan-x}
body.slide-landscape .slide-landscape-questions button{padding:3px 5px}
body.slide-landscape .landscape-questions-label{flex:none;color:#aef4ed;font-size:9px;line-height:1.25;white-space:nowrap}
body.slide-landscape .slide-landscape-questions>div{flex:1;width:auto}
body.slide-landscape .conversation-zone>.suggestions{display:none}
body.slide-landscape .messages{padding:8px 8px 38px}
body.slide-landscape .message{gap:5px;margin-bottom:7px}
body.slide-landscape .message img{width:26px;height:26px}
body.slide-landscape .message-body{gap:3px;max-width:84%}
body.slide-landscape .message p{max-width:84%;padding:4px 5px;line-height:1.35}
body.slide-landscape .message-body>p{max-width:none}
body.slide-landscape .message-followups{gap:3px;padding-left:0}
body.slide-landscape .message-followups button{padding:3px 4px;line-height:1.2}
body.slide-landscape .chat-form{padding:4px 8px 5px}
body.slide-landscape .chat-form>div{position:relative;min-height:84px;padding:2px}
body.slide-landscape .chat-form textarea{min-height:74px;max-height:96px;padding:4px 38px 4px 42px;line-height:1.35}
body.slide-landscape .chat-form button{width:34px;height:34px;padding:5px}
body.slide-landscape .chat-form small{margin-top:2px}
body.slide-landscape .voice-controls{position:absolute;z-index:6;left:12px;right:auto;bottom:22px;width:34px;height:34px;padding:0;background:none}
body.slide-landscape .voice-controls .mic-button,body.slide-landscape .voice-controls .mic-button:hover,body.slide-landscape .voice-controls .mic-button.listening{position:static;width:34px;height:34px;padding:5px}
body.slide-landscape .voice-controls .mic-button span{display:none}
body.slide-landscape .bottom-button{display:none!important}
body.slide-landscape .slide-arrow{opacity:.2}
body.slide-landscape .slide-arrow:hover,body.slide-landscape .slide-arrow:focus-visible,body.slide-landscape .slide-arrow:active{opacity:.6}
body.slide-landscape .slide-arrow img{width:41px;height:41px}

/* Put both composer actions inside the input without legacy rings or overflow. */
body.slide-landscape .chat-form>div>.voice-controls{position:absolute;z-index:3;left:5px;right:auto;bottom:5px;display:block;width:34px;height:34px;min-height:0;padding:0;background:transparent;pointer-events:auto}
body.slide-landscape .chat-form>div>.voice-controls .mic-button,body.slide-landscape .chat-form>div>.voice-controls .mic-button:hover,body.slide-landscape .chat-form>div>.voice-controls .mic-button.listening{position:static;width:34px;min-width:34px;height:34px;margin:0;padding:4px;border:0;border-radius:50%;background:transparent;box-shadow:none;transform:none;overflow:hidden}
body.slide-landscape .chat-form>div>.voice-controls .mic-button img{display:block;width:26px;height:26px;flex-basis:26px}
body.slide-landscape .chat-form>div>.voice-controls .mic-button:before,body.slide-landscape .chat-form>div>.voice-controls .mic-button:after{display:none!important;content:none!important}
body.slide-landscape .chat-form>div>#sendBtn{align-self:end;justify-self:end;width:34px;height:34px;margin:0;padding:1px;border:0!important;border-radius:0;background:transparent!important;box-shadow:none!important;overflow:hidden}
body.slide-landscape .chat-form>div>#sendBtn img{display:block;width:32px;height:32px}
body.slide-landscape .chat-form>div>#sendBtn:before,body.slide-landscape .chat-form>div>#sendBtn:after{display:none!important;content:none!important}

/* The bottom page questions stay visible; the slide itself supports pinch zoom and pan. */
body.slide-landscape .slide.image-slide>img{transform-origin:center center;will-change:transform;touch-action:none}
body.slide-landscape .slide.image-slide.zoomed{cursor:grab}
body.slide-landscape .slide.image-slide.zoomed:active{cursor:grabbing}

.slide-zoom-hint{display:none}
body.slide-landscape .slide-zoom-hint{position:absolute;z-index:10;right:12px;top:50px;display:block;padding:4px 7px;border:1px solid rgba(117,235,223,.22);border-radius:999px;background:rgba(20,13,43,.34);color:rgba(183,246,239,.72);font-size:9px;line-height:1;pointer-events:none;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:zoom-hint-settle 4s ease forwards}
@keyframes zoom-hint-settle{0%,65%{opacity:.78}100%{opacity:.28}}
.video-poster-field{grid-column:1/-1;display:grid;gap:7px;padding:10px;border:1px dashed rgba(20,184,166,.32);border-radius:9px;background:#f7fffd;color:#4f4954;font-size:10px;font-weight:700}
.video-poster-field .editor-image-preview{width:min(320px,100%);aspect-ratio:16/9;object-fit:cover}

/* Reserve a full video frame before metadata/poster is available. */
.portfolio-detail-content video{aspect-ratio:auto 16/9;height:auto;object-fit:contain;background:#111;}

/* Software landscape when device orientation cannot be locked. */
@media(orientation:portrait){
 body.slide-landscape{width:100dvh;height:100vw;inset:auto;top:0;left:100vw;transform-origin:0 0;transform:rotate(90deg)}
 body.slide-landscape .workspace{width:100dvh;height:100vw;grid-template-columns:minmax(0,2fr) minmax(300px,1fr)}
 body.slide-landscape .stage,body.slide-landscape .assistant-panel{height:100vw}
 body.slide-landscape .assistant-panel{grid-template-rows:minmax(0,1fr) auto auto auto}
 body.slide-landscape .slide-landscape-top{padding-right:10px;padding-left:10px}
}
/* Read-only Markdown portfolio document. */
.portfolio-detail-content.markdown-document,.portfolio-detail-content .markdown-document{display:block;box-sizing:border-box;padding:32px 40px;background:#fff;color:#292435;line-height:1.8;font-size:15px;border-radius:12px;user-select:none;-webkit-user-select:none;overflow-wrap:anywhere}
.markdown-document *{user-select:none!important;-webkit-user-select:none!important}
.markdown-document h1{font-size:30px}.markdown-document h2{font-size:24px}.markdown-document h3{font-size:20px}.markdown-document h1,.markdown-document h2,.markdown-document h3{line-height:1.4;margin:1.1em 0 .5em}
.markdown-document p{margin:.7em 0}.markdown-document img{max-width:100%;height:auto;margin:18px auto}.markdown-document a{color:#087f75}.markdown-document pre{overflow:auto;padding:16px;background:#f3f4f7;border-radius:8px;white-space:pre}.markdown-document code{font-family:Consolas,monospace}.markdown-document table{display:block;overflow:auto;border-collapse:collapse;max-width:100%}.markdown-document th,.markdown-document td{border:1px solid #ddd;padding:8px 12px}.markdown-document blockquote{margin:16px 0;padding:8px 18px;border-left:3px solid #14b8a6;background:#f1faf8}.md-image-error{display:block;color:#8b4652}.work-document-editor{display:grid;gap:10px;margin:16px 0;padding:14px;border:1px solid #e0e2e8;border-radius:10px}.work-document-editor textarea{font-family:Consolas,'Microsoft YaHei',monospace}
@media(max-width:767px){.portfolio-detail-content.markdown-document,.portfolio-detail-content .markdown-document{padding:22px 18px;font-size:14px}.markdown-document h1{font-size:25px}.markdown-document h2{font-size:21px}}
@media print{.markdown-document{display:none!important}}
.mixed-detail-editor{display:grid;gap:10px;padding:14px;border:1px solid #dedbe3;border-radius:10px;background:#fff}.mixed-detail-editor header{display:flex;align-items:center;gap:8px}.mixed-detail-editor header b{margin-right:auto}.mixed-detail-editor button{cursor:pointer}.mixed-detail-editor button:disabled{opacity:.4;cursor:default}
