*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
:root{--ui-bg:#ffffff;--ui-bg-page:#f5f5f5;--ui-bg-secondary:#f1f1ef;--ui-bg-hover:rgba(55,53,47,.08);--ui-bg-active:rgba(10,108,255,.14);--ui-border:rgba(55,53,47,.09);--ui-border-strong:rgba(55,53,47,.16);--ui-text:#37352f;--ui-text-secondary:#787774;--ui-text-tertiary:#9b9a97;--ui-accent:#0a6cff;--ui-accent-hover:#0856cc;--ui-radius:6px;--ui-radius-sm:4px;--ui-shadow-popover:rgba(15,15,15,.05) 0 0 0 1px,rgba(15,15,15,.1) 0 3px 6px,rgba(15,15,15,.2) 0 9px 24px;--ui-font:ui-sans-serif,'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,sans-serif;--ui-editor-accent:#0a6cff;--chrome:var(--ui-bg);--chrome-2:transparent;--chrome-3:var(--ui-bg-hover);--surface:var(--ui-bg);--surface-soft:var(--ui-bg-secondary);--surface-hover:var(--ui-bg-hover);--line:var(--ui-border);--line-soft:var(--ui-border);--ink:var(--ui-text);--muted:var(--ui-text-secondary);--faint:var(--ui-text-tertiary);--brand:var(--ui-accent);--brand-2:var(--ui-accent-hover);--shadow-sm:var(--ui-shadow-popover);--shadow-md:var(--ui-shadow-popover)}
body{font-family:var(--ui-font);background:var(--ui-bg-page);color:var(--ui-text);overflow:hidden}
button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid rgba(10,108,255,.35);outline-offset:2px}
[contenteditable]:focus{outline:2px dashed rgba(10,108,255,.45);outline-offset:2px;border-radius:1px}
.app{display:grid;grid-template-columns:248px 1fr 312px;grid-template-rows:58px 68px 1fr;height:100vh;gap:0}
.topbar{grid-column:1/-1;grid-row:1;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;padding:0 14px;background:var(--ui-bg);color:var(--ui-text);border-bottom:1px solid var(--ui-border);box-shadow:none;min-width:0;position:relative;z-index:60}
.topbar .tbtn{padding:4px 10px}
.topbar .export-menu-wrap .tbtn.primary{min-width:80px}
.topbar-center{display:flex;align-items:center;justify-content:center;gap:8px}
.topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}
.panel-left{grid-column:1;grid-row:2/4}
.panel-right{grid-column:3;grid-row:2/4}
.canvas{grid-column:2;grid-row:3}
.layout-strip{grid-column:2;grid-row:2;background:var(--ui-bg);border-bottom:1px solid var(--ui-border);padding:9px 14px;display:flex;gap:6px;overflow-x:auto;align-items:center;height:68px;box-shadow:none}
.layout-strip{scrollbar-width:none}
.layout-strip::-webkit-scrollbar{display:none}
.layout-strip h4{font-size:12px;font-weight:600;letter-spacing:0;color:var(--ui-text-secondary);text-transform:none;white-space:nowrap;padding-right:12px;border-right:1px solid var(--ui-border);align-self:stretch;display:flex;align-items:center}
.lay-btn{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:50px;padding:4px 6px;background:transparent;border:1px solid transparent;border-radius:var(--ui-radius);font-size:11.5px;color:var(--ui-text-secondary);cursor:pointer;transition:background .14s,color .14s;white-space:nowrap;flex-shrink:0;font-weight:500}
.lay-btn:hover{background:var(--ui-bg-hover);color:var(--ui-text)}
.lay-btn.active{background:var(--ui-bg-active);border-color:transparent;color:var(--ui-accent);box-shadow:none}
.lay-btn svg{width:20px;height:25px;color:var(--ui-text-tertiary);flex:0 0 20px;display:block}
.lay-btn.active svg{color:var(--ui-accent)}
.lay-btn.is-default::after{content:"默认";position:absolute;right:-2px;top:2px;padding:1px 4px;border-radius:var(--ui-radius-sm);background:var(--ui-bg-active);color:var(--ui-accent);font-size:8px;font-weight:600;line-height:1.2}
.layout-default-btn{min-height:44px;padding:6px 10px;border-radius:var(--ui-radius);border:1px dashed var(--ui-border-strong);background:var(--ui-bg);color:var(--ui-text-secondary);font-size:11px;font-weight:500;line-height:1.25;white-space:nowrap;cursor:pointer;flex:none}
.layout-default-btn:hover{background:var(--ui-bg-hover);border-color:var(--ui-text-tertiary);color:var(--ui-text)}
.layout-default-btn.is-saved{border-style:solid;background:var(--ui-bg-active);border-color:transparent;color:var(--ui-accent)}
.layout-skel-wrap{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.lay-skel{flex:none;width:50px;height:44px;border-radius:var(--ui-radius);background:linear-gradient(90deg,var(--ui-bg-secondary) 0%,rgba(55,53,47,.06) 50%,var(--ui-bg-secondary) 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite}
.lay-skel-default{width:72px;border:1px dashed var(--ui-border)}
.topbar .brand{margin-right:0;display:flex;align-items:center;gap:0;min-width:0;white-space:nowrap;flex-shrink:0}
.topbar-brand{display:flex;align-items:center;gap:6px;min-width:0;justify-self:start;max-width:100%}
.topbar-brand .more-menu-wrap{flex-shrink:1;min-width:0;border-left:1px solid var(--ui-border);padding-left:6px;margin-left:2px}
#btnMoreLabel{display:inline-block;max-width:128px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.brand-logo{width:26px;height:26px;flex:none;display:block;filter:none;margin-right:4px}
.topbar .brand b{font-family:var(--ui-font);font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--ui-text);line-height:1}
.topbar .brand .brand-tld{font-weight:normal;color:var(--ui-text-tertiary)}
.topbar .brand .brand-tagline{font-weight:normal;font-size:11px;letter-spacing:0;color:var(--ui-text-tertiary);border-left:1px solid var(--ui-border);margin-left:10px;padding-left:10px}
.tbtn{min-height:32px;padding:10px 12px;border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-text);font-size:12px;font-weight:normal;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background .14s;white-space:nowrap;box-shadow:none}
.tbtn:hover{background:var(--ui-bg-hover)}
.tbtn.primary{background:var(--ui-accent);color:#fff;font-weight:500;box-shadow:none}
.tbtn.primary:hover{background:var(--ui-accent-hover);filter:none}
.tbtn.ghost{background:transparent;border:1px solid var(--ui-border);box-shadow:none;color:var(--ui-text-secondary)}
.tbtn.ghost:hover{background:var(--ui-bg-hover);border-color:var(--ui-border-strong);color:var(--ui-text)}
.tbtn.icon{width:32px;padding:0;font-size:14px}
.tbtn:disabled{opacity:.38;cursor:not-allowed;transform:none;filter:none}
.tbtn:disabled:hover{background:#999;transform:none}
.ui-chevron{width:12px;height:12px;flex:none;stroke:currentColor;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:transform .15s}
.tbtn .ui-chevron{width:10px;height:10px;opacity:.72;margin-top:1px}
.tbtn .ai-opt-icon{width:14px;height:14px;flex:none;display:block}
.tbtn .module-add-icon{width:12px;height:12px;flex:none;display:block}
.tbtn.primary .ui-chevron{opacity:.92}
.more-menu-wrap{position:relative;display:inline-block}
.export-menu.left{left:0;right:auto}
.zoom-dock{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:6;display:flex;align-items:center;gap:2px;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);padding:3px}
.zbtn{min-width:28px;height:26px;border-radius:var(--ui-radius-sm);font-size:13px;color:var(--ui-text-secondary);display:flex;align-items:center;justify-content:center;font-weight:500;transition:background .14s}
.zbtn:hover{background:var(--ui-bg-hover);color:var(--ui-text)}
.zbtn:disabled{opacity:.32;cursor:not-allowed}
.zbtn:disabled:hover{background:transparent;color:var(--ui-text-secondary)}
.zbtn.history{font-size:0;display:flex;align-items:center;justify-content:center}
.zbtn.history svg{width:16px;height:16px;display:block;color:currentColor}
#btnRedo svg{transform:scaleX(-1)}
.zoom-sep{width:1px;height:20px;background:var(--ui-border);margin:0 4px}
.zbtn.fit{font-size:11px;padding:0 8px;border-radius:var(--ui-radius-sm)}
.zoom-val{font-size:11px;color:var(--ui-text-secondary);text-align:center;font-variant-numeric:tabular-nums;font-weight:500;padding:0 2px}
.zoom-val.zoom-pulse{color:var(--ui-accent)}
.av-menu{position:fixed;z-index:500;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow-popover);padding:4px;display:flex;flex-direction:column;gap:2px;min-width:132px}
.av-menu.hidden{display:none}
.av-menu button{text-align:left;padding:6px 10px;border-radius:var(--ui-radius-sm);font-size:13px;color:var(--ui-text);font-family:inherit;transition:background .12s}
.av-menu button:hover{background:var(--ui-bg-hover)}
.av-menu button.active{background:var(--ui-bg-active);color:var(--ui-accent);font-weight:500}
.av-menu .av-menu-title{font-size:11px;color:var(--ui-text-tertiary);padding:4px 10px 2px;letter-spacing:0}
.av-size-pop{position:fixed;z-index:520;width:190px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;padding:7px 9px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-bg);box-shadow:var(--ui-shadow-popover);font-size:12px;font-weight:500;color:var(--ui-text-secondary);opacity:1;visibility:visible;transform:translateY(0);transition:opacity .14s,transform .14s,visibility .14s}
.av-size-pop.hidden{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(4px)}
.av-size-pop input{width:100%;accent-color:var(--ui-accent);cursor:pointer}
.av-size-pop input::-webkit-slider-thumb{cursor:pointer}
.av-size-pop input::-moz-range-thumb{cursor:pointer}
.av-size-pop b{font-size:11px;color:var(--ui-text-tertiary);font-variant-numeric:tabular-nums;min-width:34px;text-align:right}
.panel-left{background:var(--ui-bg);border-right:1px solid var(--ui-border);overflow-y:auto;padding:14px 12px 28px}
.panel-left h3{font-size:12px;font-weight:600;letter-spacing:0;color:var(--ui-text-secondary);text-transform:none;margin:0 4px 12px;padding:0 0 8px;border-bottom:1px solid var(--ui-border)}
.left-collapse-btn,.right-collapse-btn{position:fixed;top:50%;z-index:90;width:20px;height:38px;background:var(--ui-bg);border:1px solid var(--ui-border);color:var(--ui-text-secondary);display:flex;align-items:center;justify-content:center}
.left-collapse-btn{left:calc(var(--col-l) - 0px);border-radius:0 var(--ui-radius-sm) var(--ui-radius-sm) 0;border-left:0}
.right-collapse-btn{right:calc(var(--col-r) - 0px);border-radius:var(--ui-radius-sm) 0 0 var(--ui-radius-sm);border-right:0}
.left-collapse-btn .ui-chevron,.right-collapse-btn .ui-chevron{width:16px;height:16px}
.left-collapse-btn:hover,.right-collapse-btn:hover{color:var(--ui-text)}
body.left-collapsed .left-collapse-btn .ui-chevron{transform:rotate(180deg)}
body.right-collapsed .right-collapse-btn .ui-chevron{transform:rotate(180deg)}
body.left-collapsed .panel-left{padding-left:0;padding-right:0;border-right-color:transparent;overflow:hidden;pointer-events:none}
body.right-collapsed .panel-right{padding-left:0;padding-right:0;border-left-color:transparent;overflow:hidden;pointer-events:none}
body.left-collapsed{--col-l:0px}
body.right-collapsed{--col-r:0px}
body.left-collapsed .panel-left>*{opacity:0;visibility:hidden}
body.right-collapsed .panel-right>*{opacity:0;visibility:hidden}
body.left-collapsed .left-collapse-btn{left:0;border-left:1px solid var(--ui-border);border-radius:0 var(--ui-radius) var(--ui-radius) 0}
body.right-collapsed .right-collapse-btn{right:0;border-right:1px solid var(--ui-border);border-radius:var(--ui-radius) 0 0 var(--ui-radius)}
.preset-groups{display:flex;flex-direction:column;gap:14px}
.preset-group-title{display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:600;letter-spacing:0;color:var(--ui-text-secondary);margin:0 2px 8px}
.preset-group-title::after{content:"";flex:1;align-self:center;height:1px;background:var(--ui-border)}
.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:6px}
.preset-card{position:relative;border-radius:var(--ui-radius);overflow:hidden;cursor:pointer;border:1px solid var(--ui-border);transition:border-color .14s,box-shadow .14s;aspect-ratio:1/1.414;background:var(--ui-bg-secondary);box-shadow:none}
.preset-card:hover{border-color:var(--ui-border-strong);box-shadow:none}
.preset-card.active{border-color:var(--ui-accent);box-shadow:0 0 0 2px var(--ui-bg-active)}
.preset-thumb{width:100%;height:100%;display:flex;flex-direction:column;padding:8px 7px;font-size:5px;line-height:1.4;gap:3px}
.preset-card .label{position:absolute;left:0;right:0;bottom:0;padding:5px;background:var(--ui-bg);color:var(--ui-text);font-size:9.5px;font-weight:500;letter-spacing:0;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;border-top:1px solid var(--ui-border)}
.preset-card .label small{display:none}
/* 首屏骨架：JS 写入前占位，innerHTML 替换后自动消失 */
.preset-skel-title{height:12px;width:42%;margin:0 2px 8px;border-radius:var(--ui-radius-sm);background:var(--ui-bg-secondary)}
.preset-skel{aspect-ratio:1/1.414;border-radius:var(--ui-radius);border:1px solid var(--ui-border);background:linear-gradient(90deg,var(--ui-bg-secondary) 0%,rgba(55,53,47,.06) 50%,var(--ui-bg-secondary) 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite}
.resume-skel{position:absolute;inset:0;display:flex;flex-direction:column;pointer-events:none}
.resume-skel-banner{height:118px;background:linear-gradient(90deg,#e8e8e6 0%,#f1f1ef 50%,#e8e8e6 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite}
.resume-skel-body{flex:1;padding:28px 40px 40px;display:flex;flex-direction:column;gap:12px}
.resume-skel-line,.resume-skel-block{border-radius:4px;background:linear-gradient(90deg,var(--ui-bg-secondary) 0%,rgba(55,53,47,.07) 50%,var(--ui-bg-secondary) 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite}
.resume-skel-line{height:11px;width:100%}
.resume-skel-line.w40{width:40%}.resume-skel-line.w55{width:55%}.resume-skel-line.w60{width:60%}.resume-skel-line.w65{width:65%}.resume-skel-line.w70{width:70%}.resume-skel-line.w75{width:75%}.resume-skel-line.w80{width:80%}.resume-skel-line.w85{width:85%}
.resume-skel-block{height:14px;width:28%;margin-top:10px}
@keyframes skel-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
@media (prefers-reduced-motion:reduce){
.preset-skel,.resume-skel-banner,.resume-skel-line,.resume-skel-block,.lay-skel{animation:none;background:var(--ui-bg-secondary)}
.resume-skel-banner{background:#e8e8e6}
}
.canvas{overflow:hidden;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:12px;background:var(--ui-bg-page)}
.canvas-viewport{flex:1;min-height:0;width:100%;position:relative;display:flex;flex-direction:column}
.canvas-scroll{flex:1;min-height:0;overflow:auto;width:100%;display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 32px 60px}
.canvas-scroll,.panel-left,.panel-right,.module-menu,.ai-modal,.export-menu{scrollbar-width:thin;scrollbar-color:transparent transparent}
.canvas-scroll:hover,.panel-left:hover,.panel-right:hover,.module-menu:hover,.ai-modal:hover{scrollbar-color:rgba(55,53,47,.25) transparent}
.canvas-scroll::-webkit-scrollbar,.panel-left::-webkit-scrollbar,.panel-right::-webkit-scrollbar,.module-menu::-webkit-scrollbar,.ai-modal::-webkit-scrollbar,.export-menu::-webkit-scrollbar{width:7px;height:7px}
.canvas-scroll::-webkit-scrollbar-thumb,.panel-left::-webkit-scrollbar-thumb,.panel-right::-webkit-scrollbar-thumb,.module-menu::-webkit-scrollbar-thumb,.ai-modal::-webkit-scrollbar-thumb,.export-menu::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.canvas-scroll:hover::-webkit-scrollbar-thumb,.panel-left:hover::-webkit-scrollbar-thumb,.panel-right:hover::-webkit-scrollbar-thumb,.module-menu:hover::-webkit-scrollbar-thumb,.ai-modal:hover::-webkit-scrollbar-thumb{background:rgba(55,53,47,.25)}
.canvas-scroll::-webkit-scrollbar-corner{background:transparent}
.canvas-tip{position:absolute;box-sizing:border-box;display:flex;flex-wrap:wrap;gap:4px 20px;align-items:flex-start;justify-content:flex-start;text-align:left;padding:10px 36px 10px 14px;margin-top:10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-bg-secondary);box-shadow:none;font-size:12px;color:var(--ui-text-secondary);line-height:1.5;transition:opacity .45s,transform .45s;z-index:2}
.canvas-tip span{min-width:0;text-align:left}
.canvas-tip b{color:var(--ui-text);font-weight:600;margin-right:2px}
.canvas-tip.hide{opacity:0;transform:translateY(-8px);pointer-events:none}
.canvas-tip.gone{display:none}
.ai-compare-bar{box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;margin-top:10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-bg-secondary);font-size:12px;color:var(--ui-text-secondary);line-height:1.5;flex-shrink:0;align-self:center;width:100%;max-width:var(--preview-w,min(794px,92%))}
.ai-compare-bar.hidden{display:none}
.ai-compare-main{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}
.ai-compare-summary{color:var(--ui-text);font-weight:500;line-height:1.6}
.ai-compare-hint{width:100%;font-size:11px;color:var(--ui-text-tertiary);font-weight:400}
.ai-compare-hint.hidden{display:none}
.ai-compare-chip{display:inline-flex;align-items:center;padding:2px 8px;margin:0 4px 2px 0;border:1px solid var(--ui-border);border-radius:999px;background:var(--ui-bg);color:var(--ui-text);font-size:11px;font-family:inherit;cursor:pointer;vertical-align:middle}
.ai-compare-chip:hover{background:var(--ui-bg-hover);border-color:var(--ui-accent)}
.ai-compare-warn{color:#b45309;font-weight:500}
.ai-diff-changed{background:rgba(250,204,21,.22);border-radius:2px}
.ai-diff-added{background:rgba(134,239,172,.25);border-radius:2px}
.ai-diff-section{outline:1px dashed rgba(234,179,8,.45);outline-offset:2px}
.r-section.ai-diff-section>.r-h2::after{content:'已优化';font-size:10px;color:#ca8a04;margin-left:6px;font-weight:400}
.ai-diff-flash{animation:ai-diff-flash 1.2s ease}
@keyframes ai-diff-flash{0%,100%{filter:none}50%{filter:brightness(1.08)}}
.ai-compare-seg{display:inline-flex;gap:0;padding:2px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-bg-secondary);overflow:hidden;flex:none}
.ai-compare-seg button{padding:4px 8px;font-size:12px;background:transparent;color:var(--ui-text-secondary);border:none;border-radius:calc(var(--ui-radius-sm) - 1px);cursor:pointer;font-family:inherit;min-height:24px;min-width:56px;white-space:nowrap;transition:background .14s,color .14s}
.ai-compare-seg button.active{background:var(--ui-bg-active);color:var(--ui-accent);font-weight:500}
.ai-compare-seg button:not(.active):hover{color:var(--ui-text)}
.ai-compare-actions{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}
.ai-compare-bar .tbtn.ghost,.ai-compare-bar .tbtn.primary{padding:4px 10px;min-height:28px;font-size:12px}
.tip-close{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:var(--ui-radius-sm);color:var(--ui-text-tertiary);font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s}
.tip-close:hover{background:var(--ui-bg-hover);color:var(--ui-text)}
.stage{position:relative;transform-origin:top left;transition:transform .15s}
.overflow-warn{position:static;width:fit-content;max-width:min(794px,92%);margin:0 auto;text-align:center;flex:none;font-size:12px;font-weight:500;color:#9a3412;background:#fffbf5;border:1px solid #f0d4a8;padding:8px 14px;border-radius:var(--ui-radius);display:none;line-height:1.55;box-shadow:none}
.overflow-warn.show{display:block}
.resume.page2{margin-top:24px}
.resume.page2.hidden{display:none}
.fit-info{position:relative;width:var(--preview-w,min(794px,92%));margin:0 auto;text-align:left;flex:none;font-size:11px;font-weight:400;color:var(--ui-text-secondary);display:none;line-height:1.35;padding:0 0 0 24px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fit-info.show{display:block}
.fit-info .fit-dot{position:absolute;left:0;bottom:0;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:var(--ui-radius-sm);background:var(--ui-bg-secondary);color:var(--ui-text-tertiary);font-weight:600;font-size:9px;line-height:1}
.panel-right{background:var(--ui-bg);border-left:1px solid var(--ui-border);overflow-y:auto;padding:14px 14px 28px;font-size:13px}
.field-hint{font-size:11px;color:var(--ui-text-tertiary);margin-top:4px;line-height:1.55}
.ai-overlay{position:fixed;inset:0;background:rgba(15,15,15,.4);z-index:400;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px);padding:16px}
.ai-overlay.hidden{display:none}
.ai-modal{width:min(460px,94vw);max-height:90vh;overflow-y:auto;background:var(--ui-bg);border-radius:var(--ui-radius);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-popover)}
.ai-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ui-border);font-size:14px;color:var(--ui-text);font-weight:normal;position:sticky;top:0;background:var(--ui-bg);z-index:2}
.ai-head b{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.ai-head .ai-opt-icon{width:16px;height:16px}
.ai-close{width:26px;height:26px;border-radius:var(--ui-radius-sm);font-size:16px;color:var(--ui-text-tertiary);display:flex;align-items:center;justify-content:center;transition:background .15s}
.ai-close:hover{background:var(--ui-bg-hover);color:var(--ui-text)}
.ai-body{padding:14px 16px 16px;font-size:13px}
.ai-body a{color:var(--ui-accent);text-decoration:none}
.ai-body a:hover{text-decoration:underline}
.ai-body .field input[type=text]{width:100%;min-height:34px;padding:7px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);font:inherit;font-size:13px;background:var(--ui-bg)}
.ai-body .field input[type=text]:focus{border-color:var(--ui-accent);background:var(--ui-bg);box-shadow:0 0 0 2px rgba(10,108,255,.2);outline:0}
.ai-body .field select{width:100%;min-height:34px;padding:7px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);font:inherit;font-size:13px;background:var(--ui-bg)}
.ai-body .field label{display:block;font-size:12px;color:var(--ui-text);margin-bottom:5px;font-weight:500}
.ai-body .field{margin-bottom:12px}
.ai-note{font-size:12px;color:var(--ui-text-secondary);background:var(--ui-bg-secondary);border:1px solid var(--ui-border);border-radius:var(--ui-radius);padding:8px 10px;margin:2px 0 12px;line-height:1.65}
.ai-run{width:100%;justify-content:center}
.ai-run:disabled{opacity:.6;cursor:wait}
.ai-status{margin-top:10px;font-size:12px;color:var(--ui-text-secondary);min-height:16px;line-height:1.55;white-space:pre-line}
.ai-status.err{color:#b91c1c}
.ai-score-modal{width:min(560px,94vw)}
.ai-score-panel.hidden{display:none}
.ai-score-config{font-size:12px;color:var(--ui-text-secondary);margin-bottom:10px;line-height:1.55}
.ai-score-config a{color:var(--ui-accent);text-decoration:none;cursor:pointer}
.ai-score-config a:hover{text-decoration:underline}
.ai-score-config.warn{color:#b45309}
.import-choice-modal{width:min(420px,94vw)}
.import-file-name{font-size:13px;font-weight:600;color:var(--ui-text);margin-bottom:12px;padding:8px 10px;background:var(--ui-bg-secondary);border-radius:var(--ui-radius-sm);word-break:break-all}
.import-choice-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
.import-choice-actions .tbtn.primary{min-width:108px}
#importModeSeg button[data-mode="ai"]:disabled{opacity:.45;cursor:not-allowed}
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.field-label-row label{margin:0}
.field-label-actions{display:flex;align-items:center;gap:6px;flex:none}
.field-label-row .tbtn{flex:none;padding:4px 10px;min-height:28px;font-size:12px}
.score-overall{display:flex;align-items:center;gap:16px;margin-bottom:14px;padding:12px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-bg-secondary)}
.score-overall-num{font-size:42px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;min-width:64px;text-align:center}
.score-overall-num.good{color:#15803d}
.score-overall-num.mid{color:#c2410c}
.score-overall-num.low{color:#b91c1c}
.score-overall-meta{flex:1;min-width:0}
.score-overall-meta b{display:block;font-size:14px;color:var(--ui-text);margin-bottom:4px;font-weight:600}
.score-overall-meta p{margin:0;font-size:12px;color:var(--ui-text-secondary);line-height:1.6}
.score-dims{margin-bottom:12px}
.score-dim{margin-bottom:8px}
.score-dim-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ui-text-secondary);margin-bottom:3px}
.score-dim-head span:last-child{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ui-text)}
.score-bar{height:6px;background:var(--ui-bg-hover);border-radius:3px;overflow:hidden}
.score-bar i{display:block;height:100%;border-radius:3px;background:var(--ui-accent);transition:width .3s}
.score-bar i.good{background:#22c55e}
.score-bar i.mid{background:#f97316}
.score-bar i.low{background:#ef4444}
.score-section{margin-bottom:12px}
.score-section h4{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--ui-text)}
.score-tags{display:flex;flex-wrap:wrap;gap:6px}
.score-tag{font-size:11px;padding:3px 8px;border-radius:var(--ui-radius-sm);background:#ecfdf5;color:#166534;border:1px solid #bbf7d0}
.score-kw{font-size:11px;padding:3px 8px;border-radius:var(--ui-radius-sm);border:1px solid var(--ui-border);color:var(--ui-text-secondary)}
.score-kw.miss{background:#fef2f2;color:#991b1b;border-color:#fecaca}
.score-improve{display:flex;flex-direction:column;gap:8px}
.score-improve-item{padding:8px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-bg);font-size:12px;line-height:1.6}
.score-improve-item .pri{display:inline-block;font-size:10px;font-weight:600;padding:1px 6px;border-radius:3px;margin-right:6px;vertical-align:baseline}
.score-improve-item .pri.high{background:#fef2f2;color:#991b1b}
.score-improve-item .pri.medium{background:#fff7ed;color:#c2410c}
.score-improve-item .pri.low{background:var(--ui-bg-secondary);color:var(--ui-text-tertiary)}
.score-improve-item b{color:var(--ui-text)}
.score-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--ui-border)}
.score-actions .tbtn{flex:1;min-width:100px;justify-content:center}
.score-optimize-wrap{flex:1 1 100%;display:flex;flex-direction:column;gap:6px;margin-top:4px;padding-top:10px;border-top:1px dashed var(--ui-border)}
.score-optimize-wrap label{font-size:12px;font-weight:500;color:var(--ui-text-secondary)}
.score-optimize-wrap select{width:100%;min-height:34px;padding:7px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);font:inherit;font-size:13px;background:var(--ui-bg)}
.score-optimize-wrap .field-hint{margin:0;font-size:11px;line-height:1.5}
.score-optimize-wrap .field-hint.hidden{display:none}
.score-optimize-wrap .tbtn.primary{flex:none;width:100%;min-width:0;margin-top:2px}
.score-optimize-warn{color:#c2410c}
.field{margin-bottom:11px}
.field label{display:flex;justify-content:space-between;font-size:12px;color:var(--ui-text-secondary);margin-bottom:5px;font-weight:500}
.field label .v{color:var(--ui-text-tertiary);font-variant-numeric:tabular-nums}
.label-main{display:inline-flex;align-items:center;gap:5px;min-width:0}
.info-tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:var(--ui-radius-sm);background:var(--ui-bg-secondary);color:var(--ui-text-tertiary);font-size:10px;font-weight:600;line-height:1;cursor:help;flex:none}
.info-tip::after{content:attr(data-tip);position:absolute;right:-6px;bottom:calc(100% + 8px);width:220px;max-width:min(220px,70vw);padding:8px 10px;border-radius:var(--ui-radius);background:var(--ui-text);color:var(--ui-bg);font-size:11px;font-weight:400;line-height:1.55;box-shadow:var(--ui-shadow-popover);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .14s,transform .14s,visibility .14s;z-index:260;white-space:normal;text-align:left;pointer-events:none}
.info-tip:hover::after,.info-tip:focus-visible::after{opacity:1;visibility:visible;transform:translateY(0)}
.field input[type=text],.field select,.field input[type=number]{width:100%;min-height:34px;padding:7px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);font:inherit;font-size:13px;background:var(--ui-bg);color:var(--ui-text);transition:border-color .15s,box-shadow .15s}
.field input[type=text]:focus,.field select:focus,.field input[type=number]:focus{border-color:var(--ui-accent);box-shadow:0 0 0 2px rgba(10,108,255,.2);outline:0}
.field input[type=range]{width:100%;accent-color:var(--ui-accent);cursor:pointer}
.field input[type=range]::-webkit-slider-thumb{cursor:pointer}
.field input[type=range]::-moz-range-thumb{cursor:pointer}
.field input[type=range]:disabled{opacity:.35;cursor:not-allowed}
.field .row{display:flex;gap:6px;align-items:center}
.field .row input[type=color]{width:40px;height:34px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:none;cursor:pointer;padding:2px}
.field .row .v{font-size:11px;color:var(--ui-text-tertiary);min-width:42px;text-align:right}
.seg{display:flex;background:var(--ui-bg-secondary);border:1px solid var(--ui-border);border-radius:var(--ui-radius);padding:3px;gap:2px}
.seg button{flex:1;min-height:30px;padding:6px 8px;border-radius:var(--ui-radius-sm);font-size:12px;font-weight:500;color:var(--ui-text-secondary);transition:background .15s,color .15s;white-space:nowrap}
.seg button:hover{background:var(--ui-bg);color:var(--ui-text)}
.seg button.active{background:var(--ui-accent);color:var(--ui-bg);box-shadow:0 1px 2px rgba(15,15,15,.06)}
.seg-wrap{flex-wrap:wrap}
.toggle{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:13px;color:var(--ui-text-secondary)}
.toggle input{transform:scale(1.05);accent-color:var(--ui-accent)}
.mode-pane.hidden{display:none}
.module-menu-wrap{position:relative;display:inline-block}
.module-menu{position:absolute;top:100%;left:0;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);min-width:320px;max-height:520px;overflow-y:auto;z-index:200;padding:6px;margin-top:6px;display:grid;grid-template-columns:1fr 1fr;gap:2px}
.module-menu.hidden{display:none}
.module-menu button{display:flex;align-items:flex-start;gap:8px;padding:6px 10px;border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-text);text-align:left;font-size:12px;width:100%;line-height:1.3;border:none;cursor:pointer}
.module-menu button:hover{background:var(--ui-bg-hover)}
.module-menu .m-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:20px;color:var(--ui-text-secondary)}
.module-menu .m-icon svg{width:18px;height:18px;display:block;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.module-menu button:hover .m-icon{color:var(--ui-text)}
.module-menu .m-text{flex:1;min-width:0}
.module-menu .m-title{font-weight:500;color:var(--ui-text);display:block;font-size:12px}
.module-menu .m-desc{font-size:11px;color:var(--ui-text-tertiary);display:block;margin-top:1px}
.export-menu-wrap{position:relative;display:inline-block}
.export-menu{position:absolute;right:0;top:100%;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);min-width:248px;z-index:220;padding:6px;margin-top:6px;display:flex;flex-direction:column;gap:4px}
.export-menu.hidden{display:none}
.ex-group{display:flex;flex-direction:column;gap:2px}
.ex-group + .ex-group{border-top:1px solid var(--ui-border);padding-top:6px}
.ex-main{display:flex;flex-direction:column;gap:2px;width:100%;padding:8px 10px;border-radius:var(--ui-radius-sm);text-align:left;transition:background .14s;border:none;background:transparent;cursor:pointer;font-family:inherit}
.ex-main:hover{background:var(--ui-bg-hover)}
.ex-name{font-size:13px;font-weight:600;color:var(--ui-text);display:flex;align-items:center;gap:6px}
.ex-name i{font-style:normal;font-size:10px;font-weight:500;color:var(--ui-accent);background:var(--ui-bg-active);padding:2px 6px;border-radius:var(--ui-radius-sm)}
.ex-desc{font-size:11px;color:var(--ui-text-tertiary)}
.ex-row{display:flex;align-items:center;gap:7px;padding:6px 10px}
.ex-fmt{font-size:13px;font-weight:600;color:var(--ui-text);min-width:30px}
.ex-hint{font-size:10px;color:var(--ui-text-tertiary);flex:1}
.ex-chips{display:flex;gap:4px}
.ex-chip{min-width:32px;padding:4px 0;border-radius:var(--ui-radius-sm);border:1px solid var(--ui-border);background:var(--ui-bg);font-size:11px;font-weight:500;color:var(--ui-text-secondary);cursor:pointer;transition:background .14s,border-color .14s,color .14s;font-family:inherit;font-variant-numeric:tabular-nums}
.ex-chip:hover{border-color:var(--ui-accent);color:var(--ui-accent);background:var(--ui-bg-active)}
.ex-chip.rec{border-color:var(--ui-accent);background:var(--ui-bg-active);color:var(--ui-accent)}
.profile-head{font-size:11px;color:var(--ui-text-tertiary);padding:4px 10px 2px;letter-spacing:0}
.profile-row{display:flex;align-items:center;gap:8px;padding:8px 10px;margin:4px 0;border-radius:var(--ui-radius-sm);cursor:pointer;transition:background .12s}
.profile-row:hover{background:var(--ui-bg-hover)}
.profile-row.active{background:var(--ui-bg-active)}
.profile-row.active .profile-name{color:var(--ui-accent);font-weight:600}
.profile-name{flex:1;font-size:13px;font-weight:500;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.profile-date{font-size:11px;color:var(--ui-text-tertiary);font-variant-numeric:tabular-nums}
.profile-rename,.profile-del{width:18px;height:18px;border-radius:var(--ui-radius-sm);color:var(--ui-text-tertiary);font-size:11px;display:flex;align-items:center;justify-content:center;flex:none;cursor:pointer}
.profile-rename:hover{background:var(--ui-bg-active);color:var(--ui-accent)}
.profile-del:hover{background:#fee2e2;color:#b91c1c}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ui-text);color:var(--ui-bg);padding:10px 16px;border-radius:var(--ui-radius);font-size:13px;display:flex;align-items:center;gap:12px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100000;box-shadow:var(--ui-shadow-popover)}
.toast.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.toast.export-wait{max-width:min(540px,calc(100vw - 28px));line-height:1.55;text-align:left}
.toast.export-wait span{display:block}
.toast button{background:rgba(255,255,255,.15);color:var(--ui-bg);padding:4px 10px;border-radius:var(--ui-radius-sm);font-size:12px;border:none;cursor:pointer;font-family:inherit}
.toast button:hover{background:rgba(255,255,255,.25)}
.palette-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}
.palette-chip{padding:0;background:none;border:1.5px solid transparent;border-radius:var(--ui-radius-sm);cursor:pointer;transition:border-color .15s;overflow:hidden;height:30px;display:flex}
.palette-chip:hover{border-color:var(--ui-border-strong)}
.palette-chip.active{border-color:var(--ui-accent);box-shadow:0 0 0 2px var(--ui-bg-active)}
.palette-chip i{flex:1;display:block;height:100%}
.palette-fold{margin-top:0;border-top:0;padding-top:0;margin-bottom:8px}
.palette-fold summary{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);padding:8px 10px;color:var(--ui-text-secondary);list-style:none;cursor:pointer}
.palette-fold summary::-webkit-details-marker{display:none}
.palette-fold summary::after{content:"";width:9px;height:9px;flex:none;color:var(--ui-text-tertiary);background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .15s}
.palette-fold[open] summary{margin-bottom:8px}
.palette-fold[open] summary::after{transform:rotate(90deg)}
.palette-fold .palette-grid{margin-bottom:0}
.palette-fold-count{font-size:11px;color:var(--ui-text-tertiary);letter-spacing:0;font-weight:400}
.hv-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:4px}
.hv-card{padding:7px 9px;background:var(--ui-bg-secondary);border:1.5px solid transparent;border-radius:var(--ui-radius-sm);cursor:pointer;text-align:left;transition:background .15s,border-color .15s;font-family:inherit}
.hv-card:hover{background:var(--ui-bg-hover)}
.hv-card.active{background:var(--ui-bg-active);border-color:var(--ui-accent)}
.hv-preview{--p:#37352f;--a:var(--ui-accent);--r:var(--ui-border-strong);color:var(--p);font-family:var(--ui-font);font-size:8.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;display:flex;align-items:center;gap:4px;min-height:14px;padding:1px 0;overflow:hidden;white-space:nowrap}
.hv-preview small,.hv-preview i{display:none}
.hv-preview.hv-rule{border-bottom:1px solid var(--r);padding-bottom:3px}
.hv-preview.hv-bar::before{content:"";width:2.5px;height:8px;background:var(--a);flex:none}
.hv-preview.hv-num i{display:inline-flex;width:12px;height:12px;border-radius:50%;background:var(--a);color:#fff;align-items:center;justify-content:center;font-style:normal;font-size:6px;font-weight:700;font-family:JetBrains Mono,monospace;letter-spacing:0;flex:none}
.hv-preview.hv-dot::before{content:"●";color:var(--a);font-size:7px;flex:none}
.hv-preview.hv-slash::before{content:"//";color:var(--a);font-family:JetBrains Mono,monospace;font-size:8px;letter-spacing:0;flex:none}
.hv-preview.hv-prefix small{display:inline;font-family:JetBrains Mono,monospace;color:var(--a);font-size:7px;font-weight:600;margin-right:2px;letter-spacing:0}
.hv-preview.hv-line::after{content:"";flex:1;height:1px;background:var(--r);margin-left:3px;min-width:8px}
.hv-preview.hv-shadow{padding:2px 6px;background:var(--a);color:#fff;border-radius:1px;display:inline-flex;align-self:flex-start}
.hv-preview.hv-double{border-top:1px solid var(--p);border-bottom:1px solid var(--p);padding:2px 0}
.hv-preview.hv-smallcaps{font-variant:small-caps;text-transform:none;letter-spacing:.12em;font-size:9.5px}
.hv-preview.hv-corner::before{content:"";width:6px;height:7px;background:var(--a);clip-path:polygon(0 0,100% 50%,0 100%);flex:none;transform:translateY(.5px)}
.hv-preview.hv-section::before{content:"§";color:var(--a);font-weight:600;font-size:10px;line-height:1;flex:none}
.hv-lbl{font-size:10px;color:var(--ui-text-tertiary);margin-top:3px;font-weight:400;letter-spacing:0;text-transform:none}
.adv-fold{margin-top:8px;border-top:1px dashed var(--ui-border);padding-top:8px}
.adv-fold summary{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ui-text-secondary);cursor:pointer;padding:4px 0;letter-spacing:0;list-style:none}
.adv-fold summary::-webkit-details-marker{display:none}
.adv-fold summary::before{content:"";width:9px;height:9px;flex:none;opacity:.55;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .15s}
.adv-fold[open] summary::before{transform:rotate(90deg);opacity:.55}
.control-fold{margin-bottom:10px}
.control-fold .hv-grid{margin-top:8px}
.panel-action{width:100%;margin-top:10px;background:var(--ui-bg);color:var(--ui-text-secondary);border:1px solid var(--ui-border);box-shadow:none;border-radius:var(--ui-radius-sm)}
.panel-action:hover{background:var(--ui-bg-hover);color:var(--ui-text);border-color:var(--ui-border-strong)}
.style-kit-groups{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.style-kit-title{display:flex;align-items:center;margin-bottom:7px;font-size:12px;color:var(--ui-text-secondary);font-weight:600;letter-spacing:0;text-transform:none}
.style-kit-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.style-kit-btn{min-height:74px;padding:9px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-bg);text-align:left;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,background .15s;box-shadow:none}
.style-kit-btn:hover{background:var(--ui-bg-hover);border-color:var(--ui-border-strong)}
.style-kit-btn.active{border-color:var(--ui-accent);background:var(--ui-bg-active);box-shadow:0 0 0 2px var(--ui-bg-active)}
.style-kit-name{font-size:13px;font-weight:600;color:var(--ui-text);line-height:1.25}
.style-kit-desc{font-size:11px;color:var(--ui-text-tertiary);line-height:1.35}
.style-kit-swatches{display:flex;gap:3px;margin-top:auto}
.style-kit-swatches i{width:16px;height:10px;border-radius:999px;display:block;box-shadow:inset 0 0 0 1px var(--ui-border)}
.panel-fold{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-bg);margin:10px 0;overflow:hidden;box-shadow:none}
.panel-fold>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;font-size:13px;font-weight:600;color:var(--ui-text);cursor:pointer;background:var(--ui-bg)}
.panel-fold>summary::-webkit-details-marker{display:none}
.panel-fold>summary::after{content:"";width:10px;height:10px;flex:none;color:var(--ui-text-tertiary);background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .15s}
.panel-fold[open]>summary{border-bottom:1px solid var(--ui-border);background:var(--ui-bg)}
.panel-fold[open]>summary::after{transform:rotate(90deg)}
.panel-fold>summary span{font-size:11px;color:var(--ui-text-tertiary);font-weight:400;margin-left:auto;text-align:right;flex:0 1 auto;min-width:0;padding-right:2px}
.panel-fold-body{padding:12px}
.panel-fold-body .field:last-child{margin-bottom:0}
.panel-note{font-size:12px;color:var(--ui-text-tertiary);line-height:1.5;margin-top:10px;padding:8px 10px;background:var(--ui-bg-secondary);border-radius:var(--ui-radius-sm)}
.panel-reset{width:100%;margin-top:10px;background:var(--ui-bg-secondary)!important;color:var(--ui-text-secondary)!important;border:1px solid var(--ui-border)!important;padding:8px!important;border-radius:var(--ui-radius-sm)!important;font-size:13px!important;box-shadow:none!important}
body{--col-l:248px;--col-r:312px;--row-top:58px;--layout-row:68px}
.app{grid-template-columns:var(--col-l) minmax(360px,1fr) var(--col-r);grid-template-rows:var(--row-top) var(--layout-row) 1fr}
.stage{width:794px}
.resume{width:794px;height:1123px;background:#fff;position:relative;overflow:hidden;--primary:#1f2937;--accent:#0a6cff;--bg:#ffffff;--text:#1a1a1a;--muted:#6b7280;--sub:#3b3f47;--rule:#e2e4e9;--name:#1f2937;--heading:#1f2937;--item:#3b3f47;--on-primary:#ffffff;--on-primary-soft:#eef4ff;--on-primary-muted:#cbd5e1;--on-accent:#ffffff;--side-bg:#f4f5f7;--side-text:#1a1a1a;--side-sub:#3b3f47;--side-muted:#6b7280;--side-heading:#1f2937;--side-item:#3b3f47;--side-rule:#e2e4e9;--tag-bg:rgba(10,108,255,.11);--tag-text:#0a6cff;--tag-border:#b8d4ff;--side-tag-bg:rgba(10,108,255,.11);--side-tag-text:#0a6cff;--side-tag-border:#b8d4ff;--primary-tag-bg:rgba(255,255,255,.14);--primary-tag-text:#fff;--primary-tag-border:rgba(255,255,255,.45);--soft-bg:rgba(10,108,255,.055);--side-soft-bg:rgba(255,255,255,.12);--code-bg:rgba(0,0,0,.06);--code-text:currentColor;--qr-media-text:#475569;--qr-media-accent:#0a6cff;--font-display:'Inter','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif;--t-name:38px;--t-h2:11px;--t-sub:13px;--t-body:11px;--t-meta:9.5px;--t-tag:10px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:40px;--pad:40px;--gap:16px;--line:1.55;--density:1;--radius:0px;font-family:var(--font-body);color:var(--text);background:var(--bg);font-size:var(--t-body);line-height:var(--line);font-feature-settings:"kern" 1,"liga" 1,"calt" 1;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;box-shadow:0 1px 2px rgba(15,23,42,.08),0 24px 60px rgba(20,22,30,.16),0 0 0 1px rgba(0,0,0,.04)}
.resume *{font-family:inherit}
.resume a{color:inherit;text-decoration:none}
.r-name{font-size:var(--t-name);font-weight:800;line-height:1.04;letter-spacing:-.018em;color:var(--name)}
.r-sub{font-size:var(--t-sub);color:var(--muted);margin-top:calc(var(--sp-1) + 2px);font-weight:500;line-height:1.35}
.r-contact{font-size:var(--t-meta);color:var(--muted);margin-top:var(--sp-2);line-height:1.55;font-feature-settings:"tnum" 1}
.r-section{margin-bottom:calc(var(--sp-5) * var(--density));position:relative;cursor:grab}
.r-section:last-child{margin-bottom:0}
.r-section [contenteditable],.r-section [contenteditable] *{cursor:text}
.r-section .r-add-item,.r-section .r-del,.r-section .r-entry-del,.r-section .r-line-del,.r-section .r-add-subitem{cursor:pointer}
.r-drag{position:absolute;left:-18px;top:1px;width:14px;height:22px;border-radius:7px;color:var(--muted);opacity:0;transition:opacity .15s,background .15s,color .15s;cursor:grab;z-index:4}
.r-drag::before{content:"";position:absolute;left:3px;top:5px;width:3px;height:3px;border-radius:50%;background:currentColor;box-shadow:0 6px 0 currentColor,0 12px 0 currentColor,6px 0 0 currentColor,6px 6px 0 currentColor,6px 12px 0 currentColor}
.r-section:hover .r-drag,.r-drag:hover,body.section-sorting .r-drag{opacity:.72}
.r-drag:hover{background:var(--ui-bg-hover);color:var(--ui-text-secondary)}
.r-side .r-drag{left:auto;right:22px;color:currentColor}
.r-del{position:absolute;top:-4px;right:-4px;width:18px;height:18px;border-radius:var(--ui-radius-sm);background:rgba(239,68,68,.92);color:#fff;font-size:12px;line-height:1;opacity:0;transition:opacity .15s;display:flex;align-items:center;justify-content:center;z-index:5;border:none;cursor:pointer;font-family:var(--ui-font);padding:0}
.r-section:hover .r-del{opacity:1}
.r-del:hover{background:#dc2626}
.r-add-item{position:absolute;right:-20px;top:28px;z-index:8;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin:0;padding:0;background:color-mix(in srgb,var(--bg) 92%,transparent);border:1px dashed var(--rule);border-radius:50%;color:var(--muted);font-size:0;opacity:0;pointer-events:none;transform:translateX(-2px);transition:opacity .15s,transform .15s,background .15s,border-color .15s,color .15s;cursor:pointer;font-family:inherit;box-shadow:0 6px 14px rgba(15,23,42,.08)}
.r-add-item::before{content:"+";font-size:13px;line-height:1;font-weight:700}
.r-section:hover>.r-add-item,.r-add-item:hover,.r-add-item:focus-visible{opacity:.82;pointer-events:auto;transform:translateX(0)}
.r-add-item:hover{background:var(--ui-bg-hover);border-color:var(--ui-editor-accent);color:var(--ui-editor-accent);opacity:1}
.r-entry-del,.r-line-del{position:absolute;width:16px;height:16px;border-radius:var(--ui-radius-sm);background:rgba(239,68,68,.9);color:#fff;font-size:11px;line-height:1;opacity:0;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center;z-index:7;border:none;cursor:pointer;font-family:var(--ui-font);padding:0}
.r-entry-del{top:1px;right:-18px}
.r-line-del{top:.1em;right:-18px}
.r-entry-del:hover,.r-line-del:hover{background:#dc2626}
.r-add-subitem{position:absolute;right:-18px;top:22px;z-index:8;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0;padding:0;border:1px dashed var(--rule);border-radius:50%;background:color-mix(in srgb,var(--bg) 92%,transparent);color:var(--muted);font-size:0;line-height:1;opacity:0;pointer-events:none;transform:translateX(-2px);transition:opacity .15s,transform .15s,background .15s,border-color .15s,color .15s;cursor:pointer;font-family:inherit;box-shadow:0 6px 14px rgba(15,23,42,.08)}
.r-add-subitem::before{content:"+";font-size:12px;line-height:1;font-weight:700}
.r-add-subitem:hover{background:var(--ui-bg-hover);border-color:var(--ui-editor-accent);color:var(--ui-editor-accent);opacity:1}
.r-section:hover .r-add-subitem,.r-item:hover>.r-add-subitem,.r-add-subitem:hover,.r-add-subitem:focus-visible{opacity:.82;pointer-events:auto;transform:translateX(0)}
.r-section:hover .r-entry-del,.r-section:hover .r-line-del{opacity:.38}
.r-item:hover>.r-entry-del,.r-desc li:hover>.r-line-del,.r-entry-block:hover>.r-entry-del,.r-item>.r-entry-del:hover,.r-desc li>.r-line-del:hover,.r-entry-block>.r-entry-del:hover,.r-item>.r-entry-del:focus-visible,.r-desc li>.r-line-del:focus-visible,.r-entry-block>.r-entry-del:focus-visible{opacity:.82;pointer-events:auto}
.r-section::after{content:"";position:absolute;top:0;right:-24px;width:28px;height:100%;pointer-events:auto}
@media (hover:none){
.r-add-item,.r-add-subitem{opacity:.68;pointer-events:auto;transform:none}
.r-entry-del,.r-line-del{opacity:.42}
}
@media print{
.r-drag,.r-del,.r-add-item,.r-resize,.r-entry-del,.r-line-del,.r-add-subitem{display:none!important}
}
.drag-ghost{opacity:.38;outline:1px dashed var(--ui-editor-accent);outline-offset:3px}
.drag-chosen{cursor:grabbing}
.drag-active{cursor:grabbing}
body.section-sorting .r-section{user-select:none}
.r-section.w-full{grid-column:1 / -1!important}
.r-section.w-half{grid-column:auto!important}
.r-resize{position:absolute;right:-8px;top:28px;bottom:8px;width:14px;border-radius:999px;cursor:ew-resize;opacity:0;z-index:6;transition:opacity .15s,background .15s}
.r-resize::before{content:"";position:absolute;left:6px;top:10px;bottom:10px;width:2px;border-radius:999px;background:var(--ui-editor-accent);box-shadow:0 0 0 3px rgba(10,108,255,.1)}
.r-section:hover .r-resize{opacity:.78}
.r-resize:hover,.r-section.is-resizing .r-resize{opacity:1;background:rgba(10,108,255,.08)}
body.section-resizing{cursor:ew-resize}
body.section-resizing .r-section{user-select:none}
.resume:not([data-layout=mono]):not([data-layout=typo]):not([data-layout=mag]):not([data-layout=card]):not([data-layout=intro]) .r-resize,
.r-side .r-resize{display:none}
.r-h2{font-family:var(--font-display);font-size:var(--t-h2);font-weight:700;color:var(--heading);letter-spacing:var(--h2-track,.18em);text-transform:uppercase;margin-top:var(--h2-mt,0);margin-bottom:var(--h2-mb,12px);display:flex;align-items:center;gap:var(--sp-2)}
.r-section:first-child .r-h2{margin-top:0!important}
.r-side-sections .r-section:first-child .r-h2{margin-top:0!important}
.r-h2 [contenteditable]{flex-shrink:0}
.r-h2 i,.r-h2 small{display:none}
.r-item{margin-bottom:calc(var(--sp-3) * var(--density));position:relative;padding-right:22px}
.r-item::after{content:"";position:absolute;top:0;right:-22px;width:24px;height:100%;pointer-events:auto}
.r-item:last-child{margin-bottom:0}
.r-section.type-education .r-item{margin-bottom:calc(var(--sp-1) * var(--density))}
.r-section.type-education .r-desc{margin-top:2px}
.r-section.type-education .r-desc li{margin-top:1px}
.r-row{display:flex;justify-content:space-between;gap:var(--sp-3);align-items:baseline}
.r-row .l{font-weight:600;color:var(--item);font-size:calc(var(--t-body) * 1.02)}
.r-row .r{color:var(--muted);font-size:var(--t-meta);font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:.02em}
.r-desc{margin-top:calc(var(--sp-1) * var(--density));color:var(--text);line-height:var(--line);text-align:justify;text-align-last:left;text-justify:inter-character}
.r-desc p{margin-top:calc(var(--sp-1) * var(--density))}
.r-desc ul,.r-desc{padding-left:0}
.r-desc li{margin-left:1.05em;list-style:disc;margin-top:calc(3px * var(--density));text-align:justify;text-align-last:left;text-justify:inter-character;position:relative;padding-right:22px}
.r-desc li::after{content:"";position:absolute;top:0;right:-22px;width:24px;height:100%;pointer-events:auto}
.r-desc li::marker{color:var(--accent);font-size:.85em}
.r-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:var(--sp-2)}
.r-tag{font-size:var(--t-tag);padding:2px 8px;border-radius:999px;background:var(--tag-bg);color:var(--tag-text);font-weight:500;line-height:1.5;letter-spacing:.01em}
.r-tag.is-empty{display:none!important}
.r-desc code{background:var(--code-bg)!important;color:var(--code-text)!important}
.r-entry-block{position:relative;padding-right:22px}
.r-entry-block::after{content:"";position:absolute;top:0;right:-22px;width:24px;height:100%;pointer-events:auto}
.r-section.type-qr{break-inside:avoid}
.r-section.type-qr .r-add-item{display:none}
.r-qr-card{display:flex;align-items:center;gap:var(--sp-3);padding:calc(var(--sp-3) + 2px);border:1px solid var(--rule);border-radius:calc(var(--radius,0px) + 8px);background:var(--soft-bg);cursor:default}
.r-qr-media{width:92px;aspect-ratio:1;border-radius:var(--ui-radius);border:1px solid var(--ui-border-strong);background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto;cursor:pointer;transition:filter .15s,border-color .15s;position:relative}
.r-qr-media:hover{filter:brightness(1.02);border-color:var(--ui-editor-accent)}
.r-qr-media img{width:100%;height:100%;object-fit:contain;display:block}
.r-qr-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--qr-media-text);font-size:10px;font-weight:650;line-height:1.3;text-align:center;background:linear-gradient(90deg,rgba(0,0,0,.07) 1px,transparent 1px),
  linear-gradient(rgba(0,0,0,.07) 1px,transparent 1px),#fff;background-size:12px 12px}
.r-qr-placeholder b{font-size:18px;line-height:1;color:var(--qr-media-accent)}
.r-qr-copy{min-width:0;flex:1;color:var(--text)}
.r-qr-copy strong{display:block;font-size:calc(var(--t-body) * 1.04);color:var(--sub);line-height:1.35;margin-bottom:3px}
.r-qr-caption{color:var(--muted);font-size:var(--t-meta);line-height:1.55}
.r-side .r-qr-card{display:block;text-align:center;padding:var(--sp-3);background:var(--side-soft-bg);border-color:var(--side-rule)}
.r-side .r-qr-media{width:min(112px,100%);margin:0 auto var(--sp-2)}
.r-side .r-qr-copy strong{font-size:calc(var(--t-body) * 1.02)}
.resume[data-layout=card] .r-qr-card,.resume[data-layout=stack] .r-qr-card{background:var(--bg)}
.r-avatar{width:var(--av-size,80px);aspect-ratio:1;background:#dcdde2 center/cover no-repeat;flex-shrink:0;overflow:hidden;border-radius:50%;cursor:pointer;transition:filter .15s;position:relative}
.r-avatar::after{content:"更换头像";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(55,53,47,.48);color:#fff;font-size:11px;font-weight:500;line-height:1.3;text-align:center;padding:4px;border-radius:inherit;opacity:0;transition:opacity .15s;pointer-events:none;font-family:var(--ui-font)}
.r-avatar:hover::after{opacity:1}
.r-avatar:hover{filter:brightness(1.04)}
.r-avatar.shape-round{aspect-ratio:1;border-radius:50%;width:var(--av-size,80px)}
.r-avatar.shape-ellipse{aspect-ratio:3/4;border-radius:50%;width:var(--av-size,80px)}
.r-avatar.shape-rounded{aspect-ratio:3/4;border-radius:8px;width:var(--av-size,80px)}
.r-avatar.shape-square{aspect-ratio:3/4;border-radius:0;width:var(--av-size,80px)}
.r-avatar.shape-none{display:none!important}
.resume[data-layout=banner]{padding:0}
.resume[data-layout=banner] .r-header{background:var(--primary);color:var(--on-primary);padding:var(--sp-6) var(--pad) var(--sp-5);display:flex;align-items:center;gap:var(--sp-5)}
.resume[data-layout=banner] .r-header .r-name{color:var(--on-primary)}
.resume[data-layout=banner] .r-header .r-sub{color:var(--on-primary-soft)}
.resume[data-layout=banner] .r-header .r-contact{color:var(--on-primary-muted);display:flex;flex-wrap:wrap;gap:4px 16px}
.resume[data-layout=banner] .r-body{padding:var(--sp-5) var(--pad) var(--pad)}
.resume[data-layout=side-l]{padding:0;display:grid;grid-template-columns:var(--side-w,268px) minmax(0,1fr);position:relative}
.resume[data-layout=side-l] .r-side{--tag-bg:var(--primary-tag-bg);--tag-text:var(--primary-tag-text);--tag-border:var(--primary-tag-border);background:var(--primary);color:var(--on-primary);padding:calc(var(--pad) * .85) calc(var(--pad) * .55)}
.resume[data-layout=side-l] .r-side .r-name{color:var(--on-primary);font-size:calc(var(--t-name) * .78);margin-top:var(--sp-3)}
.resume[data-layout=side-l] .r-side .r-sub{color:var(--on-primary-soft)}
.resume[data-layout=side-l] .r-side .r-contact{color:var(--on-primary-soft);font-size:var(--t-meta);word-break:break-all;line-height:1.7}
.resume[data-layout=side-l] .r-side .r-h2{color:var(--on-primary);border-color:var(--on-primary-muted)}
.resume[data-layout=side-l] .r-side .r-tag{background:var(--primary-tag-bg);color:var(--primary-tag-text);border:1px solid var(--primary-tag-border)}
.resume[data-layout=side-l] .r-side .r-row .l,.resume[data-layout=side-l] .r-side .r-row .r,.resume[data-layout=side-l] .r-side .r-desc,.resume[data-layout=side-l] .r-side .r-qr-copy,.resume[data-layout=side-l] .r-side .r-qr-copy strong,.resume[data-layout=side-l] .r-side .r-qr-caption{color:var(--on-primary-soft)}
.resume[data-layout=side-l] .r-side .r-avatar{margin:0}
.resume[data-layout=side-l] .r-main{padding:calc(var(--pad) * .85) var(--pad);background:var(--bg)}
.resume[data-layout=side-r]{padding:0;display:grid;grid-template-columns:minmax(0,1fr) var(--side-w,240px);position:relative}
.resume[data-layout=side-r] .r-main{padding:calc(var(--pad) * .85) var(--pad);background:var(--bg)}
.resume[data-layout=side-r] .r-side{--tag-bg:var(--side-tag-bg);--tag-text:var(--side-tag-text);--tag-border:var(--side-tag-border);background:var(--side-bg,#f4f5f7);color:var(--side-text);padding:calc(var(--pad) * .85) calc(var(--pad) * .55);border-left:1px solid var(--side-rule)}
.resume[data-layout=side-r] .r-side .r-avatar{margin-bottom:var(--sp-3)}
.resume[data-layout=side-r] .r-side .r-name{font-size:calc(var(--t-name) * .58);line-height:1.1;color:var(--side-text)}
.resume[data-layout=side-r] .r-side .r-sub{color:var(--side-muted)}
.resume[data-layout=side-r] .r-side .r-contact{color:var(--side-sub);line-height:1.7;word-break:break-all}
.resume[data-layout=side-r] .r-side .r-h2{color:var(--side-heading);border-color:var(--side-rule)}
.resume[data-layout=side-r] .r-side .r-row .l,.resume[data-layout=side-r] .r-side .r-qr-copy strong{color:var(--side-item)}
.resume[data-layout=side-r] .r-side .r-row .r,.resume[data-layout=side-r] .r-side .r-desc,.resume[data-layout=side-r] .r-side .r-qr-copy,.resume[data-layout=side-r] .r-side .r-qr-caption{color:var(--side-sub)}
.resume[data-layout=side-r] .r-side .r-tag{background:var(--side-tag-bg);color:var(--side-tag-text);border-color:var(--side-tag-border)}
.r-side-resize{position:absolute;top:0;bottom:0;width:14px;z-index:18;cursor:ew-resize;opacity:0;transition:opacity .15s,background .15s}
.r-side-resize::before{content:"";position:absolute;left:6px;top:24px;bottom:24px;width:2px;border-radius:999px;background:var(--ui-editor-accent);box-shadow:0 0 0 3px rgba(10,108,255,.1)}
.resume[data-layout=side-l] .r-side-resize{left:calc(var(--side-w,268px) - 7px)}
.resume[data-layout=side-r] .r-side-resize{right:calc(var(--side-w,240px) - 7px)}
.resume:hover>.r-side-resize,.r-side-resize:hover,body.side-resizing .r-side-resize{opacity:.75}
.r-side-resize:hover,body.side-resizing .r-side-resize{background:rgba(10,108,255,.06)}
body.side-resizing{cursor:ew-resize}
.resume[data-layout=mono]{padding:calc(var(--pad) * .9) var(--pad)}
.resume[data-layout=mono] .r-header{display:flex;align-items:center;gap:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5)}
.resume[data-layout=mono] .r-header > div:first-of-type{flex:1}
.resume[data-layout=mono] .r-header .r-contact{display:flex;flex-wrap:wrap;gap:3px 14px}
.resume[data-layout=mono] .r-header .r-avatar{width:var(--av-size,80px)!important;min-width:40px;max-width:150px;align-self:flex-start}
.resume[data-layout=mono] .r-body{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--sp-5);row-gap:0;align-content:start;flex:1}
.resume[data-layout=mono] .r-body .r-section{break-inside:avoid}
.resume[data-layout=typo]{padding:calc(var(--pad) * .9) var(--pad);display:flex;flex-direction:column}
.resume[data-layout=typo] .r-header{display:grid;grid-template-columns:1fr auto;align-items:start;gap:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5)}
.resume[data-layout=typo] .r-header > div:first-child{display:flex;flex-direction:column;min-width:0;transform:translateY(3px)}
.resume[data-layout=typo] .r-header .r-name{font-size:calc(var(--t-name) * 1.45);font-weight:900;line-height:.95;letter-spacing:-.025em;margin:0;color:var(--name)}
.resume[data-layout=typo] .r-header .r-sub{font-size:calc(var(--t-sub) * 1.05);color:var(--tag-text);margin-top:var(--sp-2);font-weight:600}
.resume[data-layout=typo] .r-header .r-contact{display:flex;flex-wrap:wrap;gap:3px 14px;line-height:1.6;margin-top:var(--sp-3);color:var(--muted)}
.resume[data-layout=typo] .r-header .r-avatar{align-self:start;margin-top:var(--sp-1)}
.resume[data-layout=typo] .r-body{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--sp-6);row-gap:0;align-content:start;flex:1}
.resume[data-layout=typo] .r-body .r-section{break-inside:avoid}
.resume[data-layout=mag]{padding:calc(var(--pad) * .9) var(--pad);display:flex;flex-direction:column}
.resume[data-layout=mag] .r-header{display:grid;grid-template-columns:1fr auto;align-items:end;gap:var(--sp-5);padding-bottom:var(--sp-3);border-bottom:3px double var(--primary);margin-bottom:var(--sp-5)}
.resume[data-layout=mag] .r-header .r-avatar{align-self:center}
.resume[data-layout=mag] .r-header .r-name{font-size:calc(var(--t-name) * 1.18);line-height:1}
.resume[data-layout=mag] .r-header .r-sub{font-style:italic;color:var(--tag-text)}
.resume[data-layout=mag] .r-body{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--sp-5);row-gap:0;align-content:start;flex:1}
.resume[data-layout=mag] .r-body .r-section{break-inside:avoid}
.resume[data-layout=card]{padding:calc(var(--pad) * .8);background:var(--side-bg,#f6f7f9)}
.resume[data-layout=card] .r-header{background:var(--bg);padding:var(--sp-4) var(--sp-5);border-radius:10px;border:1px solid var(--rule);display:flex;gap:var(--sp-5);align-items:center;margin-bottom:var(--sp-3)}
.resume[data-layout=card] .r-header .r-name{line-height:1.05}
.resume[data-layout=card] .r-header .r-contact{display:flex;flex-wrap:wrap;gap:2px 14px}
.resume[data-layout=card] .r-body{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);grid-auto-flow:dense;align-items:start}
.resume[data-layout=card] .r-body .r-section{background:var(--bg);padding:var(--sp-4) var(--sp-5);border-radius:10px;border:1px solid var(--rule);margin:0;break-inside:avoid}
.resume[data-layout=card] .r-body .r-section.full{grid-column:1/-1}
.resume[data-layout=card] .r-body .r-section .r-h2{margin-top:0}
.resume[data-layout=split-h]{padding:0;display:flex;flex-direction:column}
.resume[data-layout=split-h] .r-header{background:var(--primary);color:var(--on-primary);padding:var(--sp-5) var(--pad);display:flex;align-items:center;gap:var(--sp-5);position:relative}
.resume[data-layout=split-h] .r-header .r-name{color:var(--on-primary);font-size:calc(var(--t-name) * 1.22);line-height:1.05}
.resume[data-layout=split-h] .r-header .r-sub{color:var(--on-primary-soft)}
.resume[data-layout=split-h] .r-header .r-contact{color:var(--on-primary-muted);display:flex;flex-wrap:wrap;gap:2px 14px;margin-top:var(--sp-2)}
.resume[data-layout=split-h] .r-body{padding:var(--sp-5) var(--pad) var(--pad);flex:1}
.resume[data-layout=timeline]{padding:calc(var(--pad) * .9) var(--pad) var(--pad) calc(var(--pad) + 22px)}
.resume[data-layout=timeline] .r-header{display:flex;align-items:center;gap:var(--sp-5);padding-bottom:var(--sp-3);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5);margin-left:-22px;padding-left:22px}
.resume[data-layout=timeline] .r-body{position:relative}
.resume[data-layout=timeline] .r-body::before{content:"";position:absolute;left:-18px;top:8px;bottom:6px;width:1px;background:var(--rule)}
.resume[data-layout=timeline] .r-h2{position:relative}
.resume[data-layout=timeline] .r-h2::after{content:"";position:absolute;left:-22px;top:50%;transform:translateY(-50%);width:9px;height:9px;min-width:9px;max-width:9px;min-height:9px;max-height:9px;aspect-ratio:1;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--bg);box-sizing:border-box;flex:0 0 9px}
.resume[data-layout=classical]{padding:calc(var(--pad) * .9) var(--pad)}
.resume[data-layout=classical] .r-header{text-align:center;padding-bottom:var(--sp-4);border-bottom:2px solid var(--primary);margin-bottom:var(--sp-5);position:relative;display:block}
.resume[data-layout=classical] .r-header .r-avatar{position:absolute;left:0;top:calc(50% - var(--sp-2));transform:translateY(-50%)}
.resume[data-layout=classical] .r-header > div:not(.r-avatar){display:block!important}
.resume[data-layout=classical] .r-header .r-name{margin-bottom:var(--sp-2)}
.resume[data-layout=classical] .r-header .r-sub{margin-top:0}
.resume[data-layout=classical] .r-header .r-contact{justify-content:center;display:flex;flex-wrap:wrap;gap:3px 18px;margin-top:var(--sp-3)}
.resume[data-layout=classical] .r-body .r-section{margin-bottom:calc(var(--sp-5) * var(--density))}
.resume[data-layout=stack]{padding:var(--pad);background:var(--side-bg,#f4f5f7)}
.resume[data-layout=stack] .r-header{background:var(--bg);padding:var(--sp-5) var(--sp-6);border-radius:8px;border:1px solid var(--rule);display:flex;gap:var(--sp-5);align-items:center;margin-bottom:var(--sp-3)}
.resume[data-layout=stack] .r-header .r-name{line-height:1.05}
.resume[data-layout=stack] .r-header .r-contact{display:flex;flex-wrap:wrap;gap:2px 14px}
.resume[data-layout=stack] .r-body .r-section{background:var(--bg);padding:var(--sp-5) var(--sp-6);border-radius:8px;border:1px solid var(--rule);margin-bottom:var(--sp-3)}
.resume[data-layout=stack] .r-body .r-section:last-child{margin-bottom:0}
.resume[data-layout=ribbon]{padding:calc(var(--pad) * .9) var(--pad);position:relative}
.resume[data-layout=ribbon]::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--primary)}
.resume[data-layout=ribbon]::after{content:"";position:absolute;left:0;top:0;width:6px;height:120px;background:var(--accent)}
.resume[data-layout=ribbon] .r-header{display:flex;align-items:center;gap:var(--sp-5);padding-bottom:var(--sp-4);margin-bottom:var(--sp-5);border-bottom:1px solid var(--rule)}
.resume[data-layout=ribbon] .r-header > div:not(.r-avatar){flex:1}
.resume[data-layout=ribbon] .r-header .r-contact{display:flex;flex-wrap:wrap;gap:2px 14px}
.resume[data-layout=intro]{padding:calc(var(--pad) * .9) var(--pad);display:flex;flex-direction:column}
.resume[data-layout=intro] .r-header{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--sp-3) var(--sp-5);padding:calc(var(--sp-5) + 3px) var(--sp-6) var(--sp-4);margin-bottom:var(--sp-5);background:var(--side-bg,#f6f7f9);border-radius:calc(var(--radius,0px) + 8px);position:relative}
.resume[data-layout=intro] .r-header::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none}
.resume[data-layout=intro] .r-header > div{min-width:0}
.resume[data-layout=intro] .r-header .r-name{overflow-wrap:break-word}
.resume[data-layout=intro] .r-header::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--accent);border-radius:calc(var(--radius,0px) + 8px) calc(var(--radius,0px) + 8px) 0 0}
.resume[data-layout=intro] .r-header .r-name{line-height:1.08;color:var(--side-text)}
.resume[data-layout=intro] .r-header .r-sub{margin-top:var(--sp-1);color:var(--side-muted)}
.resume[data-layout=intro] .r-header .r-contact{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:2px 18px;margin-top:0;padding-top:var(--sp-3);border-top:1px solid var(--side-rule);color:var(--side-sub)}
.resume[data-layout=intro] .r-body{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--sp-6);row-gap:0;align-content:start;flex:1}
.resume[data-layout=intro] .r-body .r-section{break-inside:avoid}
.resume[data-layout=mono] .r-body.two-col-body,
.resume[data-layout=typo] .r-body.two-col-body,
.resume[data-layout=mag] .r-body.two-col-body,
.resume[data-layout=intro] .r-body.two-col-body,
.resume[data-layout=card] .r-body.two-col-body{display:flex;flex-direction:column;gap:var(--sp-5);align-content:stretch}
.r-column-group{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:var(--sp-6)}
.r-col{min-width:0;display:flex;flex-direction:column;gap:calc(var(--sp-5) * var(--density));min-height:28px}
.r-column-group,.r-col>.r-section,.r-body.two-col-body>.r-section{width:100%}
.r-col .r-section{margin-bottom:0}
.resume[data-layout=mag] .r-column-group{column-gap:var(--sp-5)}
.resume[data-layout=card] .r-body.two-col-body{gap:var(--sp-3)}
.resume[data-layout=card] .r-column-group{column-gap:var(--sp-3)}
.resume[data-layout=card] .r-col{gap:var(--sp-3)}
.resume[data-layout=card] .r-body.two-col-body>.r-section{margin:0}
.resume[data-layout=framed]{padding:calc(var(--pad) + 4px);position:relative}
.resume[data-layout=framed]::after{content:"";position:absolute;left:14px;right:14px;top:14px;bottom:14px;border:1px solid var(--primary);pointer-events:none;z-index:1}
.resume[data-layout=framed] > *{position:relative;z-index:2}
.resume[data-layout=framed] .r-header{display:flex;align-items:center;gap:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-5)}
.resume[data-layout=framed] .r-header .r-contact{display:flex;flex-wrap:wrap;gap:2px 14px}
.hv-rule .r-h2{padding-bottom:5px;border-bottom:1px solid var(--rule)}
.hv-bar .r-h2::before{content:"";width:3px;height:12px;background:var(--accent);border-radius:0}
.hv-num .r-h2 i{display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--on-accent);align-items:center;justify-content:center;font-style:normal;font-size:9.5px;font-weight:700;font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums;letter-spacing:0}
.hv-dot .r-h2::before{content:"●";color:var(--accent);font-size:9px}
.hv-slash .r-h2::before{content:"//";color:var(--accent);font-family:'JetBrains Mono',monospace;font-size:.92em;letter-spacing:0}
.hv-prefix .r-h2 small{display:inline;font-family:'JetBrains Mono',monospace;color:var(--accent);margin-right:4px;font-size:.85em;font-weight:600;font-variant-numeric:tabular-nums}
.hv-line .r-h2::after{content:"";flex:1;height:1px;background:var(--rule);margin-left:var(--sp-1);min-width:20px}
.hv-shadow .r-h2{padding:4px 10px;background:var(--accent);color:var(--on-accent);border-radius:2px;display:inline-block;letter-spacing:.16em}
.resume.hv-shadow .r-h2,.resume.hv-shadow .r-h2 *{color:var(--on-accent)!important;-webkit-text-fill-color:var(--on-accent)!important}
.hv-double .r-h2{border-top:1px solid currentColor;border-bottom:1px solid currentColor;padding:5px 0;letter-spacing:.22em}
.hv-smallcaps .r-h2{font-variant:small-caps;letter-spacing:.16em;font-size:calc(var(--t-h2) * 1.05);font-weight:600;text-transform:none;font-feature-settings:"smcp" 1}
.hv-corner .r-h2{line-height:1.16}
.hv-corner .r-h2::before{content:"";width:7px;height:8px;background:var(--accent);clip-path:polygon(0 0,100% 50%,0 100%);flex:none;transform:translateY(.5px)}
.hv-section .r-h2 small{display:inline;font-family:var(--font-display);font-weight:700;color:var(--accent);margin-right:6px;font-feature-settings:"tnum" 1;letter-spacing:0;font-size:.85em}
.hv-section .r-h2::before{content:"§";color:var(--accent);font-family:var(--font-display);font-weight:600;font-size:1.1em;margin-right:1px}
.resume[data-layout=timeline] .r-h2::before{content:none!important;display:none!important}
.resume[data-layout=timeline] .r-h2 i,
.resume[data-layout=timeline] .r-h2 small{display:none!important}
.resume[data-layout=timeline] .r-h2::after{content:""!important;position:absolute;left:-22px;top:50%;transform:translateY(-50%);width:9px;height:9px;min-width:9px;max-width:9px;min-height:9px;max-height:9px;aspect-ratio:1;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--bg);box-sizing:border-box;flex:0 0 9px}
.tv-square .r-tag{border-radius:2px}
.tv-bracket .r-tag{background:transparent;padding-left:0;padding-right:0;font-family:'JetBrains Mono',monospace}
.tv-bracket .r-tag::before{content:"[";opacity:.55}
.tv-bracket .r-tag::after{content:"]";opacity:.55}
.tv-hash .r-tag::before{content:"#";opacity:.5;margin-right:2px;font-weight:400}
.tv-line .r-tag{background:transparent;border-bottom:1px solid var(--tag-text);border-radius:0;padding:0 1px 1px}
.tv-outline .r-tag{background:transparent;border:1px solid var(--tag-border);color:var(--tag-text);padding:1px 7px}
.tv-solid .r-tag{background:var(--accent);color:var(--on-accent);font-weight:500}
.tv-soft .r-tag{background:var(--tag-bg);color:var(--tag-text);font-weight:500}
.theme-01{--primary:#0a0a0a;--accent:#00d084;--bg:#0a0a0a;--text:#e3e5e8;--muted:#7a8088;--sub:#cfd1d4;--rule:#1f2227;--font-display:'JetBrains Mono','IBM Plex Mono','Noto Sans SC',monospace;--font-body:'JetBrains Mono','IBM Plex Mono','Noto Sans SC',monospace;--line:1.65}
.theme-01 .r-tag{background:transparent;color:var(--tag-text)}
.theme-01 .r-h2{color:var(--heading);letter-spacing:.14em}
.theme-01 .r-row .l{color:var(--item)}
.theme-01 .r-row .r{color:var(--muted)}
.theme-01 .r-header{background:#0a0a0a;border-bottom:1px solid #1a1d22}
.theme-01 .r-name::before{content:"$ ";color:var(--accent);font-weight:400}
.theme-01 .r-sub::before{content:"# ";color:var(--muted)}
.theme-01 .r-desc li::marker{color:var(--accent);content:"› "}
.theme-02{--primary:#1e293b;--accent:#f59e0b;--bg:#fff;--text:#0f172a;--muted:#64748b;--sub:#1e293b;--rule:#dde2ea;--font-display:'IBM Plex Sans','Noto Sans SC',sans-serif;--font-body:'IBM Plex Sans','Noto Sans SC',sans-serif}
.theme-02 .r-side{background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:24px 24px}
.theme-03{--primary:#1e1b4b;--accent:#7c5cff;--bg:#fbfaff;--text:#1a1a2e;--muted:#615f7a;--sub:#3a3470;--rule:#e5e3f5;--font-display:'Source Serif 4','Noto Serif SC',serif;--font-body:'Source Serif 4','Noto Serif SC',serif;--line:1.7}
.theme-03 .r-h2{font-weight:600;letter-spacing:.08em;text-transform:none;font-style:italic}
.theme-03 .r-name{letter-spacing:-.01em;font-weight:700}
.theme-04{--primary:#0f4c81;--accent:#06b6d4;--bg:#fff;--text:#0f172a;--muted:#64748b;--sub:#1e293b;--rule:#dde6f0;--font-display:'Manrope','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-05{--primary:#0b1d3a;--accent:#b8862b;--bg:#fffdf6;--text:#0b1d3a;--muted:#5e6473;--sub:#1d2d4a;--rule:#e6dec3;--font-display:'Cormorant Garamond','Noto Serif SC',serif;--font-body:'IBM Plex Serif','Source Serif 4','Noto Serif SC',serif;--line:1.6}
.theme-05 .r-name{font-weight:700;letter-spacing:.005em}
.theme-05 .r-h2{letter-spacing:.24em;font-weight:600}
.theme-06{--primary:#003a70;--accent:#003a70;--bg:#fff;--text:#1f2937;--muted:#6b7280;--sub:#374151;--rule:#dbe3ea;--font-display:'Inter','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-06 .r-desc li{list-style:none;position:relative;padding-left:14px;margin-left:0}
.theme-06 .r-desc li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;background:var(--accent)}
.theme-06 .r-h2{letter-spacing:.22em}
.theme-07{--primary:#0a0a0a;--accent:#10b981;--bg:#f9fbf7;--text:#0a0a0a;--muted:#6b7280;--sub:#1a1a1a;--rule:#e2e6df;--font-display:'Space Grotesk','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif;--line:1.6}
.theme-07 .r-name{letter-spacing:-.03em;font-weight:900}
.theme-08{--primary:#1a1a1a;--accent:#e87c34;--bg:#fff8f1;--text:#1a1a1a;--muted:#7c6b5e;--sub:#2a2a2a;--rule:#f3ddc2;--font-display:'Manrope','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-08 .r-desc strong{background:linear-gradient(180deg,transparent 62%,rgba(232,124,52,.2) 62%);padding:0 2px}
.theme-09{--primary:#a01818;--accent:#a01818;--bg:#fbf5ec;--text:#1c1816;--muted:#7a6e60;--sub:#322b21;--rule:#e6dcc6;--font-display:'Playfair Display','Noto Serif SC',serif;--font-body:'Lora','Noto Serif SC',serif;--line:1.7}
.theme-09 .r-h2{font-style:italic;font-weight:500;text-transform:none;letter-spacing:0;font-size:calc(var(--t-h2) * 1.5)}
.theme-09 .r-name{letter-spacing:.01em;font-weight:700}
.theme-10{--primary:#111;--accent:#b03a72;--bg:#fff;--text:#1a1a1a;--muted:#6b7280;--sub:#1a1a1a;--rule:#e5e7eb;--font-display:'DM Serif Display','Noto Serif SC',serif;--font-body:'Inter','Noto Sans SC',sans-serif;--line:1.55}
.theme-11{--primary:#14532d;--accent:#b8860b;--bg:#fffdf3;--text:#1c1c14;--muted:#6b7178;--sub:#2c3b22;--rule:#ece8d4;--font-display:'Nunito','Noto Sans SC',sans-serif;--font-body:'Nunito','Noto Sans SC',sans-serif;--radius:10px;--line:1.65}
.theme-11 .r-h2{letter-spacing:.1em}
.theme-12{--primary:#0f766e;--accent:#14b8a6;--bg:#fff;--text:#0f172a;--muted:#5b6772;--sub:#1f2a37;--rule:#cce4e1;--font-display:'Source Sans 3','Noto Sans SC',sans-serif;--font-body:'Source Sans 3','Noto Sans SC',sans-serif}
.theme-13{--primary:#0a0a0a;--accent:#525252;--bg:#fbf9f3;--text:#1a1a1a;--muted:#605852;--sub:#2c2620;--rule:#e0d8c4;--font-display:'Source Serif 4','Noto Serif SC',serif;--font-body:'Source Serif 4','Noto Serif SC',serif;--line:1.72}
.theme-13 .r-h2{font-variant:small-caps;letter-spacing:.22em;font-weight:600;text-transform:none;font-feature-settings:"smcp" 1}
.theme-13 .r-tag{background:transparent;font-style:italic;color:var(--muted);padding:0;font-size:calc(var(--t-tag) * 1.08)}
.theme-13 .r-name{letter-spacing:.02em;font-weight:600}
.theme-14{--primary:#3f1518;--accent:#9c1f2a;--bg:#fdfaf5;--text:#1a1a1a;--muted:#6b5f5e;--sub:#2a1c1c;--rule:#e6dcd0;--font-display:'Cormorant Garamond','Noto Serif SC',serif;--font-body:'IBM Plex Serif','Source Serif 4','Noto Serif SC',serif;--line:1.7}
.theme-14 .r-h2{letter-spacing:.24em;font-weight:600}
.theme-14 .r-name{letter-spacing:.02em;font-weight:600}
.theme-14 .r-desc{text-align:justify}
.theme-15{--primary:#000;--accent:#000;--bg:#fff;--text:#1a1a1a;--muted:#a0a0a0;--sub:#404040;--rule:#000;--font-display:'Inter','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif;--pad:64px;--line:1.7}
.theme-15 .r-h2{letter-spacing:.36em;font-weight:400}
.theme-15 .r-tag{background:transparent;color:var(--tag-text);border-bottom:1px solid var(--tag-text);border-radius:0;padding:0 0 1px}
.theme-15 .r-name{font-weight:300;letter-spacing:-.005em}
.theme-16{--primary:#1e1e1e;--accent:#d95f0e;--bg:#fafafa;--text:#1a1a1a;--muted:#6a6a6a;--sub:#2a2a2a;--rule:#d2d2d2;--font-display:'IBM Plex Mono','Noto Sans SC',monospace;--font-body:'IBM Plex Sans','Noto Sans SC',sans-serif}
.theme-16 .r-h2{letter-spacing:.18em;font-family:'IBM Plex Mono',monospace}
.theme-16 .r-name{font-family:'IBM Plex Sans',sans-serif}
.theme-17{--primary:#0a0118;--accent:#a855f7;--bg:#0a0118;--text:#e6e6f5;--muted:#7a7a99;--sub:#cfcfe6;--rule:#1f1838;--font-display:'Space Grotesk','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-17 .r-h2{color:var(--heading)}
.theme-17 .r-tag{background:var(--tag-bg);color:var(--tag-text);border:1px solid var(--tag-border)}
.theme-18{--primary:#1e3a8a;--accent:#b8862b;--bg:#fff;--text:#1f2937;--muted:#5e6473;--sub:#1f2937;--rule:#dbe2ec;--font-display:'Source Serif 4','Noto Serif SC',serif;--font-body:'Source Sans 3','Noto Sans SC',sans-serif}
.theme-18 .r-h2{letter-spacing:.22em;font-weight:600}
.theme-18 .r-name{font-family:var(--font-display);letter-spacing:.01em}
.theme-19{--primary:#111111;--accent:#dc2640;--bg:#fff;--text:#0a0a0a;--muted:#737373;--sub:#171717;--rule:#e5e5e5;--font-display:'Space Grotesk','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-19 .r-name{font-weight:900;letter-spacing:-.035em}
.theme-19 .r-h2{font-weight:800}
.theme-20{--primary:#064e3b;--accent:#10b981;--bg:#fff;--text:#0a0a0a;--muted:#6b7280;--sub:#1a1a1a;--rule:#d4e9df;--font-display:'Manrope','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-20 .r-name{letter-spacing:-.018em}
.theme-21{--primary:#111;--accent:#c2255c;--bg:#fff;--text:#1a1a1a;--muted:#737373;--sub:#1a1a1a;--rule:#e5e5e5;--font-display:'Playfair Display','Noto Serif SC',serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-21 .r-name{font-weight:800;letter-spacing:-.02em}
.theme-22{--primary:#1a3c34;--accent:#2f9e77;--bg:#fff;--text:#0a0a0a;--muted:#6b7280;--sub:#1a1a1a;--rule:#d6e5de;--font-display:'Manrope','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-23{--primary:#1e293b;--accent:#0f4c81;--bg:#fff;--text:#1a1a1a;--muted:#64748b;--sub:#1e293b;--rule:#cbd5e1;--font-display:'Source Serif 4','Noto Serif SC',serif;--font-body:'Source Serif 4','Noto Serif SC',serif;--line:1.7}
.theme-23 .r-name{font-weight:600;letter-spacing:.01em}
.theme-24{--primary:#0f172a;--accent:#3b82f6;--bg:#fff;--text:#1a1a1a;--muted:#64748b;--sub:#1e293b;--rule:#e2e8f0;--font-display:'Manrope','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-25{--primary:#0a0a0a;--accent:#dc2626;--bg:#fafaf9;--text:#171717;--muted:#737373;--sub:#1f1f1f;--rule:#d4d4d4;--font-display:'IBM Plex Serif','Noto Serif SC',serif;--font-body:'Lora','Noto Serif SC',serif;--line:1.65}
.theme-25 .r-name{font-weight:700}
.theme-26{--primary:#3d3530;--accent:#9c7e5a;--bg:#fbf8f3;--text:#1a1a1a;--muted:#7b716a;--sub:#3d3530;--rule:#e6dccd;--font-display:'Cormorant Garamond','Noto Serif SC',serif;--font-body:'Cormorant Garamond','Noto Serif SC',serif;--line:1.75}
.theme-26 .r-name{font-weight:300;letter-spacing:.02em}
.theme-27{--primary:#1e3a8a;--accent:#0ea5e9;--bg:#fff;--text:#0f172a;--muted:#64748b;--sub:#1e293b;--rule:#dbe2ec;--font-display:'IBM Plex Sans','Noto Sans SC',sans-serif;--font-body:'IBM Plex Sans','Noto Sans SC',sans-serif}
.theme-28{--primary:#0a0a0a;--accent:#ea580c;--bg:#fafafa;--text:#0a0a0a;--muted:#6b7280;--sub:#171717;--rule:#e5e5e5;--font-display:'Space Grotesk','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif}
.theme-28 .r-name{font-weight:800;letter-spacing:-.025em}
.theme-29{--primary:#16161a;--accent:#e8456a;--bg:#fffdf7;--text:#16161a;--muted:#6e6e7a;--sub:#1f1f28;--rule:#16161a;--font-display:'Poppins','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif;--radius:12px}
.theme-29 .r-name{font-weight:900;letter-spacing:-.02em}
.theme-29 .r-h2{font-weight:800}
.theme-29 .r-tag{background:#fde68a;color:#16161a;font-weight:600}
.theme-29 .r-tags .r-tag:nth-child(3n){background:#a7f3d0}
.theme-29 .r-tags .r-tag:nth-child(3n+2){background:#bae6fd}
.theme-29 .r-desc li::marker{color:#0ea5e9}
.theme-29 .r-row .l{color:var(--item)}
.theme-30{--primary:#141414;--accent:#d92b2b;--bg:#f7f4ee;--text:#141414;--muted:#6b6b6b;--sub:#202020;--rule:#141414;--font-display:'Oswald','Noto Sans SC',sans-serif;--font-body:'Work Sans','Noto Sans SC',sans-serif}
.theme-30 .r-name{font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.theme-30 .r-h2{letter-spacing:.26em;font-weight:500}
.theme-30 .r-tag{background:transparent;border:1.5px solid var(--tag-border);color:var(--tag-text);border-radius:0;font-weight:600}
.theme-30 .r-desc li{list-style:none;position:relative;padding-left:14px;margin-left:0}
.theme-30 .r-desc li::before{content:"";position:absolute;left:0;top:.5em;width:6px;height:6px;background:#d92b2b}
.theme-30 .r-desc li:nth-child(3n)::before{background:#1d4ed8}
.theme-30 .r-desc li:nth-child(3n+2)::before{background:#eab308}
.theme-31{--primary:#6e655c;--accent:#a98f76;--bg:#f7f4f0;--text:#3d3833;--muted:#968b80;--sub:#57504a;--rule:#e5ded4;--font-display:'Lora','Noto Serif SC',serif;--font-body:'Source Sans 3','Noto Sans SC',sans-serif;--line:1.68}
.theme-31 .r-name{font-weight:600;letter-spacing:.01em}
.theme-31 .r-h2{letter-spacing:.2em;font-weight:600}
.theme-31 .r-tag{background:var(--tag-bg);color:var(--tag-text)}
.theme-32{--primary:#000;--accent:#e30613;--bg:#fff;--text:#111;--muted:#8a8a8a;--sub:#333;--rule:#dcdcdc;--font-display:'Inter','Noto Sans SC',sans-serif;--font-body:'Inter','Noto Sans SC',sans-serif;--line:1.5}
.theme-32 .r-name{font-weight:800;letter-spacing:-.03em}
.theme-32 .r-h2{letter-spacing:.02em;text-transform:none;font-weight:700;font-size:calc(var(--t-h2) * 1.15)}
.theme-32 .r-tag{background:transparent;color:var(--tag-text);border-bottom:2px solid var(--tag-text);border-radius:0;padding:0 1px 1px}
.theme-32 .r-desc li::marker{color:#e30613}
.theme-33{--primary:#26292a;--accent:#9e2b25;--bg:#faf7f2;--text:#26292a;--muted:#7d7f78;--sub:#3a3e3e;--rule:#ddd6c9;--font-display:'Noto Serif SC',serif;--font-body:'Noto Serif SC',serif;--line:1.78}
.theme-33 .r-name{font-weight:600;letter-spacing:.12em}
.theme-33 .r-h2{letter-spacing:.4em;font-weight:600}
.theme-33 .r-tag{background:transparent;border:1px solid var(--tag-border);color:var(--tag-text);border-radius:2px}
.theme-33 .r-sub{letter-spacing:.06em}
.theme-34{--primary:#8c6a4f;--accent:#cf8552;--bg:#fdf8f1;--text:#4a4036;--muted:#a08c7a;--sub:#5f5346;--rule:#efe2d2;--font-display:'Nunito','Noto Sans SC',sans-serif;--font-body:'Nunito','Noto Sans SC',sans-serif;--radius:12px;--line:1.65}
.theme-34 .r-name{font-weight:800}
.theme-34 .r-h2{letter-spacing:.14em}
.theme-34 .r-tag{background:var(--tag-bg);color:var(--tag-text)}
.resume[data-layout=side-l] .r-side .r-tags .r-tag{background:transparent;color:var(--on-primary);border:1px solid var(--on-primary-muted)}
.resume[data-layout=side-r] .r-side .r-tags .r-tag{background:var(--side-tag-bg);color:var(--side-tag-text);border-color:var(--side-tag-border)}
.resume.hv-shadow .r-h2{color:var(--on-accent)}
.resume[data-layout=side-l].hv-shadow .r-side .r-h2{color:var(--on-accent)}
.resume[data-layout=side-r].hv-shadow .r-side .r-h2{color:var(--on-accent)}
.resume.tv-square .r-tag,
.resume.tv-bracket .r-tag,
.resume.tv-hash .r-tag,
.resume.tv-line .r-tag,
.resume.tv-outline .r-tag,
.resume.tv-solid .r-tag,
.resume.tv-soft .r-tag{display:inline-flex;align-items:center;gap:0;font-family:inherit;font-style:normal;font-weight:500;line-height:1.5;letter-spacing:.01em;text-transform:none;text-decoration:none;box-shadow:none;background-image:none}
.resume.tv-square .r-tag::before,.resume.tv-square .r-tag::after,
.resume.tv-bracket .r-tag::before,.resume.tv-bracket .r-tag::after,
.resume.tv-hash .r-tag::before,.resume.tv-hash .r-tag::after,
.resume.tv-line .r-tag::before,.resume.tv-line .r-tag::after,
.resume.tv-outline .r-tag::before,.resume.tv-outline .r-tag::after,
.resume.tv-solid .r-tag::before,.resume.tv-solid .r-tag::after,
.resume.tv-soft .r-tag::before,.resume.tv-soft .r-tag::after{content:none}
.resume.tv-square .r-tag{background:var(--tag-bg);color:var(--tag-text);border:0;border-radius:2px;padding:2px 8px}
.resume.tv-bracket .r-tag{background:transparent;color:var(--tag-text);border:0;border-radius:0;padding:0 1px;font-family:'JetBrains Mono',monospace}
.resume.tv-bracket .r-tag::before{content:"[";opacity:.62}
.resume.tv-bracket .r-tag::after{content:"]";opacity:.62}
.resume.tv-hash .r-tag{background:transparent;color:var(--tag-text);border:0;border-radius:0;padding:0 1px}
.resume.tv-hash .r-tag::before{content:"#";opacity:.58;margin-right:2px;font-weight:400}
.resume.tv-line .r-tag{background:transparent;color:var(--tag-text);border:0;border-bottom:1px solid currentColor;border-radius:0;padding:0 1px 1px}
.resume.tv-outline .r-tag{background:transparent;color:var(--tag-text);border:1px solid var(--tag-border);border-radius:999px;padding:1px 8px}
.resume.tv-solid .r-tag{background:var(--accent);color:var(--on-accent);border:0;border-radius:999px;padding:2px 8px;font-weight:600}
.resume.tv-soft .r-tag{background:var(--tag-bg);color:var(--tag-text);border:0;border-radius:999px;padding:2px 8px}
.resume.tv-square .r-side .r-tag{background:var(--tag-bg);color:var(--tag-text);border:0}
.resume.tv-bracket .r-side .r-tag{background:transparent;color:var(--tag-text);border:0}
.resume.tv-hash .r-side .r-tag{background:transparent;color:var(--tag-text);border:0}
.resume.tv-line .r-side .r-tag{background:transparent;color:var(--tag-text);border:0;border-bottom:1px solid currentColor}
.resume.tv-outline .r-side .r-tag{background:transparent;color:var(--tag-text);border:1px solid var(--tag-border)}
.resume.tv-solid .r-side .r-tag{background:var(--accent);color:var(--on-accent);border:0}
.resume.tv-soft .r-side .r-tag{background:var(--tag-bg);color:var(--tag-text);border:0}
.resume.tv-square .r-tags .r-tag,.resume.tv-square .r-side .r-tags .r-tag{background:var(--tag-bg);color:var(--tag-text);border:0;border-radius:2px;padding:2px 8px}
.resume.tv-bracket .r-tags .r-tag,.resume.tv-bracket .r-side .r-tags .r-tag{background:transparent;color:var(--tag-text);border:0;border-radius:0;padding:0 1px;font-family:'JetBrains Mono',monospace}
.resume.tv-hash .r-tags .r-tag,.resume.tv-hash .r-side .r-tags .r-tag{background:transparent;color:var(--tag-text);border:0;border-radius:0;padding:0 1px}
.resume.tv-line .r-tags .r-tag,.resume.tv-line .r-side .r-tags .r-tag{background:transparent;color:var(--tag-text);border:0;border-bottom:1px solid currentColor;border-radius:0;padding:0 1px 1px}
.resume.tv-outline .r-tags .r-tag,.resume.tv-outline .r-side .r-tags .r-tag{background:transparent;color:var(--tag-text);border:1px solid var(--tag-border);border-radius:999px;padding:1px 8px}
.resume.tv-solid .r-tags .r-tag,.resume.tv-solid .r-side .r-tags .r-tag{background:var(--accent);color:var(--on-accent);border:0;border-radius:999px;padding:2px 8px;font-weight:600}
.resume.tv-soft .r-tags .r-tag,.resume.tv-soft .r-side .r-tags .r-tag{background:var(--tag-bg);color:var(--tag-text);border:0;border-radius:999px;padding:2px 8px}
.resume[data-layout=side-l] .r-side .r-tag,
.resume[data-layout=side-l] .r-side .r-tags .r-tag{color:var(--primary-tag-text)!important;border-color:var(--primary-tag-border)!important}
.resume[data-layout=side-l].tv-square .r-side .r-tag,
.resume[data-layout=side-l].tv-square .r-side .r-tags .r-tag,
.resume[data-layout=side-l].tv-soft .r-side .r-tag,
.resume[data-layout=side-l].tv-soft .r-side .r-tags .r-tag{background:var(--primary-tag-bg)!important}
.resume[data-layout=side-l].tv-solid .r-side .r-tag,
.resume[data-layout=side-l].tv-solid .r-side .r-tags .r-tag{background:var(--accent)!important;color:var(--on-accent)!important;border-color:transparent!important}
.resume[data-layout=side-l].tv-outline .r-side .r-tag,
.resume[data-layout=side-l].tv-outline .r-side .r-tags .r-tag{background:transparent!important;border:1px solid var(--primary-tag-border)!important}
.resume[data-layout=side-l].tv-bracket .r-side .r-tag,
.resume[data-layout=side-l].tv-bracket .r-side .r-tags .r-tag,
.resume[data-layout=side-l].tv-hash .r-side .r-tag,
.resume[data-layout=side-l].tv-hash .r-side .r-tags .r-tag,
.resume[data-layout=side-l].tv-line .r-side .r-tag,
.resume[data-layout=side-l].tv-line .r-side .r-tags .r-tag{background:transparent!important}
.resume[data-layout=side-r] .r-side .r-tag,
.resume[data-layout=side-r] .r-side .r-tags .r-tag{color:var(--side-tag-text)!important;border-color:var(--side-tag-border)!important}
.resume[data-layout=side-r].tv-square .r-side .r-tag,
.resume[data-layout=side-r].tv-square .r-side .r-tags .r-tag,
.resume[data-layout=side-r].tv-soft .r-side .r-tag,
.resume[data-layout=side-r].tv-soft .r-side .r-tags .r-tag{background:var(--side-tag-bg)!important}
.resume[data-layout=side-r].tv-solid .r-side .r-tag,
.resume[data-layout=side-r].tv-solid .r-side .r-tags .r-tag{background:var(--accent)!important;color:var(--on-accent)!important;border-color:transparent!important}
.resume[data-layout=side-r].tv-outline .r-side .r-tag,
.resume[data-layout=side-r].tv-outline .r-side .r-tags .r-tag{background:transparent!important;border:1px solid var(--side-tag-border)!important}
.resume[data-layout=side-r].tv-bracket .r-side .r-tag,
.resume[data-layout=side-r].tv-bracket .r-side .r-tags .r-tag,
.resume[data-layout=side-r].tv-hash .r-side .r-tag,
.resume[data-layout=side-r].tv-hash .r-side .r-tags .r-tag,
.resume[data-layout=side-r].tv-line .r-side .r-tag,
.resume[data-layout=side-r].tv-line .r-side .r-tags .r-tag{background:transparent!important}
.r-side-head{margin-bottom:var(--sp-5)}
.r-side-head .r-name{margin-top:var(--sp-3)}
.r-side-head .r-sub{margin-bottom:var(--sp-3)}
.r-side-sections,
.resume[data-layout=side-l] #mainArea,
.resume[data-layout=side-r] #mainArea{min-height:150px;display:flex;flex-direction:column;gap:calc(var(--sp-5) * var(--density))}
.r-side-sections .r-section,
.resume[data-layout=side-l] #mainArea>.r-section,
.resume[data-layout=side-r] #mainArea>.r-section{margin-bottom:0}
.r-side-sections:empty,
.resume[data-layout=side-l] #mainArea:empty,
.resume[data-layout=side-r] #mainArea:empty{min-height:230px;border-radius:8px}
body.section-sorting .r-side-sections:empty,
body.section-sorting .resume[data-layout=side-l] #mainArea:empty,
body.section-sorting .resume[data-layout=side-r] #mainArea:empty{outline:1px dashed currentColor;outline-offset:-6px;background:rgba(255,255,255,.08)}
body.section-sorting .r-side-sections,
body.section-sorting .resume[data-layout=side-l] #mainArea,
body.section-sorting .resume[data-layout=side-r] #mainArea{outline:1px dashed rgba(10,108,255,.35);outline-offset:-5px}
@page{
}
@media print{
html,body{width:210mm;height:auto;margin:0!important}
body{background:#fff;overflow:visible}
.topbar,.layout-strip,.panel-left,.panel-right,.left-collapse-btn,.right-collapse-btn,.overflow-warn,.canvas-tip,.ai-compare-bar,.zoom-dock,.fit-info,.resume-skel,.preset-skel,.preset-skel-title,.layout-skel-wrap{display:none!important}
.canvas{width:210mm;height:auto;padding:0;background:#fff;background-image:none;overflow:visible;display:block}
.canvas-viewport,.canvas-scroll{overflow:visible;display:block;padding:0;height:auto;min-height:0}
.stage{transform:none!important;width:210mm!important;height:auto!important}
.resume{width:210mm;height:297mm;box-shadow:none;margin:0!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact;page-break-after:always}
.resume:last-of-type{page-break-after:auto}
.resume.page2.hidden{display:none!important}
.r-avatar{cursor:default}
.r-avatar::after{display:none!important}
.app{display:block;width:210mm;height:auto;overflow:visible}
}
@media screen and (max-width:1360px) and (min-width:901px){
body{--col-l:178px;--col-r:296px}
.topbar{gap:8px;padding:0 12px}
.topbar .brand{min-width:0;width:auto;margin-right:0}
.topbar .brand .brand-tagline{display:none}
.tbtn{padding:10px}
.topbar .tbtn.primary{padding-inline:20px}
.panel-left{padding:12px 9px 24px}
.panel-left h3{font-size:12px;letter-spacing:0;margin-bottom:9px}
.preset-groups{gap:12px}
.preset-group-title{font-size:12px;letter-spacing:0;margin-bottom:6px}
.preset-group-title em{display:none}
.preset-grid{grid-template-columns:1fr;gap:5px}
.preset-card{aspect-ratio:auto;min-height:31px;border-radius:var(--ui-radius-sm);box-shadow:none;background:var(--ui-bg)}
.preset-card:hover{border-color:var(--ui-border-strong);box-shadow:none}
.preset-card.active{box-shadow:0 0 0 2px var(--ui-bg-active);border-color:var(--ui-accent)}
.preset-thumb{display:none}
.preset-card .label{position:static;inset:auto;display:block;padding:7px 9px;background:transparent;color:var(--ui-text);font-size:11px;line-height:1.25;text-align:left;border-top:none}
.preset-card .label small{display:inline;margin-left:4px;color:var(--ui-text-tertiary);font-size:10px;font-weight:400}
.preset-skel{aspect-ratio:auto;min-height:31px;border-radius:var(--ui-radius-sm)}
.layout-strip{padding-inline:12px}
}
@media screen and (max-width:1180px) and (min-width:901px){
body{--col-l:160px;--col-r:282px}
.topbar{gap:8px;padding:0 12px}
.topbar .brand{min-width:0;width:auto}
.tbtn{padding:10px;font-size:12px}
.layout-strip h4{display:none}
.lay-btn{min-width:50px;padding-inline:7px}
}
@media screen and (max-width:1120px) and (min-width:901px){
body:not(.left-collapsed){--col-l:152px}
body:not(.right-collapsed){--col-r:276px}
body.left-collapsed{--col-l:0px}
body.right-collapsed{--col-r:0px}
.left-collapse-btn,.right-collapse-btn{top:50%}
.panel-right{padding-inline:12px}
}
@media screen and (max-width:900px){
html,body{height:auto;min-height:100%;overflow:auto}
body{--col-l:1fr;--col-r:1fr;--row-top:auto;--layout-row:auto;background:var(--ui-bg-page)}
.app{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto minmax(520px,auto) auto;min-height:100vh;height:auto;overflow:visible}
.topbar{grid-column:1;grid-row:1;display:flex;flex-wrap:wrap;align-content:center;gap:8px;padding:10px;min-height:0;position:sticky;top:0;z-index:80}
.topbar-center{flex:1 1 100%;justify-content:center}
.topbar-actions{margin-left:auto}
.topbar .brand{min-width:0;width:auto;margin:0;padding-bottom:2px;justify-content:flex-start}
.topbar .brand .brand-tagline{font-size:11px}
.tbtn{min-height:34px;padding:10px;font-size:12px;flex:0 0 auto}
.tbtn.icon{width:36px}
.layout-strip{grid-column:1;grid-row:2;height:auto;min-height:60px;padding:8px 10px;position:static;z-index:70;border-top:1px solid var(--ui-border)}
.layout-strip h4{align-self:center;min-height:42px}
.lay-btn{min-width:54px}
.panel-left{grid-column:1;grid-row:3;border-right:0;border-bottom:1px solid var(--ui-border);padding:12px 10px 14px;overflow:visible}
.panel-left h3{position:static;margin:0 4px 10px;padding:0;border:0}
.left-collapse-btn,.right-collapse-btn{display:none}
.preset-groups{gap:10px}
.preset-group-title{margin:9px 2px 7px;letter-spacing:0}
.preset-group-title em{display:none}
.preset-grid{display:flex;gap:6px;overflow-x:auto;padding:0 2px 4px}
.preset-card{flex:0 0 auto;width:auto;min-width:74px;min-height:32px;aspect-ratio:auto;border-radius:999px;box-shadow:none;background:var(--ui-bg)}
.preset-card:hover{border-color:var(--ui-border-strong);box-shadow:none}
.preset-card.active{box-shadow:0 0 0 2px var(--ui-bg-active);border-color:var(--ui-accent)}
.preset-thumb{display:none}
.preset-card .label{position:static;inset:auto;padding:7px 10px;background:transparent;color:var(--ui-text);font-size:11px;line-height:1.25;text-align:center;border-top:none}
.preset-card .label small{display:none}
.preset-skel{flex:0 0 auto;width:74px;min-height:32px;aspect-ratio:auto;border-radius:999px}
.canvas{grid-column:1;grid-row:4;min-height:520px;padding:18px 12px 28px;justify-content:center}
.panel-right{grid-column:1;grid-row:5;border-left:0;border-top:1px solid var(--ui-border);max-height:none;overflow:visible;padding:16px 14px 28px}
.module-menu{position:fixed;left:10px;right:10px;top:112px;min-width:0;max-height:min(70vh,560px);grid-template-columns:1fr;z-index:120}
.toast{left:12px;right:12px;bottom:14px;transform:translateY(10px);justify-content:space-between}
.toast.show{transform:translateY(0)}
}
@media screen and (max-width:520px){
.topbar{top:0}
.topbar .brand{font-size:12px}
.topbar .brand .brand-tagline{max-width:44%;overflow:hidden;text-overflow:ellipsis}
.tbtn{padding-inline:9px}
.preset-card{min-width:68px}
.canvas{min-height:480px;padding-inline:10px}
.seg-wrap button{flex-basis:calc(50% - 2px)}
.hv-grid{grid-template-columns:1fr}
}

/* AI 对比高亮：覆盖主题 .r-tag 背景（含 !important 的侧栏/主题规则） */
.r-tag.ai-diff-changed{background:rgba(250,204,21,.45)!important;color:inherit!important}
.r-tag.ai-diff-added{background:rgba(134,239,172,.45)!important;color:inherit!important}
