:root {
  --primary: #000000;
  --primary-dark: #000000;
  --primary-light: rgba(0,0,0,.04);
  --primary-50: #ffffff;
  --accent: #333;
  --accent-glow: rgba(0,0,0,.08);

  --bg: #fdfaf5;       /* v3.37.12: 整页底色由死白改为极淡象牙(V1) */
  --bg-hero: #fdfaf5;
  --surface: #FFFFFF;
  --surface-hover: rgba(0,0,0,.04);

  --border: rgba(0,0,0,.12);
  --border-light: rgba(0,0,0,.06);

  --ink: #000000;
  --ink2: rgba(0,0,0,.7);
  --ink3: rgba(0,0,0,.55);
  --ink4: rgba(0,0,0,.4);
  --ink5: rgba(0,0,0,.18);

  --green: #000000;
  --green-light: rgba(0,0,0,.04);
  --green-dark: #000000;
  --orange: rgba(0,0,0,.55);
  --orange-light: rgba(0,0,0,.04);
  --red: #000000;
  --red-light: rgba(0,0,0,.04);
  --purple: rgba(0,0,0,.7);
  --purple-light: rgba(0,0,0,.04);

  --radius: 16px;
  --radius-sm: 10px;
  --radius-xs: 6px;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.05);
  --shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);
  --shadow-lg: 0 4px 12px rgba(0,0,0,.1);
  --shadow-blue: 0 2px 8px rgba(0,0,0,.1);
}

*{margin:0;padding:0;box-sizing:border-box;}
/* 3.19.1: smooth-scroll for in-page anchors / scrollIntoView; touch-action allows
   modern browsers to use compositor-thread scrolling for native gestures. */
html{scroll-behavior:smooth;}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased;position:relative;overscroll-behavior-y:none;touch-action:manipulation;}
#silk-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;}
::-webkit-scrollbar{width:6px;} ::-webkit-scrollbar-thumb{background:var(--ink5);border-radius:3px;}
::-webkit-scrollbar-thumb:hover{background:var(--ink4);}

/* ─── NAV ─── */
/* 3.19.1: promote sticky nav to its own compositor layer so backdrop-filter blur
   doesn't get re-rasterized every frame as the user scrolls. */
.nav{border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;backdrop-filter:blur(12px);background:rgba(255,255,255,.85);will-change:transform;contain:layout style;}
.nav-inner{max-width:1200px;margin:0 auto;padding:0 40px;height:64px;display:grid;grid-template-columns:1fr auto 1fr;column-gap:24px;align-items:center;}
.nav-inner > .nav-brand{justify-self:start;}
.nav-inner > .nav-links{justify-self:center;}
.nav-inner > .nav-right{justify-self:end;}
.nav-brand{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none;}
.nav-logo{width:36px;height:36px;background:#dc2626;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:18px;transition:all .3s;box-shadow:0 2px 8px rgba(220,38,38,.25);}
.nav-logo:hover{transform:rotate(10deg) scale(1.1);box-shadow:0 4px 16px rgba(0,0,0,.2);}
.nav-title{font-size:18px;font-weight:700;color:var(--ink);}
.nav-links{display:flex;align-items:center;gap:6px;}
.nav-link{padding:7px 16px;border-radius:8px;font-size:13px;font-weight:500;color:var(--ink3);cursor:pointer;transition:all .15s;border:none;background:none;}
.nav-link:hover{color:var(--ink);background:var(--surface-hover);}
.nav-link.active{color:var(--primary);background:transparent;font-weight:700;border-radius:0;border-bottom:2px solid var(--primary);padding-bottom:5px;}
.nav-right{display:flex;align-items:center;gap:12px;}
.nav-status{font-size:12px;padding:5px 12px;border-radius:20px;font-weight:500;display:flex;align-items:center;gap:5px;}
.nav-status.online{background:var(--green-light);color:var(--green-dark);}
.nav-status.offline{background:var(--red-light);color:var(--red);}
.nav-status .dot{width:6px;height:6px;border-radius:50%;background:currentColor;}

/* ─── HERO ─── */
.hero{background:linear-gradient(to bottom,#fdfaf5 0%,#fdfaf5 calc(100% - 140px),rgba(253,250,245,0) 100%);padding:56px 40px 40px;text-align:center;position:relative;overflow:hidden;z-index:1;}
.hero-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 calc(100% - 160px),transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 calc(100% - 160px),transparent 100%);}
.hero-title{font-size:56px;font-weight:800;letter-spacing:-.5px;margin-bottom:8px;position:relative;z-index:3;color:#1e3a8a;}  /* v3.37.6: 副标改深蓝;v3.37.30: z-index 3 盖住 skyline */
.hero-title .brand{color:#dc2626;-webkit-text-fill-color:#dc2626;}
/* v3.37.11: 副标逐字染色 A2 方案(暖起冷收) */
.hero-title .ht-dim   {color:#94a3b8;}
.hero-title .ht-red   {color:#dc2626;}
.hero-title .ht-brick {color:#b45c4a;}
.hero-title .ht-yellow{color:#a47828;}
.hero-title .ht-pink  {color:#d97aab;}
.hero-title .ht-steel {color:#4a7ba8;}
.hero-title .ht-blue  {color:#1e3a8a;}
.hero-title .ht-black {color:#0f172a;}
.hero-sub{font-size:16px;color:var(--ink3);margin-bottom:6px;font-weight:400;position:relative;z-index:1;}
.hero-tags{display:flex;justify-content:center;gap:8px;margin-top:16px;position:relative;z-index:1;}
.hero-tag{padding:5px 14px;border-radius:20px;font-size:12px;font-weight:500;background:rgba(255,255,255,.8);backdrop-filter:blur(8px);border:1px solid var(--border);color:var(--ink3);transition:all .3s;}
.hero-tag:hover{border-color:var(--primary);color:var(--primary);box-shadow:0 0 12px rgba(0,0,0,.06);}

/* Floating orbs in hero */
/* v3.37.29 — 国家地标天际线;v3.37.30 — 上移与标题重叠,标题在前 */
.hero-skyline{display:block;width:100%;max-width:1400px;margin:-110px auto 0;position:relative;z-index:0;pointer-events:none;line-height:0;}
body[data-tool] .hero-skyline{display:none;}
.hero-orb{position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none;z-index:0;}
.hero-orb-1{width:300px;height:300px;background:rgba(15,23,42,.12);top:-60px;right:-40px;animation:orbFloat1 8s ease-in-out infinite;}
.hero-orb-2{width:250px;height:250px;background:rgba(51,65,85,.08);bottom:-80px;left:-30px;animation:orbFloat2 10s ease-in-out infinite;}
.hero-orb-3{width:180px;height:180px;background:rgba(15,23,42,.06);top:20px;left:20%;animation:orbFloat3 12s ease-in-out infinite;}
@keyframes orbFloat1{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-30px,20px) scale(1.1);}}
@keyframes orbFloat2{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(25px,-15px) scale(1.05);}}
@keyframes orbFloat3{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-15px,25px) scale(0.95);}}

/* ─── MAIN CONTAINER ─── */
.main{max-width:1200px;margin:0 auto;padding:32px 40px 60px;position:relative;z-index:1;}

/* ─── GLOBAL CURSOR GLOW ─── */
.cursor-glow{position:fixed;top:0;left:0;width:320px;height:320px;border-radius:50%;pointer-events:none;z-index:9999;mix-blend-mode:screen;background:radial-gradient(circle,rgba(0,0,0,.04),rgba(0,0,0,.02) 40%,transparent 70%);transition:opacity .3s;opacity:0;will-change:transform;}
.cursor-glow.active{opacity:1;}

/* ─── UPLOAD CARD (animated border) ─── */
.upload-card{position:relative;border-radius:var(--radius);padding:32px;margin-bottom:32px;background:var(--surface);box-shadow:0 3px 6px rgba(15,23,42,.05),0 18px 44px rgba(15,23,42,.10),0 36px 80px rgba(15,23,42,.08);border:1px solid rgba(0,0,0,.08);overflow:hidden;}
.upload-card::before{content:'';position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:calc(var(--radius) + 2px);background:conic-gradient(from var(--card-angle,0deg),var(--primary),var(--purple),var(--green),var(--accent),var(--primary));z-index:-1;opacity:0;transition:opacity .5s;}
.upload-card:hover::before{opacity:1;animation:rotateBorder 4s linear infinite;}
.upload-card::after{content:'';position:absolute;top:1px;left:1px;right:1px;bottom:1px;border-radius:calc(var(--radius) - 1px);background:var(--surface);z-index:-1;}
@keyframes rotateBorder{to{--card-angle:360deg;}}
@property --card-angle{syntax:'<angle>';initial-value:0deg;inherits:false;}
.upload-tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid var(--border-light);}
.upload-tab{padding:10px 24px;font-size:14px;font-weight:500;color:var(--ink3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;display:flex;align-items:center;gap:8px;background:none;border-top:none;border-left:none;border-right:none;}
.upload-tab:hover{color:var(--ink2);}
.upload-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600;}
.upload-tab svg{width:18px;height:18px;}

.upload-zone{border:2px dashed rgba(0,0,0,.2);border-radius:var(--radius);padding:48px 32px;text-align:center;cursor:pointer;transition:all .25s;background:var(--bg);position:relative;}
.upload-zone:hover{border-color:var(--primary);background:var(--primary-50);box-shadow:0 0 20px rgba(0,0,0,.04) inset;}
.upload-zone .upload-icon{transition:all .3s;}
.upload-zone:hover .upload-icon{transform:translateY(-4px);box-shadow:0 8px 20px rgba(0,0,0,.1);}
.upload-zone.dragging{border-color:var(--primary);background:var(--primary-50);transform:scale(1.005);}
.upload-zone.has-file{border-style:solid;border-color:#000000;background:#ffffff;cursor:default;padding:24px 32px;}
.upload-zone input{display:none;}
.upload-icon{width:56px;height:56px;margin:0 auto 16px;background:var(--primary-light);border-radius:14px;display:flex;align-items:center;justify-content:center;}
.upload-icon svg{width:28px;height:28px;color:var(--primary);}
.upload-title{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:6px;}
.upload-hint{font-size:13px;color:var(--ink4);}
.upload-formats{margin-top:10px;font-size:12px;color:var(--ink5);}

.file-info{display:flex;align-items:center;gap:16px;text-align:left;}
/* v3.18.12: 文件图标 = 白底黑球微缩宇宙（行星绕中心球公转），处理中 ×2.7 倍速 */
.file-icon{width:48px;height:48px;border-radius:12px;flex-shrink:0;position:relative;overflow:hidden;background:#ffffff;border:1px solid rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(15,23,42,.02),0 2px 6px -2px rgba(15,23,42,.08);transition:box-shadow .35s ease,border-color .35s ease;}
.file-icon::after{content:'';position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#ffffff;border:1.5px solid #000000;box-shadow:0 1px 3px rgba(15,23,42,.18);animation:fiSunPulse 2.4s ease-in-out infinite;will-change:transform;}
/* v3.18.23: JS drives orbit rotation for smooth speed transitions (see initOrbitDriver) */
.file-icon .orbit{position:absolute;left:50%;top:50%;border-radius:50%;border:1px solid rgba(0,0,0,.12);transform:translate(-50%,-50%);will-change:transform;}
.file-icon .orbit.o1{width:18px;height:18px;}
.file-icon .orbit.o2{width:30px;height:30px;}
.file-icon .orbit.o3{width:42px;height:42px;}
.file-icon .orbit .planet{position:absolute;left:50%;top:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:#000000;will-change:transform;}
.file-icon .orbit.o2 .planet{width:5px;height:5px;margin:-2.5px 0 0 -2.5px;}
@keyframes fiSunPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.10);}}
@keyframes fiOrbitSpin{to{transform:translate(-50%,-50%) rotate(360deg);}}
.file-icon.processing{border-color:#000000;box-shadow:inset 0 0 0 1px rgba(15,23,42,.04),0 2px 10px -2px rgba(15,23,42,.18);}
.file-icon.processing::after{animation-duration:1s;}
.file-icon.processing .orbit{border-color:rgba(15,23,42,.30);}
/* v3.18.23: orbit speed handled by JS (initOrbitDriver) */
.file-detail{flex:1;}
.file-name{font-size:15px;font-weight:600;color:var(--ink);}
.file-meta{font-size:12px;color:var(--ink3);margin-top:3px;}
.file-remove{font-size:12px;color:rgba(0,0,0,.55);cursor:pointer;font-weight:500;padding:6px 14px;border-radius:6px;border:1px solid rgba(0,0,0,.1);background:#ffffff;transition:all .15s;}
.file-remove:hover{background:#000000;color:#ffffff;border-color:#000000;}

/* ─── ACTION BUTTON (big CTA) ─── */
.cta-row{display:flex;gap:12px;margin-top:24px;}
.btn-cta{flex:1;padding:14px 28px;border-radius:var(--radius-sm);border:none;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px;}
.btn-cta-primary{background:#000000;color:#fff;border:1px solid #000;box-shadow:none;position:relative;overflow:hidden;}
.btn-cta-primary::before{content:'';position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:none;animation:btnShimmer 3s ease-in-out infinite;}
.btn-cta-primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.2);}
.btn-cta-primary:disabled{background:#ffffff;color:rgba(0,0,0,.4);border-color:rgba(0,0,0,.4);box-shadow:none;cursor:not-allowed;transform:none;}
.btn-cta-primary:disabled::before{display:none;}
@keyframes btnShimmer{0%{left:-100%;}40%{left:150%;}100%{left:150%;}}
.btn-cta-secondary{background:#ffffff;color:#000;border:1px solid #000;box-shadow:none;}
.btn-cta-secondary:hover{background:#000;color:#fff;border-color:#000;}
.btn-cta-secondary:disabled{background:#ffffff;color:rgba(0,0,0,.4);border-color:rgba(0,0,0,.4);box-shadow:none;cursor:not-allowed;}
.btn-cta .badge{background:rgba(255,255,255,.2);padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500;}

/* ─── FEATURE SECTION ─── */
.section-header{margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;}
.section-title{font-size:18px;font-weight:700;color:var(--ink);}
.section-sub{font-size:13px;color:var(--ink4);}

.features{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px;}
.feature{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:var(--radius);padding:24px;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;cursor:default;position:relative;overflow:hidden;box-shadow:0 3px 6px rgba(15,23,42,.05),0 12px 28px rgba(15,23,42,.09);}
.feature:hover{border-color:#000;transform:translateY(-4px);box-shadow:0 6px 12px rgba(15,23,42,.07),0 20px 44px rgba(15,23,42,.12);}
.feature-shine{display:none;}
.feature-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:14px;transition:transform .3s;}
.feature:hover .feature-icon{transform:translateY(-2px);}
.feature-icon.blue{background:var(--primary-light);}
.feature-icon.green{background:var(--green-light);}
.feature-icon.orange{background:var(--orange-light);}
.feature-icon.purple{background:var(--purple-light);}
.feature h3{font-size:14px;font-weight:600;margin-bottom:6px;}
.feature p{font-size:12px;color:var(--ink3);line-height:1.6;}
.feature-badge{position:absolute;top:12px;right:12px;font-size:10px;padding:3px 8px;border-radius:10px;font-weight:600;}
.feature-badge.soon{background:#fff;color:#000;border:1px solid #000;}
.feature-badge.new{background:#000;color:#fff;}

/* ─── PROCESSING PANEL ─── */
.process-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;overflow:hidden;display:none;box-shadow:var(--shadow);}
.process-panel.show{display:block;}
/* v3.18.84: reverted v3.18.81 modal visual — panels render inline (no fixed center, no backdrop, no × button) */
/* v3.18.82: in tool sub-window (URL has ?tool=xxx), hide all homepage-only sections */
/* v3.18.102: removed `.pay-section` from this hide list — when an unauthed user opens a tool
   sub-tab, paidCheck triggers showPayment() which sets .pay-section.show. With the previous
   `display:none !important` override the QR modal silently failed to appear. Default
   `.pay-section{display:none}` (no !important) still keeps it hidden until .show is added. */
body[data-tool] .qr-section,
body[data-tool] .qr-section-v2,
body[data-tool] .cta-row,
body[data-tool] #upload-zone,
body[data-tool] #brief-upload-area,
body[data-tool] #upload-card,
body[data-tool] .hero,
body[data-tool] .features,
body[data-tool] .section-header,
body[data-tool] .lx-section,
body[data-tool] .hero-tag,
body[data-tool] .hero-title,
body[data-tool] .hero-sub{display:none !important;}
.process-header{padding:20px 24px;border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;}
.process-title{font-size:15px;font-weight:600;display:flex;align-items:center;gap:10px;}
.process-title .icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
/* v3.18.24: mini orbit animation for panel-full title icon (always at processing speed) */
.process-title .icon.icon-orbit{position:relative;background:#fff;border:1px solid #000;overflow:hidden;}
.process-title .icon.icon-orbit::after{content:'';position:absolute;left:50%;top:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:#fff;border:1.2px solid #000;z-index:2;}
.process-title .icon.icon-orbit .pi-orbit{position:absolute;left:50%;top:50%;border-radius:50%;border:1px solid rgba(0,0,0,.3);transform:translate(-50%,-50%);animation:piSpin linear infinite;will-change:transform;}
.process-title .icon.icon-orbit .pi-orbit.po1{width:10px;height:10px;animation-duration:.6s;}
.process-title .icon.icon-orbit .pi-orbit.po2{width:18px;height:18px;animation-duration:1.2s;animation-direction:reverse;}
.process-title .icon.icon-orbit .pi-orbit.po3{width:26px;height:26px;animation-duration:2s;}
.process-title .icon.icon-orbit .pi-planet{position:absolute;left:50%;top:0;width:3px;height:3px;margin:-1.5px 0 0 -1.5px;border-radius:50%;background:#000;}
@keyframes piSpin{to{transform:translate(-50%,-50%) rotate(360deg);}}
.process-body{padding:24px;}

/* Progress — multi-row dot grid (one row per step) */
.progress-area{margin-bottom:16px;display:none;}
.progress-area.show{display:block;}
.dot-grid-container{display:flex;flex-direction:column;gap:2px;padding:8px 0;}
.dot-row{display:flex;align-items:center;gap:0;padding:3px 0;}
.dot-row-label{width:90px;flex-shrink:0;font-size:11px;color:var(--ink3);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dot-row-label.active{color:var(--primary);font-weight:600;}
.dot-row-dots{display:flex;flex-wrap:wrap;gap:5px;}
.dot{width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1px #000;transition:all .3s ease;position:relative;}
/* 处理中：实心黑椭圆，旋转 + 形态摆动 */
.dot.processing{background:#000;box-shadow:none;animation:dotMorph 1.4s linear infinite;will-change:transform;}
@keyframes dotMorph{
  0%   {transform:rotate(0deg)   scale(1, .32);}
  25%  {transform:rotate(90deg)  scale(1, 1);}
  50%  {transform:rotate(180deg) scale(1, .32);}
  75%  {transform:rotate(270deg) scale(1, 1);}
  100% {transform:rotate(360deg) scale(1, .32);}
}
/* 部分修改：左黑右白 */
.dot.partial{background:linear-gradient(to right,#000 50%,#fff 50%);box-shadow:inset 0 0 0 1px #000;}
/* 成功 / 修改 / 高风险：实心黑 */
.dot.success,.dot.modified,.dot.risk-high{background:#000;box-shadow:none;}
/* 失败：2.5px 粗环空心 */
.dot.fail{background:#dc2626;box-shadow:none;}
/* 未变 / 低风险 / pending：1px 细环空心（与 .dot 默认相同，显式声明） */
.dot.unchanged,.dot.risk-low{background:#fff;box-shadow:inset 0 0 0 1px #000;}
/* 中风险：下半填黑 */
.dot.risk-medium{background:linear-gradient(to top,#000 50%,#fff 50%);box-shadow:inset 0 0 0 1px #000;}
/* 跳过：细环 + 中间黑横杠 */
.dot.skipped{background:#fff;box-shadow:inset 0 0 0 1px #000;}
.dot.skipped::before{content:'';position:absolute;left:2px;right:2px;top:50%;height:1.5px;background:#000;transform:translateY(-50%);border-radius:1px;}50%{transform:scale(1.3);opacity:.7;}}
.progress-stats{font-size:12px;color:var(--ink3);margin-top:8px;display:flex;align-items:center;gap:12px;}
.progress-stats .stat-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px;}
.progress-text{font-size:12px;color:var(--ink3);margin-top:8px;min-height:18px;display:flex;align-items:center;gap:6px;}
/* Legacy progress bar (used by audit) */
.progress-track{height:6px;background:var(--border-light);border-radius:3px;overflow:hidden;}
.progress-fill{height:100%;background:#000000;border-radius:3px;transition:width .4s ease;width:0%;position:relative;overflow:hidden;}
.progress-fill::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:progressShimmer 1.5s ease-in-out infinite;}
@keyframes progressShimmer{0%{transform:translateX(-100%);}100%{transform:translateX(100%);}}

/* Result */
.result-area{display:none;}
.result-area.show{display:block;}
.result-box{border-radius:var(--radius-sm);padding:16px 20px;font-size:13px;color:var(--ink2);line-height:1.7;max-height:300px;overflow-y:auto;white-space:pre-wrap;font-family:'Inter',sans-serif;}
.result-success{background:var(--green-light);border:1px solid rgba(0,0,0,.1);}
.result-error{background:var(--red-light);border:1px solid rgba(0,0,0,.1);}
.download-btn{display:inline-flex;align-items:center;gap:8px;margin-top:12px;padding:10px 20px;background:linear-gradient(135deg,var(--green),var(--green-dark));color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;transition:all .2s;box-shadow:0 4px 16px rgba(15,23,42,.2);position:relative;overflow:hidden;}
.download-btn::before{content:'';position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:btnShimmer 3s ease-in-out infinite 1s;}
.download-btn:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(15,23,42,.35);}

/* v3.18.23: stop buttons disabled — pipelines run to completion, no interruption */
.btn-stop{display:none !important;}
.btn-stop.show{display:none !important;}

/* ─── AUDIT REPORT ─── */
.audit-report{display:none;margin-top:24px;animation:slideUp .3s ease;}
.audit-report.show{display:block;}

/* ─── COMPARE SECTION ─── */
.compare-section{margin-top:24px;display:none;}
.compare-section.show{display:block;}
.compare-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.compare-header h3{font-size:16px;font-weight:700;color:var(--ink);}
.compare-stats{font-size:13px;color:var(--ink3);font-weight:500;}
.compare-toggle{display:flex;gap:2px;background:var(--border-light);border-radius:8px;padding:3px;}
.compare-toggle button{padding:6px 14px;border:none;border-radius:6px;font-size:12px;cursor:pointer;background:transparent;color:var(--ink3);font-weight:500;transition:all .15s;}
.compare-toggle button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm);}
.compare-list{display:flex;flex-direction:column;gap:12px;}
.compare-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.compare-item-header{padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--border);font-size:12px;font-weight:600;color:var(--ink3);display:flex;justify-content:space-between;}
.compare-cols{display:grid;grid-template-columns:1fr 1fr;min-height:60px;}
.compare-col{padding:14px 16px;font-size:13px;line-height:1.7;color:var(--ink2);}
.compare-col:first-child{border-right:1px solid var(--border);background:rgba(15,23,42,.04);}
.compare-col:last-child{background:rgba(15,23,42,.04);}
.compare-col-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px;display:block;}
.compare-col:first-child .compare-col-label{color:var(--red);}
.compare-col:last-child .compare-col-label{color:var(--green);}
.compare-unchanged{padding:12px 16px;font-size:12px;color:var(--ink4);text-align:center;font-style:italic;}

/* ─── LOG ─── */
.log-section{margin-top:32px;background:#0B1120;border:1px solid rgba(15,23,42,.15);border-radius:var(--radius);overflow:hidden;position:relative;}
.log-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;opacity:.15;z-index:0;}
.log-header{padding:14px 20px;border-bottom:1px solid rgba(15,23,42,.1);display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1;}
.log-header h3{font-size:13px;font-weight:600;color:rgba(15,23,42,.8);text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:8px;}
.log-header h3::before{content:'';width:8px;height:8px;border-radius:50%;background:#000000;box-shadow:0 0 8px rgba(15,23,42,.5);animation:pulse 2s ease-in-out infinite;}
.log-header button{font-size:12px;color:rgba(148,163,184,.6);background:none;border:none;cursor:pointer;font-weight:500;transition:color .2s;}
.log-header button:hover{color:rgba(15,23,42,.9);}
.log-box{padding:16px 20px;font-family:"SF Mono","Fira Code","JetBrains Mono",Menlo,Consolas,monospace;font-size:11px;color:rgba(15,23,42,.7);line-height:1.8;max-height:200px;overflow-y:auto;white-space:pre-wrap;background:transparent;position:relative;z-index:1;}
.log-box::-webkit-scrollbar-thumb{background:rgba(15,23,42,.3);}

/* ─── FOOTER ─── */
.footer{text-align:center;padding:24px 40px 40px;font-size:12px;color:var(--ink4);position:relative;z-index:1;}
.footer a{color:var(--primary);text-decoration:none;font-weight:500;}

/* ─── PAYMENT SECTION (v3.36.4 — Plan A styling: centered card, large bold amount, green pulse dot) ─── */
.pay-section{display:none;background:#fff;border:1px solid var(--border);border-radius:16px;padding:32px 28px;margin:0 auto 24px;animation:fadeIn .35s ease;max-width:380px;text-align:center;box-shadow:0 12px 40px rgba(15,23,42,.08);position:relative;}
.pay-section.show{display:block;}
.pay-header{display:flex;flex-direction:column;align-items:center;margin-bottom:14px;}
.pay-header > div:first-child{display:flex;flex-direction:column;align-items:center;width:100%;order:1;}
.pay-header > div:nth-child(2){order:2;margin-top:6px;text-align:center !important;}
.pay-header > div:nth-child(2) > div{font-size:11px;color:var(--ink4) !important;}
.pay-info{font-size:13px;color:var(--ink3);font-weight:500;letter-spacing:.3px;line-height:1.4;order:1;margin-bottom:6px;}
.pay-price{font-size:54px;font-weight:800;color:var(--ink);letter-spacing:-1px;line-height:1;order:2;font-variant-numeric:tabular-nums;}
.pay-price small{font-size:18px;font-weight:600;color:var(--ink3);margin-left:2px;}
.pay-qr-area{text-align:center;padding:0;background:transparent;border-radius:0;margin:6px 0 0;}
.pay-qr-area img{max-width:200px;border:1px solid var(--border);border-radius:8px;padding:10px;background:#fff;box-shadow:none;}
.pay-qr-hint{font-size:12px;color:var(--ink3);margin-top:14px;display:flex;gap:6px;justify-content:center;align-items:center;}
.pay-qr-hint::before{content:'';width:6px;height:6px;border-radius:50%;background:#34d399;animation:pulse-dot 1.5s infinite;}
@keyframes pulse-dot{0%,100%{opacity:.4;transform:scale(1);}50%{opacity:1;transform:scale(1.25);}}
#pay-status{font-size:11px;color:var(--ink4);margin-top:4px;}
.pay-actions{display:flex;gap:8px;margin-top:18px;}
.btn-paid{flex:1;padding:11px 0;background:#000;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s;}
.btn-paid:hover{background:#222;}
.btn-cancel-pay{flex:1;padding:11px 0;background:#fff;color:var(--ink2);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;}
.btn-cancel-pay:hover{background:var(--surface-hover);}

/* v3.36.4 — Credit confirm modal (A2 receipt style, replaces native confirm() for credit deduction) */
.credit-confirm-card{max-width:340px;padding:32px 28px;text-align:left;position:relative;}
.cc-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:50%;border:none;background:transparent;color:var(--ink4);font-size:18px;cursor:pointer;line-height:1;padding:0;}
.cc-close:hover{background:var(--surface-hover);color:var(--ink);}
.cc-head{text-align:center;}
.cc-label{font-size:13px;color:var(--ink3);font-weight:500;letter-spacing:.3px;margin-bottom:4px;}
.cc-sub{font-size:11px;color:var(--ink4);}
.cc-receipt{margin:24px 0;padding:18px 16px;background:var(--bg);border-radius:10px;font-size:13px;}
.cc-receipt .cc-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;color:var(--ink3);}
.cc-receipt .cc-row.cc-row-final{color:var(--ink2);}
.cc-receipt .cc-cost{color:var(--ink);font-weight:700;font-size:16px;font-variant-numeric:tabular-nums;}
.cc-receipt .cc-num{font-variant-numeric:tabular-nums;}
.cc-receipt .cc-num-final{font-weight:700;color:var(--ink);}
.cc-divider{height:1px;background:var(--border-light);margin:6px 0;}
.cc-note{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink4);margin-bottom:18px;}
.cc-note.warn{color:#92400e;}
.cc-actions{display:flex;gap:8px;}
.cc-actions button{flex:1;padding:11px 0;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;text-align:center;}
.cc-cancel{background:#fff;border:1px solid var(--border);color:var(--ink2);}
.cc-cancel:hover{background:var(--surface-hover);}
.cc-go{background:#000;color:#fff;border:none;}
.cc-go:hover{background:#222;}

/* ─── RIPPLE EFFECT ─── */
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);transform:scale(0);animation:rippleAnim .6s ease-out;pointer-events:none;}
@keyframes rippleAnim{to{transform:scale(4);opacity:0;}}

/* ─── STAGGER CHILDREN ANIMATION ─── */
.stagger-in > *{opacity:1;transform:translateY(0);}
@keyframes staggerFade{to{opacity:1;transform:translateY(0);}}

/* ─── STAT NUMBER GLOW ─── */
.stat-glow{text-shadow:0 0 20px currentColor;}

/* ─── ANIMATIONS ─── */
@keyframes fadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
@keyframes slideUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
@keyframes spin{to{transform:rotate(360deg);}}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.5;}}
.fade-in{animation:fadeIn .35s ease;}
.spinner{display:inline-block;width:16px;height:16px;border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;}
/* v3.18.25: stone-fish spinner (variant F) - black rounded square + red fish swimming around it */
.stone-fish-spinner{position:relative;width:48px;height:48px;display:inline-block;}
.stone-fish-spinner .sfs-stone{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;background:#000;border-radius:3px;}
.stone-fish-spinner .sfs-fish{position:absolute;left:0;top:0;width:5px;height:5px;border-radius:50%;background:#dc2626;offset-path:path('M 24 4 C 38 4, 44 18, 36 28 C 28 40, 18 44, 12 36 C 4 28, 8 12, 24 4');offset-rotate:0deg;animation:sfsSwim 3s cubic-bezier(.6,0,.4,1) infinite,sfsFade 1.7s ease-in-out infinite;will-change:offset-distance,opacity,filter;}
@keyframes sfsSwim{to{offset-distance:100%;}}
@keyframes sfsFade{
  0%,100%{opacity:.25;filter:blur(2px);}
  35%    {opacity:.7; filter:blur(.7px);}
  55%    {opacity:1;  filter:blur(0);}
  75%    {opacity:.5; filter:blur(1.2px);}
}
/* v3.18.33: B4 ripples — 4 半圆 driven by SMIL (CSS r-animation has spotty support) */
.stone-fish-spinner svg.sfs-ripples{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:1;}
.stone-fish-spinner svg.sfs-ripples circle{fill:none;stroke:#000;stroke-width:.6;stroke-linecap:round;}
.pulse{animation:pulse 1.5s ease-in-out infinite;}

/* ─── RESPONSIVE ─── */
@media(max-width:900px){
  .features{grid-template-columns:1fr 1fr;}
  .hero-title{font-size:44px;}
}
@media(max-width:600px){
  .features{grid-template-columns:1fr;}
  .nav-inner{padding:0 20px;}
  .hero{padding:40px 20px 30px;}
  .main{padding:20px;}
  .nav-links{display:none;}
  .compare-cols{grid-template-columns:1fr;}
  .compare-col:first-child{border-right:none;border-bottom:1px solid var(--border);}
  .cta-row{flex-direction:column;}
}

/* ═══ AUTH (login button + modal) — added in v3.9.0 ═══ */
.btn-auth{padding:7px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;border:none;background:#000000;color:#fff;}
.btn-auth:hover{background:#000;transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.15);}
.btn-auth-ghost{background:transparent;color:var(--ink2);border:1px solid var(--border);}
.btn-auth-ghost:hover{background:var(--surface-hover);color:var(--ink);}

.user-chip{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 8px;border-radius:20px;background:var(--surface);border:1px solid var(--border);cursor:pointer;font-size:13px;font-weight:500;color:var(--ink2);transition:all .15s;position:relative;}
.user-chip:hover{background:var(--surface-hover);border-color:var(--ink5);}
.user-chip-avatar{width:24px;height:24px;border-radius:50%;background:#000000;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;}
.user-chip-email{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.user-chip-arrow{font-size:10px;color:var(--ink4);}

.user-menu{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.08);min-width:200px;padding:6px;z-index:200;display:none;}
.user-menu.open{display:block;}
.user-menu-item{padding:8px 12px;border-radius:6px;font-size:13px;color:var(--ink2);cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .12s;}
.user-menu-item:hover{background:var(--surface-hover);color:var(--ink);}
.user-menu-item.danger:hover{background:rgba(0,0,0,.04);color:#000000;}
.user-menu-divider{height:1px;background:var(--border);margin:4px 8px;}
.user-menu-info{padding:10px 12px 8px;font-size:11px;color:var(--ink4);}
.user-menu-info strong{color:var(--ink2);font-size:13px;font-weight:600;display:block;margin-bottom:2px;}

/* Mask: always rendered for smooth transitions; .open toggles backdrop+opacity */
.auth-modal-mask{position:fixed;inset:0;background:rgba(15,23,42,0);backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:background .4s cubic-bezier(.16,1,.3,1), backdrop-filter .4s cubic-bezier(.16,1,.3,1), -webkit-backdrop-filter .4s cubic-bezier(.16,1,.3,1), opacity .4s cubic-bezier(.16,1,.3,1), visibility 0s linear .4s;}
.auth-modal-mask.open{background:rgba(15,23,42,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:1;visibility:visible;transition:background .4s cubic-bezier(.16,1,.3,1), backdrop-filter .4s cubic-bezier(.16,1,.3,1), -webkit-backdrop-filter .4s cubic-bezier(.16,1,.3,1), opacity .4s cubic-bezier(.16,1,.3,1), visibility 0s linear 0s;}

/* Card: slides up + scales with subtle bounce */
.auth-modal{background:#fff;border-radius:16px;width:100%;max-width:420px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden;transform:translateY(28px) scale(.95);opacity:0;transition:transform .5s cubic-bezier(.34,1.4,.64,1), opacity .35s cubic-bezier(.16,1,.3,1);}
.auth-modal-mask.open .auth-modal{transform:translateY(0) scale(1);opacity:1;}

.auth-modal-header{padding:24px 24px 0;display:flex;align-items:center;justify-content:space-between;}
.auth-modal-title{font-size:20px;font-weight:700;color:var(--ink);}
.auth-modal-close{width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:var(--ink3);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s;}
.auth-modal-close:hover{background:var(--surface-hover);color:var(--ink);}

.auth-tabs{display:flex;gap:4px;padding:16px 24px 0;border-bottom:1px solid var(--border);}
.auth-tab{padding:10px 16px;font-size:14px;font-weight:600;color:var(--ink3);background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;}
.auth-tab:hover{color:var(--ink2);}
.auth-tab.active{color:var(--ink);border-bottom-color:#000000;}

.auth-modal-body{padding:24px;}
.auth-form{display:none;flex-direction:column;gap:14px;}
.auth-form.active{display:flex;}

.auth-field{display:flex;flex-direction:column;gap:6px;}
.auth-field label{font-size:13px;font-weight:500;color:var(--ink2);}
.auth-field input{padding:11px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px;color:var(--ink);background:#fff;transition:border-color .15s,box-shadow .15s;font-family:inherit;}
.auth-field input:focus{outline:none;border-color:#000000;box-shadow:0 0 0 3px rgba(0,0,0,.06);}
.auth-field input.error{border-color:#000000;}
.auth-field-hint{font-size:11px;color:var(--ink4);}

.auth-submit{margin-top:6px;padding:12px 16px;background:#000000;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;}
.auth-submit:hover{background:#000;transform:translateY(-1px);}
.auth-submit:disabled{background:rgba(0,0,0,.32);cursor:not-allowed;transform:none;}

.auth-msg{padding:10px 12px;border-radius:8px;font-size:13px;line-height:1.5;display:none;}
.auth-msg.show{display:block;}
.auth-msg.error{background:rgba(0,0,0,.04);color:#000000;border:1px solid rgba(0,0,0,.1);}
.auth-msg.success{background:rgba(0,0,0,.04);color:#000000;border:1px solid rgba(0,0,0,.1);}
.auth-msg.info{background:rgba(0,0,0,.04);color:#000000;border:1px solid rgba(0,0,0,.1);}

.auth-link{background:none;border:none;color:var(--ink3);font-size:12px;cursor:pointer;text-align:center;padding:4px;text-decoration:underline;}
.auth-link:hover{color:var(--ink);}

@media(max-width:480px){
  .auth-modal{max-width:100%;border-radius:12px 12px 0 0;align-self:flex-end;}
}

/* ═══ MY HISTORY drawer (v3.10.0) ═══ */
.history-drawer{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:#fff;box-shadow:-12px 0 40px rgba(0,0,0,.15);z-index:1100;transform:translateX(100%);transition:transform .42s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;}
.history-drawer.open{transform:translateX(0);}
.history-mask{position:fixed;inset:0;background:rgba(15,23,42,0);z-index:1099;visibility:hidden;opacity:0;transition:background .35s, opacity .35s, visibility 0s linear .35s;}
.history-mask.open{background:rgba(15,23,42,.4);opacity:1;visibility:visible;transition:background .35s, opacity .35s, visibility 0s linear 0s;}

.history-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.history-title{font-size:18px;font-weight:700;color:var(--ink);}
.history-close{width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:var(--ink3);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s;}
.history-close:hover{background:var(--surface-hover);color:var(--ink);}

.history-body{flex:1;overflow-y:auto;padding:12px 16px;}
.history-empty{padding:60px 24px;text-align:center;color:var(--ink4);font-size:14px;}
.history-empty .icon{font-size:42px;margin-bottom:12px;opacity:.4;}
.history-loading{padding:40px 24px;text-align:center;color:var(--ink4);font-size:13px;}

.history-item{padding:14px 14px 12px;border:1px solid var(--border);border-radius:12px;margin-bottom:10px;background:#fff;transition:all .15s;}
.history-item:hover{border-color:var(--ink5);box-shadow:0 2px 8px rgba(0,0,0,.04);}
.history-item-name{font-size:14px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:6px;}
.history-item-meta{display:flex;flex-wrap:wrap;gap:6px;font-size:11px;color:var(--ink4);margin-bottom:10px;}
.history-item-badge{padding:3px 8px;border-radius:10px;background:var(--surface-hover);color:var(--ink3);font-weight:500;}
.history-item-badge.paid{background:rgba(0,0,0,.04);color:#000000;}
.history-item-badge.pending{background:rgba(0,0,0,.04);color:rgba(0,0,0,.7);}
.history-item-badge.processed{background:rgba(0,0,0,.04);color:#000000;}
.history-item-actions{display:flex;gap:6px;}
.history-item-btn{flex:1;padding:7px 10px;border-radius:7px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--ink2);transition:all .15s;text-align:center;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:4px;}
.history-item-btn:hover{background:var(--surface-hover);border-color:var(--ink5);color:var(--ink);}
.history-item-btn.primary{background:#000000;color:#fff;border-color:#000000;}
.history-item-btn.primary:hover{background:#000;}
.history-item-btn:disabled{opacity:.5;cursor:not-allowed;}
/* v3.18.30: group headers + delete btn */
.history-group-header{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:rgba(0,0,0,.55);margin:14px 0 8px;display:flex;align-items:center;gap:8px;}
.history-group-header:first-child{margin-top:0;}
.history-group-count{font-size:10px;font-weight:600;background:rgba(0,0,0,.08);color:rgba(0,0,0,.65);padding:2px 7px;border-radius:8px;letter-spacing:0;}
.history-item-btn-delete{flex:0 0 auto;color:#dc2626;border-color:transparent;background:transparent;padding:7px 10px;}
.history-item-btn-delete:hover{background:#dc2626;color:#fff;border-color:#dc2626;}
/* v3.18.36: Turnitin modal */
.turnitin-modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:1300;display:none;align-items:center;justify-content:center;padding:20px;}
.turnitin-modal-mask.open{display:flex;}
.turnitin-modal{background:#fff;border:1px solid #000;border-radius:14px;padding:28px;max-width:520px;width:100%;max-height:80vh;overflow-y:auto;}
.turnitin-modal h3{font-size:17px;font-weight:700;margin-bottom:6px;}
.turnitin-modal .sub{font-size:12px;color:rgba(0,0,0,.55);margin-bottom:18px;line-height:1.6;}
.turnitin-modal .file-pick{border:2px dashed rgba(0,0,0,.2);border-radius:10px;padding:24px;text-align:center;cursor:pointer;transition:all .15s;}
.turnitin-modal .file-pick:hover{border-color:#000;background:rgba(0,0,0,.02);}
.turnitin-modal .file-pick.has-file{border-color:#000;background:#fff;}
.turnitin-modal .actions{display:flex;gap:10px;margin-top:20px;}
.turnitin-modal .actions button{flex:1;padding:10px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid #000;}
.turnitin-modal .actions .primary{background:#000;color:#fff;}
.turnitin-modal .actions .ghost{background:#fff;color:#000;}
.turnitin-modal .result{margin-top:16px;padding:14px;border-radius:8px;font-size:13px;line-height:1.6;}
.turnitin-modal .result.pass{background:rgba(0,0,0,.04);border:1px solid #000;}
.turnitin-modal .result.fail{background:rgba(220,38,38,.06);border:1px solid #dc2626;color:#000;}
.turnitin-modal .result.suspicious{background:rgba(0,0,0,.04);border:1px dashed #000;}
.turnitin-modal .result .ai-num{font-size:32px;font-weight:800;display:block;margin:6px 0;}
.turnitin-modal .result .ai-num.fail{color:#dc2626;}
.turnitin-modal .choice-row{display:flex;gap:10px;margin-top:14px;}
.turnitin-modal .choice-row button{flex:1;padding:10px;border-radius:8px;border:1px solid #000;background:#fff;color:#000;font-size:13px;font-weight:600;cursor:pointer;}
.turnitin-modal .choice-row button.primary{background:#dc2626;color:#fff;border-color:#dc2626;}
.turnitin-modal .choice-row button:hover{transform:translateY(-1px);}

@media(max-width:480px){
  .history-drawer{width:100%;}
}
/* ═══ Per-paragraph pipeline status summary table (v3.11.1) ═══ */
.para-summary{margin-top:24px;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff;}
.para-summary-header{padding:14px 18px;border-bottom:1px solid var(--border);background:#ffffff;display:flex;align-items:center;justify-content:space-between;}
.para-summary-title{font-size:14px;font-weight:700;color:var(--ink);}
.para-summary-stats{font-size:12px;color:var(--ink3);display:flex;gap:14px;}
.para-summary-stats span strong{color:var(--ink);}
.para-summary-table{width:100%;border-collapse:collapse;font-size:12px;}
.para-summary-table th{padding:10px 12px;text-align:left;font-weight:600;color:var(--ink3);background:#ffffff;border-bottom:1px solid var(--border);font-size:11px;text-transform:uppercase;letter-spacing:.4px;}
.para-summary-table td{padding:11px 12px;border-bottom:1px solid var(--border-light);vertical-align:top;}
.para-summary-table tr:last-child td{border-bottom:none;}
.para-summary-table tr:hover td{background:#ffffff;}
.para-idx{font-weight:600;color:var(--ink2);width:42px;}
.para-preview{color:var(--ink3);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.para-wc{color:var(--ink4);font-variant-numeric:tabular-nums;}
.para-badge{display:inline-block;padding:3px 8px;border-radius:8px;font-size:11px;font-weight:600;line-height:1.4;white-space:nowrap;}
.para-badge.passed{background:rgba(0,0,0,.04);color:#000000;}
.para-badge.failed{background:rgba(0,0,0,.04);color:#000000;}
.para-badge.skipped{background:rgba(0,0,0,.04);color:rgba(0,0,0,.45);}
.para-badge.modified{background:rgba(0,0,0,.04);color:#000000;}
.para-badge.unchanged{background:rgba(0,0,0,.04);color:rgba(0,0,0,.45);}
.para-badge.done{background:rgba(0,0,0,.04);color:#000000;}
.para-badge.fallback{background:rgba(0,0,0,.04);color:rgba(0,0,0,.7);}
.para-badge.api_error{background:rgba(0,0,0,.04);color:#000000;}
.para-badge.risk-low{background:rgba(0,0,0,.04);color:#000000;}
.para-badge.risk-medium{background:rgba(0,0,0,.04);color:rgba(0,0,0,.7);}
.para-badge.risk-high{background:rgba(0,0,0,.04);color:#000000;}
.para-badge .ai{margin-left:4px;font-weight:500;opacity:.85;}

/* ═══ MEMBER CENTER (v3.13.0) ═══ */
.member-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:18px;font-size:12px;font-weight:600;cursor:pointer;border:none;transition:all .15s;line-height:1.2;}
.member-chip.promo{background:#dc2626;color:#fff;box-shadow:0 2px 8px rgba(220,38,38,.3);}
.member-chip.promo:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(220,38,38,.45);}
.member-chip.active{background:#dc2626;color:#fff;}
.member-chip.active:hover{background:#b91c1c;}
.member-chip-icon{font-size:14px;line-height:1;}

.member-modal-mask{position:fixed;inset:0;background:rgba(15,23,42,0);backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);z-index:1050;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:background .35s, backdrop-filter .35s, -webkit-backdrop-filter .35s, opacity .35s, visibility 0s linear .35s;}
.member-modal-mask.open{background:rgba(15,23,42,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:1;visibility:visible;transition:background .35s, backdrop-filter .35s, -webkit-backdrop-filter .35s, opacity .35s, visibility 0s linear 0s;}
.member-modal{background:#fff;border-radius:16px;width:100%;max-width:640px;max-height:88vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.25);transform:translateY(28px) scale(.95);opacity:0;transition:transform .5s cubic-bezier(.34,1.4,.64,1),opacity .35s cubic-bezier(.16,1,.3,1);}
.member-modal-mask.open .member-modal{transform:translateY(0) scale(1);opacity:1;}

.member-modal-header{padding:24px 28px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);}
.member-modal-title{font-size:20px;font-weight:700;color:var(--ink);}
.member-modal-close{width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:var(--ink3);font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s;}
.member-modal-close:hover{background:var(--surface-hover);color:var(--ink);}
.member-modal-body{padding:24px 28px;}

.member-status-card{background:linear-gradient(135deg,#ffffff,#fff);border:1px solid var(--border);border-radius:12px;padding:18px 22px;margin-bottom:24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;}
.member-status-card.active{background:linear-gradient(135deg,#000000,#000000);color:#fff;border:none;}
.member-status-left{font-size:13px;color:var(--ink3);}
.member-status-card.active .member-status-left{color:rgba(255,255,255,.7);}
.member-status-title{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.member-status-card.active .member-status-title{color:#fff;}
.member-status-credits{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1;}
.member-status-card.active .member-status-credits{color:#fff;}
.member-status-credits small{font-size:13px;font-weight:500;color:var(--ink3);margin-left:4px;}
.member-status-card.active .member-status-credits small{color:rgba(255,255,255,.7);}

.plan-section-title{font-size:13px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.6px;margin:8px 0 12px;}
.plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:24px;}
.plan-card{padding:18px 18px 16px;border:2px solid var(--border);border-radius:12px;cursor:pointer;transition:all .2s;background:#fff;position:relative;}
.plan-card:hover{border-color:#000000;transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.08);}
.plan-card.featured{border-color:#000000;background:linear-gradient(135deg,#ffffff,#fff);}
.plan-card.featured::before{content:'推荐';position:absolute;top:-9px;right:14px;background:#000000;color:#fff;font-size:10px;font-weight:700;padding:3px 8px;border-radius:6px;letter-spacing:.4px;}
.plan-name{font-size:14px;font-weight:600;color:var(--ink2);margin-bottom:8px;}
.plan-price{font-size:30px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1;}
.plan-price small{font-size:13px;font-weight:500;color:var(--ink3);margin-left:2px;}
.plan-perk{font-size:12px;color:var(--ink3);margin-top:10px;line-height:1.5;}
.plan-perk strong{color:var(--ink);}

.credit-pack-section{padding:16px 18px;background:#ffffff;border-radius:12px;margin-bottom:20px;}
.credit-pack-section.locked{opacity:.55;}
.credit-pack-section .pack-row{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.credit-pack-section .pack-info{font-size:13px;color:var(--ink2);}
.credit-pack-section .pack-info strong{color:var(--ink);}
.credit-pack-buy{padding:9px 18px;background:#000000;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;}
.credit-pack-buy:hover:not(:disabled){background:#000;transform:translateY(-1px);}
.credit-pack-buy:disabled{background:rgba(0,0,0,.32);cursor:not-allowed;}
.credit-pack-section .locked-hint{font-size:12px;color:var(--ink3);margin-top:6px;}

/* v3.20.0 — redemption code & coupon list */
.redeem-row{display:flex;gap:8px;margin:0 0 6px;}
.redeem-row input{flex:1;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:1px;text-transform:uppercase;background:#fff;}
.redeem-row input:focus{outline:none;border-color:#000;box-shadow:0 0 0 2px rgba(0,0,0,.06);}
.redeem-btn{padding:10px 22px;background:#000;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s;}
.redeem-btn:hover{opacity:.85;}
.redeem-msg{min-height:16px;font-size:12px;margin:6px 2px 12px;color:var(--ink4);}
.coupon-list-title{font-size:13px;font-weight:600;color:var(--ink3);margin:8px 0 8px;}
.coupon-list{border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.coupon-row{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border-light);}
.coupon-row:last-child{border-bottom:none;}
.coupon-row-label{font-weight:600;color:var(--ink);font-size:14px;}
.coupon-row-meta{color:var(--ink4);font-size:12px;margin-top:3px;}
.coupon-row-tag{font-size:11px;font-weight:600;color:#fff;background:#000;padding:3px 9px;border-radius:4px;letter-spacing:.5px;}
.coupon-empty{padding:18px 14px;text-align:center;color:var(--ink4);font-size:13px;line-height:1.5;}

.tx-section-title{font-size:13px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.6px;margin:16px 0 8px;}
.tx-list{border:1px solid var(--border);border-radius:10px;max-height:240px;overflow-y:auto;}
.tx-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border-light);font-size:13px;}
.tx-item:last-child{border-bottom:none;}
.tx-left{display:flex;flex-direction:column;}
.tx-reason{color:var(--ink2);font-weight:500;}
.tx-time{color:var(--ink4);font-size:11px;margin-top:2px;}
.tx-delta{font-weight:700;font-variant-numeric:tabular-nums;}
.tx-delta.pos{color:#000000;}
.tx-delta.neg{color:#000000;}
.tx-empty{padding:20px;text-align:center;color:var(--ink4);font-size:13px;}

/* Member pay modal — reuses auth-modal style but with QR + polling */
.pay-modal-mask{position:fixed;inset:0;background:rgba(15,23,42,0);backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);z-index:1200;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:background .35s, backdrop-filter .35s, -webkit-backdrop-filter .35s, opacity .35s, visibility 0s linear .35s;}
.pay-modal-mask.open{background:rgba(15,23,42,.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:1;visibility:visible;transition:background .35s, backdrop-filter .35s, -webkit-backdrop-filter .35s, opacity .35s, visibility 0s linear 0s;}
.pay-modal{background:#fff;border-radius:16px;width:100%;max-width:380px;padding:28px;text-align:center;transform:translateY(20px) scale(.96);opacity:0;transition:transform .45s cubic-bezier(.34,1.4,.64,1),opacity .35s;}
.pay-modal-mask.open .pay-modal{transform:translateY(0) scale(1);opacity:1;}
.pay-modal-title{font-size:16px;font-weight:600;color:var(--ink2);margin-bottom:8px;}
.pay-modal-amount{font-size:42px;font-weight:800;color:var(--ink);margin-bottom:20px;font-variant-numeric:tabular-nums;}
.pay-modal-amount small{font-size:18px;font-weight:600;color:var(--ink3);margin-left:2px;}
.pay-modal-qr{width:200px;height:200px;margin:0 auto 16px;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;background:#ffffff;}
.pay-modal-qr img{width:100%;height:100%;border-radius:8px;}
.pay-modal-status{font-size:13px;color:var(--ink3);margin-bottom:16px;}
.pay-modal-status.success{color:#000000;font-weight:600;}
.pay-modal-actions{display:flex;gap:8px;justify-content:center;}
.pay-modal-actions button{padding:9px 20px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--ink2);transition:all .15s;}
.pay-modal-actions button:hover{background:var(--surface-hover);color:var(--ink);}
.pay-modal-actions a{padding:9px 20px;border-radius:8px;font-size:13px;font-weight:600;background:#000000;color:#fff;text-decoration:none;display:inline-flex;align-items:center;}
.pay-modal-actions a:hover{background:#000;}

@media(max-width:480px){
  .plan-grid{grid-template-columns:1fr;}
  .member-modal{max-width:100%;border-radius:12px 12px 0 0;align-self:flex-end;}
}
.plan-grid.plan-grid-3{grid-template-columns:1fr 1fr 1fr;gap:10px;}
.plan-card .pack-bonus{display:inline-block;margin-left:6px;font-size:11px;color:#000000;font-weight:600;}
.plan-card .pack-unit{font-size:11px;color:var(--ink4);margin-top:6px;font-weight:400;}
.pack-discount-hint{font-size:11px;color:var(--ink3);text-align:center;margin:-12px 0 24px;padding:0 12px;line-height:1.5;}
@media(max-width:480px){.plan-grid.plan-grid-3{grid-template-columns:1fr;}}

.dot.clickable{cursor:pointer;transition:transform .12s, box-shadow .12s;}
.dot.clickable:hover{transform:scale(1.4);box-shadow:0 0 0 2px #000;z-index:2;position:relative;}
.dot.retrying{animation:retry-pulse 1s ease-in-out infinite;}
@keyframes retry-pulse{0%,100%{box-shadow:inset 0 0 0 1px #000;}50%{box-shadow:inset 0 0 0 2px #000;}}50%{opacity:1;transform:scale(1.18);}}

/* v3.18.61: Quick-rewrite widget (free single-paragraph trial) */
.qr-section{margin:32px auto;padding:28px 24px;max-width:1100px;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.04);}
.qr-section-header{text-align:center;margin-bottom:20px;}
.qr-section-title{font-size:22px;font-weight:700;color:#000;letter-spacing:-.01em;}
.qr-section-sub{font-size:13px;color:rgba(0,0,0,.5);margin-top:6px;}
/* v3.18.76 layout / v3.18.77 visual: black border, translucent white, no gray fill */
.qr-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;align-items:stretch;background:rgba(0,0,0,.08);border-radius:10px;overflow:hidden;}
.qr-pane{display:flex;flex-direction:column;background:rgba(255,255,255,0.55);border:1px solid #000;padding:14px;min-height:280px;position:relative;}
.qr-pane-input{border-radius:10px 0 0 10px;border-right:none;}
.qr-pane-output{border-radius:0 10px 10px 0;}
/* v3.18.77: loading overlay on output pane during humanize call */
.qr-loading{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,0.7);border-radius:inherit;z-index:5;pointer-events:none;}
.qr-loading.show{display:flex;}
.qr-loading-orbit{position:relative;width:80px;height:80px;}
.qr-loading-orbit::after{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#fff;border:1.5px solid #000;z-index:2;}
.qr-loading-orbit .pi-orbit{position:absolute;left:50%;top:50%;border-radius:50%;border:1px solid rgba(0,0,0,.4);transform:translate(-50%,-50%);animation:piSpin linear infinite;will-change:transform;}
.qr-loading-orbit .pi-orbit.po1{width:30px;height:30px;animation-duration:.7s;}
.qr-loading-orbit .pi-orbit.po2{width:54px;height:54px;animation-duration:1.4s;animation-direction:reverse;}
.qr-loading-orbit .pi-orbit.po3{width:78px;height:78px;animation-duration:2.2s;}
.qr-loading-orbit .pi-planet{position:absolute;left:50%;top:0;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#000;}
@keyframes piSpin{from{transform:translate(-50%,-50%) rotate(0deg);}to{transform:translate(-50%,-50%) rotate(360deg);}}
.qr-pane-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;gap:10px;}
.qr-pane-label{font-weight:600;color:#000;flex:0 0 auto;}
.qr-pane-meta{color:rgba(0,0,0,.5);flex:1 1 auto;}
.qr-pane textarea{flex:1;width:100%;border:none;background:transparent;resize:none;outline:none;font-size:14px;line-height:1.65;font-family:inherit;color:#000;padding:0;}
.qr-pane textarea[readonly]{color:rgba(0,0,0,.78);}
.qr-pane-foot{margin-top:8px;min-height:22px;display:flex;justify-content:flex-end;align-items:center;gap:8px;}
.qr-pane-foot.qr-pane-foot-with-actions{justify-content:space-between;}
.qr-copy-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:#000;color:#fff;border:none;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s;}
.qr-copy-btn:hover{opacity:.85;}
.qr-copy-btn.copied{background:#fff;color:#000;box-shadow:inset 0 0 0 1px #000;}
.qr-copy-btn-text{line-height:1;}
.qr-ai-pill{display:inline-block;padding:3px 10px;font-size:11px;font-weight:600;border-radius:12px;background:#000;color:#fff;letter-spacing:.02em;}
.qr-ai-pill.low{background:#fff;color:#000;box-shadow:inset 0 0 0 1px #000;}
.qr-ai-pill.mid{background:#000;}
.qr-ai-pill.high{background:#dc2626;}
/* "改写" button now lives in the input pane head, top-right corner (Ryne-style) */
.qr-btn{padding:6px 14px;background:#000;color:#fff;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .1s;white-space:nowrap;flex:0 0 auto;}
.qr-btn:hover:not(:disabled){opacity:.85;transform:translateY(-1px);}
.qr-btn:disabled{opacity:.4;cursor:not-allowed;}
.qr-msg{font-size:11px;color:rgba(0,0,0,.5);line-height:1.4;}
.qr-msg.error{color:#dc2626;}
/* v3.18.98: live price hint next to the 改写 button */
.qr-price-hint{font-size:11px;font-weight:600;white-space:nowrap;flex:0 0 auto;}
.qr-price-hint.free{color:#000;}
.qr-price-hint.paid{color:#dc2626;}

/* ─── v3.26 quick-rewrite first-screen redesign ─────────────────── */
/* v3.26.1 — visual細节 + 微交互动效 + 数据动态化 */
.qr-section-v2{margin:0 auto 28px;padding:32px 32px 24px;max-width:1100px;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:14px;box-shadow:0 3px 6px rgba(15,23,42,.05),0 18px 44px rgba(15,23,42,.10),0 36px 80px rgba(15,23,42,.08);transition:box-shadow .35s ease;}
.qr-section-v2:hover{box-shadow:0 4px 8px rgba(15,23,42,.06),0 22px 50px rgba(15,23,42,.12),0 40px 90px rgba(15,23,42,.10);}
.qr-badges{display:flex;gap:8px;justify-content:center;margin-bottom:16px;flex-wrap:wrap;}
.qr-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:#f3f4f6;color:rgba(0,0,0,.62);border-radius:99px;font-size:11px;font-weight:600;letter-spacing:.02em;line-height:1.4;transition:transform .2s ease;}
.qr-badge:hover{transform:translateY(-1px);}
.qr-badge svg{flex:0 0 auto;}
.qr-badge-primary{background:#FCEBEB;color:#DC2626;animation:qrBadgePulse 2.6s ease-in-out infinite;}
@keyframes qrBadgePulse{0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,0);}50%{box-shadow:0 0 0 5px rgba(220,38,38,.08);}}
.qr-section-eyebrow-v2{font-size:10px;font-weight:700;color:rgba(0,0,0,.45);letter-spacing:.18em;text-align:center;text-transform:uppercase;margin-bottom:10px;}
.qr-section-title-v2{font-size:22px;font-weight:700;color:#000;text-align:center;margin:0 0 22px;letter-spacing:-.012em;line-height:1.35;}
.qr-summary{display:flex;align-items:center;justify-content:center;gap:48px;background:#fafafa;border:1px solid #f1f2f4;border-radius:12px;padding:18px 28px;margin-bottom:16px;animation:qrFadeInUp .55s cubic-bezier(.16,1,.3,1);}
.qr-summary-side{text-align:center;flex:0 0 auto;}
.qr-summary-label{font-size:10px;color:rgba(0,0,0,.5);font-weight:700;letter-spacing:.1em;margin-bottom:5px;text-transform:uppercase;}
.qr-summary-number{font-size:36px;font-weight:500;line-height:1;font-variant-numeric:tabular-nums;transition:filter .25s ease;}
.qr-summary-before{color:#DC2626;}
.qr-summary-after{color:#000;}
.qr-summary:hover .qr-summary-number{filter:brightness(.92);}
.qr-summary-arrow{font-size:22px;color:rgba(0,0,0,.22);line-height:1;font-weight:300;transition:transform .25s ease;}
.qr-summary:hover .qr-summary-arrow{transform:translateX(3px);color:rgba(0,0,0,.4);}
@keyframes qrFadeInUp{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
@keyframes qrFadeIn{from{opacity:0;}to{opacity:1;}}
.qr-pane-label-v2{font-size:10px;font-weight:700;color:rgba(0,0,0,.42);letter-spacing:.12em;text-transform:uppercase;flex:0 0 auto;}
.qr-btn-v2{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;padding:14px;background:#000;color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .18s,transform .12s,box-shadow .25s ease;font-family:inherit;letter-spacing:.01em;box-shadow:0 1px 2px rgba(0,0,0,.1);}
.qr-btn-v2:hover{opacity:.94;box-shadow:0 6px 16px rgba(0,0,0,.18);transform:translateY(-1px);}
.qr-btn-v2:active{transform:translateY(0) scale(.99);box-shadow:0 1px 2px rgba(0,0,0,.1);}
.qr-btn-v2:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:0 1px 2px rgba(0,0,0,.1);}
.qr-btn-v2 svg{flex:0 0 auto;}
.qr-post-actions{margin-top:16px;padding-top:16px;border-top:1px solid #f3f4f6;animation:qrFadeInUp .5s cubic-bezier(.16,1,.3,1) .12s both;}
.qr-post-buttons{display:flex;gap:10px;}
.qr-post-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s,background .15s,border-color .15s,transform .1s,box-shadow .25s ease;font-family:inherit;}
.qr-post-btn:active{transform:scale(.99);}
.qr-post-btn svg{flex:0 0 auto;}
.qr-post-btn-secondary{background:#fff;color:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.15);}
.qr-post-btn-secondary:hover{background:#fafafa;border-color:rgba(0,0,0,.35);box-shadow:0 2px 8px rgba(0,0,0,.05);}
.qr-post-btn-primary{background:#DC2626;color:#fff;border:none;box-shadow:0 1px 2px rgba(220,38,38,.22);}
.qr-post-btn-primary:hover{opacity:.94;box-shadow:0 6px 16px rgba(220,38,38,.3);transform:translateY(-1px);}
.qr-post-btn-primary:active{transform:translateY(0) scale(.99);box-shadow:0 1px 2px rgba(220,38,38,.22);}
.qr-post-hint{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;padding:8px 14px;background:#FCEBEB;color:#7f1d1d;border-radius:8px;font-size:11px;line-height:1.5;}
.qr-post-hint svg{flex:0 0 auto;}

/* v3.26.3 — B 极简版：去重黑边、靠 1px gap 营造 Linear-style 双栏 */
.qr-section-v2 .qr-pane{background:#fff;border:none;border-radius:0;}
.qr-section-v2 .qr-pane-input{border-radius:10px 0 0 10px;}
.qr-section-v2 .qr-pane-output{border-radius:0 10px 10px 0;}

/* Mobile: stack vertically */
@media(max-width:720px){.qr-grid{grid-template-columns:1fr;}.qr-section-v2 .qr-pane-input{border-radius:10px 10px 0 0;}.qr-section-v2 .qr-pane-output{border-radius:0 0 10px 10px;}.qr-section-v2{padding:20px 16px;}.qr-summary{gap:18px;padding:12px 14px;}.qr-summary-number{font-size:26px;}.qr-post-buttons{flex-direction:column;}}

/* v3.37.10: panel-ripple 全部移除 */

/* ═══════════════════════════════════════════════════════════════════════
   v3.37 — Landing extension: 技术背书 · 能力深度 · 用户评价 (三段式)
   Namespace `lx-` 避免与既有 .section-title/.section-sub 冲突
   ═══════════════════════════════════════════════════════════════════════ */
.lx-section{margin:80px 0;}
.lx-eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:#64748b;font-weight:600;text-align:center;margin-bottom:14px;}
.lx-title{font-size:30px;font-weight:800;color:#0f172a;text-align:center;margin:0 0 16px;letter-spacing:-.01em;line-height:1.3;}
.lx-sub{font-size:14px;color:#475569;text-align:center;margin:0 auto 36px;max-width:560px;line-height:1.7;}

/* A. 技术背书 */
.lx-trust-band{background:transparent;border:1px solid #1e40af;border-radius:18px;padding:36px 40px;box-shadow:none;display:grid;grid-template-columns:1fr 1.2fr;gap:48px;align-items:center;}
.lx-trust-stat{font-size:32px;font-weight:800;letter-spacing:-.02em;line-height:1;margin-bottom:10px;}
.lx-trust-stat .red{color:#dc2626;}
.lx-trust-label{font-size:13px;color:#475569;margin-bottom:22px;}
.lx-trust-sub{font-size:13px;color:#475569;line-height:1.7;}
.lx-trust-sub b{color:#0f172a;}
.lx-trust-right-title{font-size:12px;color:#64748b;letter-spacing:.18em;text-transform:uppercase;font-weight:600;margin-bottom:14px;}
.lx-partner-row-label{font-size:10px;color:#94a3b8;letter-spacing:.16em;text-transform:uppercase;font-weight:600;margin:14px 0 6px;}
.lx-partner-row-label:first-of-type{margin-top:0;}
.lx-partner-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
/* v3.37.13: 变体 C - 去灰框 + logo 3× */
.lx-partner-chip{background:transparent;border:none;border-radius:8px;padding:18px 8px;font-size:12px;font-weight:600;color:#0f172a;text-align:center;letter-spacing:.02em;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:130px;}
.lx-partner-chip small{display:block;font-size:10px;color:#64748b;font-weight:500;margin-top:6px;letter-spacing:0;}
.lx-partner-chip.target{background:#fff5f5;border:1.5px solid #dc2626;color:#dc2626;box-shadow:0 2px 8px rgba(220,38,38,.12);position:relative;font-size:24px;line-height:1.2;}
.lx-partner-chip.target::before{content:"目标";position:absolute;top:-7px;right:-4px;background:#dc2626;color:#fff;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;letter-spacing:.04em;}
.lx-partner-chip.target small{color:#dc2626;opacity:.8;font-size:12px;margin-top:8px;}
.lx-partner-logo{display:block;height:54px;width:auto;max-width:100%;margin:0 auto 8px;object-fit:contain;}
.lx-partner-logo-icon{height:66px;}

/* B2. 功能视觉(真实截图) */
.lx-feature-mock-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}
.lx-feature-mock-card{background:transparent;border:1px solid #1e40af;border-radius:14px;box-shadow:none;overflow:hidden;display:flex;flex-direction:column;}
.lx-feature-mock-svg-wrap{background:transparent;padding:0;border-bottom:none;aspect-ratio:16/10;overflow:hidden;}
.lx-feature-mock-svg-wrap img{width:100%;height:100%;display:block;object-fit:contain;mix-blend-mode:multiply;}
.lx-feature-mock-body{padding:22px 24px;}
.lx-feature-mock-name{font-size:14px;font-weight:700;color:#0f172a;margin-bottom:8px;}
.lx-feature-mock-text{font-size:12px;color:#475569;line-height:1.7;margin:0 0 12px;}
.lx-feature-mock-bullets{list-style:none;padding:0;margin:0;font-size:12px;color:#475569;line-height:1.7;}
.lx-feature-mock-bullets li{padding-left:14px;position:relative;margin:4px 0;}
.lx-feature-mock-bullets li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:1px;background:#94a3b8;}

/* B. 能力深度 */
.lx-cap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
.lx-cap-card{background:transparent;border:1px solid #1e40af;border-radius:14px;padding:24px 22px;box-shadow:none;}
.lx-cap-num{font-size:36px;font-weight:800;letter-spacing:-.02em;line-height:1;margin-bottom:6px;color:#0f172a;}
.lx-cap-num small{font-size:18px;font-weight:700;color:#64748b;margin-left:2px;}
.lx-cap-name{font-size:14px;font-weight:700;color:#0f172a;margin-bottom:14px;}
.lx-cap-list{list-style:none;padding:0;margin:0;font-size:12px;color:#475569;line-height:1.7;}
.lx-cap-list li{padding-left:14px;position:relative;margin:4px 0;}
.lx-cap-list li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:1px;background:#94a3b8;}

/* C. 用户评价 (auto-scroll marquee — seamless loop via per-card margin-right) */
.lx-review-marquee{margin:8px -24px 0;padding:8px 0 16px;overflow:hidden;position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 60px,#000 calc(100% - 60px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 60px,#000 calc(100% - 60px),transparent 100%);}
.lx-review-track{display:flex;width:max-content;animation:lx-review-scroll 60s linear infinite;will-change:transform;}
.lx-review-marquee:hover .lx-review-track{animation-play-state:paused;}
@keyframes lx-review-scroll{0%{transform:translate3d(0,0,0);}100%{transform:translate3d(-50%,0,0);}}
.lx-review-card{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:24px 22px;box-shadow:0 3px 6px rgba(15,23,42,.05),0 12px 28px rgba(15,23,42,.09);display:flex;flex-direction:column;flex:0 0 320px;margin-right:18px;}
.lx-review-quote{font-size:13px;color:#0f172a;line-height:1.8;flex:1;margin-bottom:20px;}
.lx-review-quote b{font-weight:700;color:#0f172a;}
.lx-review-meta{display:flex;align-items:center;gap:10px;padding-top:14px;border-top:1px solid #f1f5f9;}
.lx-review-avatar{width:32px;height:32px;border-radius:50%;background:#0f172a;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;}
.lx-review-name{font-size:12px;font-weight:600;color:#0f172a;}
.lx-review-date{font-size:11px;color:#94a3b8;margin-top:1px;}

@media (max-width:900px){
  .lx-trust-band{grid-template-columns:1fr;gap:28px;padding:28px 24px;}
  .lx-cap-grid{grid-template-columns:repeat(2,1fr);}
  .lx-feature-mock-grid{grid-template-columns:1fr;}
  .lx-review-card{flex:0 0 280px;margin-right:14px;}
}

.tutor-ta{width:100%;min-height:160px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;}
.tutor-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:10px;}
.tutor-input{width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;}
.tutor-field-lbl{font-size:12px;font-weight:600;color:#1e293b;margin:10px 0 5px;display:flex;justify-content:space-between;align-items:baseline;}
.tutor-field-lbl .opt{font-weight:400;color:#94a3b8;font-size:11px;}
.tutor-file-drop{border:2px dashed #e2e8f0;border-radius:12px;padding:32px 16px;text-align:center;cursor:pointer;background:#fafafa;transition:.15s;}
.tutor-file-drop:hover{border-color:#0f172a;background:#f5f5f0;}
.tutor-file-drop input[type=file]{display:none;}
.tutor-file-drop .ico{font-size:32px;margin-bottom:6px;}
.tutor-file-drop .ttl{font-size:13px;font-weight:600;color:#0f172a;}
.tutor-file-drop .sub{font-size:11px;color:#94a3b8;margin-top:2px;}
.tutor-file-drop.has-file{border-color:#0f172a;background:#f5f5f0;}
.tutor-file-drop.has-file .ico{color:#16a34a;}
.tutor-btn{padding:9px 22px;border-radius:8px;border:none;background:#000;color:#fff;font-size:13px;font-weight:600;cursor:pointer;}
.tutor-btn:disabled{opacity:.5;cursor:wait;}
.tutor-btn-ghost{padding:9px 18px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:13px;font-weight:600;cursor:pointer;color:#1e293b;}
.tutor-spinner{display:inline-block;width:14px;height:14px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:6px;}
@keyframes spin{to{transform:rotate(360deg);}}
.tutor-result{padding:16px 18px;background:linear-gradient(180deg,#fafaf7,#f5f4ee);border-radius:10px;font-size:13px;color:#1e293b;line-height:1.6;border:1px solid #f1f5f9;}
.tutor-result b{color:#0f172a;}
.tutor-result h5{font-size:12px;font-weight:700;margin:14px 0 8px;color:#0f172a;text-transform:uppercase;letter-spacing:.3px;}
.tutor-result h5:first-child{margin-top:0;}
.tutor-result ol,.tutor-result ul{margin:0;padding-left:18px;}
.tutor-result li{margin-bottom:4px;font-size:12.5px;}
.tutor-result .err{color:#b91c1c;background:#fee2e2;padding:10px 12px;border-radius:6px;font-size:12.5px;}
.tutor-result table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px;}
.tutor-result table th{text-align:left;font-weight:600;color:#94a3b8;font-size:11px;padding:5px 8px;border-bottom:1px solid #f1f5f9;}
.tutor-result table td{padding:6px 8px;border-bottom:1px solid #f1f5f9;}
.tutor-result table td.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;}

/* ═══ v3.37.18 — 课程辅导 / 论文辅导 full-page subpages ═══ */
.ct-page,.pt-page{display:none;}
body[data-tool="course-tutor"] .ct-page{display:block;}
body[data-tool="paper-tutor"] .pt-page{display:block;}
.ct-page,.pt-page{max-width:1100px;margin:0 auto;padding:40px 24px 64px;}
.ct-hero,.pt-hero{text-align:center;margin-bottom:36px;}
.ct-eyebrow,.pt-eyebrow{font-size:11px;font-weight:700;color:#dc2626;letter-spacing:1.8px;margin-bottom:10px;}
.ct-hero h1,.pt-hero h1{font-size:36px;font-weight:800;margin:0 0 14px;color:#0f172a;line-height:1.25;}
.ct-hero h1 .accent,.pt-hero h1 .accent{color:#dc2626;}
.ct-sub,.pt-sub{font-size:15px;color:#475569;max-width:680px;margin:0 auto;line-height:1.65;}
.ct-bullets,.pt-bullets{list-style:none;padding:0;margin:0 0 36px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;}
.ct-bullet,.pt-bullet{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:16px 18px;font-size:13.5px;color:#334155;line-height:1.55;}
.ct-bullet b,.pt-bullet b{color:#0f172a;display:block;margin-bottom:4px;}
.ct-card,.pt-card{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:32px;box-shadow:0 3px 18px rgba(15,23,42,.06);}
.ct-card-title,.pt-card-title{font-size:18px;font-weight:700;color:#0f172a;margin:0 0 18px;}
.ct-row3,.pt-row3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0;}
.ct-cta-row,.pt-cta-row{display:flex;justify-content:flex-end;margin-top:16px;}
.ct-btn,.pt-btn{padding:14px 32px;background:#0f172a;color:#fff;border:none;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;}
.ct-btn:hover,.pt-btn:hover{background:#1e293b;}
.ct-btn:disabled,.pt-btn:disabled{opacity:.6;cursor:wait;}
@media (max-width:768px){
  .ct-hero h1,.pt-hero h1{font-size:26px;}
  .ct-bullets,.pt-bullets{grid-template-columns:1fr;}
  .ct-row3,.pt-row3{grid-template-columns:1fr;}
  .ct-card,.pt-card{padding:20px;}
}
