/* ==========================================================================
   复旦求是学院 · 练习中心（Practice Center）专属样式
   基于 ui/prototype/assets/fd.css（设计系统 v1.0，复旦蓝+金）
   覆盖：练习中心首页 / 组卷设置 / 强化作答 / 成绩报告
   ========================================================================== */

/* ---------- 练习中心首页 ---------- */
.pc-hero{position:relative;background:linear-gradient(150deg,var(--fd-blue-950) 0%,var(--fd-blue-900) 45%,var(--fd-blue-800) 100%);color:#fff;overflow:hidden;padding:var(--fd-space-8) 0 var(--fd-space-7)}
.pc-hero::after{content:"练";position:absolute;right:6%;top:-40px;font-family:var(--fd-font-serif);font-size:190px;font-weight:900;color:rgba(255,255,255,.05);line-height:1;user-select:none;pointer-events:none}
.pc-hero .container{position:relative;z-index:1}
.pc-hero h1{color:#fff;font-size:var(--fd-text-h1);margin:var(--fd-space-3) 0 6px}
.pc-hero h1 em{font-style:normal;color:var(--fd-gold-400)}
.pc-hero p{color:rgba(255,255,255,.8);font-size:var(--fd-text-body);max-width:640px}
.pc-stat-chips{display:flex;gap:var(--fd-space-4);flex-wrap:wrap;margin-top:var(--fd-space-5)}
.pc-stat-chip{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:var(--fd-radius-md);padding:12px 18px;backdrop-filter:blur(4px)}
.pc-stat-chip b{display:block;font-family:var(--fd-font-serif);font-size:var(--fd-text-h4);color:var(--fd-gold-400);line-height:1.2}
.pc-stat-chip span{font-size:var(--fd-text-micro);color:rgba(255,255,255,.7)}

/* 科目切换 */
.pc-tabs{display:inline-flex;gap:4px;background:var(--fd-gray-100);border-radius:var(--fd-radius-md);padding:4px;margin:var(--fd-space-6) 0 var(--fd-space-5)}
.pc-tabs button{border:0;background:transparent;padding:9px 26px;border-radius:var(--fd-radius-sm);font-size:var(--fd-text-body-sm);font-weight:600;color:var(--fd-text-secondary);cursor:pointer;transition:all var(--fd-dur-fast) var(--fd-ease)}
.pc-tabs button:hover{color:var(--fd-blue-800)}
.pc-tabs button.is-on{background:var(--fd-blue-800);color:#fff;box-shadow:var(--fd-shadow-sm)}

/* 模式卡片 */
.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--fd-space-5)}
.mode-card{position:relative;display:flex;flex-direction:column;background:var(--fd-color-surface);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-lg);padding:var(--fd-space-5);box-shadow:var(--fd-shadow-sm);transition:transform var(--fd-dur-base) var(--fd-ease),box-shadow var(--fd-dur-base) var(--fd-ease);text-decoration:none;color:inherit;overflow:hidden}
.mode-card:hover{transform:translateY(-4px);box-shadow:var(--fd-shadow-lg);text-decoration:none}
.mode-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--fd-gold-500),var(--fd-gold-300));opacity:0;transition:opacity var(--fd-dur-base) var(--fd-ease)}
.mode-card:hover::before{opacity:1}
.mode-card__head{display:flex;align-items:center;gap:14px;margin-bottom:var(--fd-space-3)}
.mode-card__icon{width:54px;height:54px;flex:0 0 auto;border-radius:var(--fd-radius-md);display:grid;place-items:center;background:linear-gradient(150deg,var(--fd-blue-900),var(--fd-blue-600));color:var(--fd-gold-300);box-shadow:var(--fd-shadow-md)}
.mode-card__icon--gold{background:linear-gradient(150deg,var(--fd-gold-600),var(--fd-gold-400));color:var(--fd-text-on-gold,#3A2A0E)}
.mode-card__title{font-family:var(--fd-font-serif);font-size:var(--fd-text-h4);font-weight:700;color:var(--fd-blue-900)}
.mode-card__desc{font-size:var(--fd-text-body-sm);color:var(--fd-text-secondary);line-height:1.65;flex:1;margin-bottom:var(--fd-space-4)}
.mode-card__stat{display:flex;align-items:baseline;gap:8px;border-top:1px dashed var(--fd-gray-200);padding-top:var(--fd-space-3);margin-bottom:var(--fd-space-3)}
.mode-card__stat b{font-family:var(--fd-font-serif);font-size:var(--fd-text-h2);font-weight:700;color:var(--fd-blue-800)}
.mode-card__stat span{font-size:var(--fd-text-caption);color:var(--fd-text-tertiary)}
.mode-card__foot{display:flex;align-items:center;justify-content:space-between}
.mode-card__tags{display:flex;gap:6px;flex-wrap:wrap}
.mode-card__go{display:inline-flex;align-items:center;gap:6px;font-size:var(--fd-text-body-sm);font-weight:600;color:var(--fd-blue-800)}
.mode-card__go svg{transition:transform var(--fd-dur-fast) var(--fd-ease)}
.mode-card:hover .mode-card__go svg{transform:translateX(3px)}

/* 记录与统计 */
.rec-list{display:grid;gap:0;background:var(--fd-color-surface);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-lg);box-shadow:var(--fd-shadow-sm);overflow:hidden}
.rec-row{display:grid;grid-template-columns:150px 150px 1fr 120px 110px;gap:var(--fd-space-4);align-items:center;padding:14px 20px;border-bottom:1px solid var(--fd-gray-100);font-size:var(--fd-text-body-sm);transition:background var(--fd-dur-fast) var(--fd-ease)}
.rec-row:last-child{border-bottom:0}
.rec-row:hover{background:var(--fd-blue-50)}
.rec-row__head{display:grid;grid-template-columns:150px 150px 1fr 120px 110px;gap:var(--fd-space-4);padding:10px 20px;background:var(--fd-blue-50);font-size:var(--fd-text-micro);color:var(--fd-blue-900);font-weight:700;letter-spacing:.06em}
.rec-row .acc-ok{color:var(--fd-success-500);font-weight:700}
.rec-row .acc-low{color:var(--fd-warning-500);font-weight:700}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--fd-space-5)}
.stat-box{background:var(--fd-color-surface);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-lg);padding:var(--fd-space-5);box-shadow:var(--fd-shadow-sm)}
.stat-box__num{font-family:var(--fd-font-serif);font-size:var(--fd-text-h1);font-weight:700;color:var(--fd-blue-800);line-height:1.2}
.stat-box__num small{font-size:var(--fd-text-body-sm);color:var(--fd-text-tertiary);font-weight:400}
.stat-box__label{font-size:var(--fd-text-caption);color:var(--fd-text-secondary);margin-bottom:var(--fd-space-3)}
.stat-box .fd-progress{margin-top:var(--fd-space-2)}

/* ---------- 组卷设置 ---------- */
.setup-hero{padding:var(--fd-space-6) 0;background:linear-gradient(150deg,var(--fd-blue-950),var(--fd-blue-800));color:#fff}
.setup-hero h1{color:#fff;font-size:var(--fd-text-h1);margin:var(--fd-space-3) 0 4px}
.setup-hero p{color:rgba(255,255,255,.78);font-size:var(--fd-text-body-sm)}
.setup-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:var(--fd-space-5) 0 var(--fd-space-6)}
.setup-tab{display:inline-flex;align-items:center;gap:9px;padding:11px 20px;border-radius:var(--fd-radius-md);border:1px solid var(--fd-color-border);background:var(--fd-color-surface);color:var(--fd-gray-700);font-size:var(--fd-text-body-sm);font-weight:600;cursor:pointer;transition:all var(--fd-dur-fast) var(--fd-ease)}
.setup-tab:hover{border-color:var(--fd-blue-400);color:var(--fd-blue-800)}
.setup-tab.is-on{background:var(--fd-blue-800);border-color:var(--fd-blue-800);color:#fff;box-shadow:var(--fd-shadow-md)}
.setup-tab.is-on svg{color:var(--fd-gold-300)}
.setup-tab--disabled{opacity:.55;cursor:not-allowed}
.setup-pane{display:none;animation:fd-fade .35s var(--fd-ease)}
.setup-pane.is-on{display:block}
.setup-layout{display:grid;grid-template-columns:1fr 340px;gap:var(--fd-space-6);align-items:start}
.form-card{background:var(--fd-color-surface);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-lg);padding:var(--fd-space-6);box-shadow:var(--fd-shadow-sm)}
.form-step{display:flex;gap:14px;margin-bottom:var(--fd-space-6)}
.form-step:last-child{margin-bottom:0}
.form-step__no{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;font-family:var(--fd-font-serif);font-size:var(--fd-text-body-sm);font-weight:700;color:#fff;background:var(--fd-blue-800);border-radius:var(--fd-radius-full);box-shadow:var(--fd-shadow-sm)}
.form-step__body{flex:1;min-width:0}
.form-step__title{font-family:var(--fd-font-serif);font-size:var(--fd-text-h4);font-weight:600;color:var(--fd-blue-900);margin-bottom:4px}
.form-step__hint{font-size:var(--fd-text-caption);color:var(--fd-text-tertiary);margin-bottom:var(--fd-space-4)}
.chk-tree{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.chk-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--fd-gray-200);border-radius:var(--fd-radius-md);cursor:pointer;font-size:var(--fd-text-body-sm);transition:all var(--fd-dur-fast) var(--fd-ease);user-select:none}
.chk-item:hover{border-color:var(--fd-blue-400);background:var(--fd-blue-50)}
.chk-item input{display:none}
.chk-box{width:18px;height:18px;flex:0 0 auto;border:1.5px solid var(--fd-gray-300);border-radius:5px;display:grid;place-items:center;transition:all var(--fd-dur-fast) var(--fd-ease);background:var(--fd-color-surface)}
.chk-item input:checked + .chk-box{background:var(--fd-blue-800);border-color:var(--fd-blue-800)}
.chk-item input:checked + .chk-box::after{content:"";width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}
.chk-item--on{border-color:var(--fd-blue-500);background:var(--fd-blue-50)}
.chk-item__name{flex:1;color:var(--fd-gray-800)}
.chk-item__count{font-size:var(--fd-text-micro);color:var(--fd-text-tertiary)}
.chk-item--on .chk-item__count{color:var(--fd-blue-500)}
.kp-pills{display:flex;flex-wrap:wrap;gap:8px}
.kp-pill{padding:7px 15px;border-radius:var(--fd-radius-full);border:1px solid var(--fd-color-border);background:var(--fd-color-surface);font-size:var(--fd-text-body-sm);color:var(--fd-gray-700);cursor:pointer;transition:all var(--fd-dur-fast) var(--fd-ease)}
.kp-pill:hover{border-color:var(--fd-gold-400);color:var(--fd-gold-600)}
.kp-pill.is-on{background:var(--fd-gold-500);border-color:var(--fd-gold-500);color:var(--fd-text-on-gold,#3A2A0E);font-weight:600;box-shadow:var(--fd-shadow-gold)}
.qty-opts{display:flex;gap:8px;flex-wrap:wrap}
.qty-opt{min-width:64px;padding:10px 14px;text-align:center;border-radius:var(--fd-radius-md);border:1px solid var(--fd-color-border);background:var(--fd-color-surface);font-size:var(--fd-text-body-sm);font-weight:600;color:var(--fd-gray-700);cursor:pointer;transition:all var(--fd-dur-fast) var(--fd-ease)}
.qty-opt:hover{border-color:var(--fd-blue-400);color:var(--fd-blue-800)}
.qty-opt.is-on{background:var(--fd-blue-800);border-color:var(--fd-blue-800);color:#fff;box-shadow:var(--fd-shadow-sm)}
.qty-opt small{display:block;font-weight:400;font-size:11px;opacity:.75}
.summary-card{position:sticky;top:84px;background:linear-gradient(160deg,var(--fd-blue-50),var(--fd-gold-50));border:1px solid var(--fd-blue-200);border-radius:var(--fd-radius-lg);padding:var(--fd-space-5);box-shadow:var(--fd-shadow-md)}
.summary-card__title{font-family:var(--fd-font-serif);font-size:var(--fd-text-h4);font-weight:700;color:var(--fd-blue-900);margin-bottom:var(--fd-space-4)}
.summary-row{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-bottom:1px dashed rgba(10,46,110,.15);font-size:var(--fd-text-body-sm)}
.summary-row span{color:var(--fd-text-secondary)}
.summary-row b{font-family:var(--fd-font-serif);font-size:var(--fd-text-h4);color:var(--fd-blue-800)}
.summary-card .fd-btn{margin-top:var(--fd-space-4)}

/* ---------- 强化练习作答 ---------- */
.quiz-topbar{position:sticky;top:64px;z-index:var(--fd-z-sticky);display:flex;align-items:center;gap:var(--fd-space-4);padding:10px var(--fd-space-6);background:var(--fd-color-surface);border-bottom:1px solid var(--fd-color-border);box-shadow:var(--fd-shadow-sm);flex-wrap:wrap}
.quiz-topbar__mode{display:inline-flex;align-items:center;gap:8px}
.timer{display:inline-flex;align-items:center;gap:8px;font-family:var(--fd-font-mono);font-size:var(--fd-text-h4);font-weight:700;color:var(--fd-blue-800);background:var(--fd-blue-50);border:1px solid var(--fd-blue-200);border-radius:var(--fd-radius-md);padding:6px 14px}
.timer--urgent{color:var(--fd-danger-500);background:var(--fd-danger-bg);border-color:rgba(201,58,58,.35);animation:fd-pulse 1s var(--fd-ease) infinite}
.timer--urgent::after{content:"· 请抓紧作答";font-family:var(--fd-font-sans);font-size:var(--fd-text-micro);font-weight:500}
.quiz-topbar__progress{flex:1;min-width:160px}
.quiz-topbar__progress .fd-progress__label{margin-bottom:4px}
.quiz-layout{display:flex;gap:0;min-height:calc(100vh - 130px)}
.quiz-main{flex:1;min-width:0;padding:var(--fd-space-6) var(--fd-space-7);max-width:860px}
.qnav{display:flex;justify-content:space-between;gap:12px;margin-top:var(--fd-space-5)}
.qnav__btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-md);background:var(--fd-color-surface);font-size:var(--fd-text-body-sm);font-weight:600;color:var(--fd-gray-700);cursor:pointer;transition:all var(--fd-dur-fast) var(--fd-ease);text-decoration:none}
.qnav__btn:hover{border-color:var(--fd-blue-400);color:var(--fd-blue-800);text-decoration:none}
.qnav__btn--primary{background:var(--fd-blue-800);color:#fff;border-color:var(--fd-blue-800)}
.qnav__btn--primary:hover{background:var(--fd-blue-700)}
.qnav__btn[disabled]{opacity:.45;pointer-events:none}

/* ---------- 成绩报告 ---------- */
.report-hero{background:linear-gradient(150deg,var(--fd-blue-950),var(--fd-blue-800));color:#fff;padding:var(--fd-space-8) 0}
.report-hero .container{display:flex;gap:var(--fd-space-8);align-items:center;flex-wrap:wrap}
.report-ring{position:relative;width:150px;height:150px;flex:0 0 auto}
.report-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.report-ring .ring-bg{fill:none;stroke:rgba(255,255,255,.14);stroke-width:11}
.report-ring .ring-val{fill:none;stroke:url(#goldGrad);stroke-width:11;stroke-linecap:round;transition:stroke-dashoffset 1.2s var(--fd-ease)}
.report-ring__num{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
.report-ring__num b{font-family:var(--fd-font-serif);font-size:44px;font-weight:900;color:var(--fd-gold-400);line-height:1}
.report-ring__num span{display:block;font-size:var(--fd-text-micro);color:rgba(255,255,255,.65);margin-top:4px}
.report-hero__info{flex:1;min-width:240px}
.report-hero__info h1{color:#fff;font-size:var(--fd-text-h1);margin-bottom:6px}
.report-hero__info p{color:rgba(255,255,255,.75);font-size:var(--fd-text-body-sm);margin-bottom:var(--fd-space-4)}
.report-stats{display:flex;gap:var(--fd-space-6);flex-wrap:wrap}
.report-stat b{display:block;font-family:var(--fd-font-serif);font-size:var(--fd-text-h2);font-weight:700;color:var(--fd-gold-300)}
.report-stat span{font-size:var(--fd-text-micro);color:rgba(255,255,255,.65)}
.perq-card{background:var(--fd-color-surface);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-lg);box-shadow:var(--fd-shadow-sm);overflow:hidden}
.perq-card__head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--fd-gray-100);flex-wrap:wrap}
.perq-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.perq-item{display:flex;align-items:center;gap:10px;padding:11px 18px;border-bottom:1px solid var(--fd-gray-100);border-right:1px solid var(--fd-gray-100);font-size:var(--fd-text-body-sm)}
.perq-item__no{width:26px;height:26px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;font-size:12px;font-weight:700}
.perq-item__no--ok{background:var(--fd-success-bg);color:var(--fd-success-700)}
.perq-item__no--no{background:var(--fd-danger-bg);color:var(--fd-danger-700)}
.perq-item__kp{color:var(--fd-text-secondary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.perq-item__res{font-weight:700}
.perq-item__res--ok{color:var(--fd-success-500)}
.perq-item__res--no{color:var(--fd-danger-500)}
.perq-item__link{font-size:var(--fd-text-micro);color:var(--fd-blue-600);text-decoration:underline;cursor:pointer}
.weak-tags{display:flex;gap:10px;flex-wrap:wrap}
.weak-tag{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:var(--fd-radius-full);background:var(--fd-warning-bg);border:1px solid rgba(199,126,20,.4);color:var(--fd-warning-700);font-size:var(--fd-text-body-sm)}
.weak-tag b{font-family:var(--fd-font-serif);color:var(--fd-warning-700)}
.report-banner{display:flex;align-items:center;gap:var(--fd-space-5);background:linear-gradient(135deg,var(--fd-gold-50),var(--fd-blue-50));border:1px solid var(--fd-gold-300);border-radius:var(--fd-radius-lg);padding:var(--fd-space-5);flex-wrap:wrap;box-shadow:var(--fd-shadow-sm)}
.report-banner__icon{width:52px;height:52px;flex:0 0 auto;border-radius:var(--fd-radius-md);background:linear-gradient(135deg,var(--fd-gold-500),var(--fd-gold-400));display:grid;place-items:center;color:var(--fd-text-on-gold,#3A2A0E);box-shadow:var(--fd-shadow-gold)}
.report-banner__body{flex:1;min-width:220px}
.report-banner__body b{font-family:var(--fd-font-serif);font-size:var(--fd-text-h4);color:var(--fd-blue-900);display:block;margin-bottom:2px}
.report-banner__body span{font-size:var(--fd-text-body-sm);color:var(--fd-text-secondary)}

/* 响应式 */
@media (max-width:1280px){
  .setup-layout{grid-template-columns:1fr}
  .summary-card{position:static}
  .rec-row,.rec-row__head{grid-template-columns:130px 130px 1fr 100px}
  .rec-row .rec-col-4,.rec-row__head .rec-col-4{display:none}
}
@media (max-width:768px){
  .mode-grid{grid-template-columns:1fr 1fr}
  .quiz-main{padding:var(--fd-space-5) var(--fd-space-4)}
  .quiz-topbar{padding:10px var(--fd-space-4)}
  .perq-list{grid-template-columns:1fr}
}
@media (max-width:390px){
  .mode-grid{grid-template-columns:1fr}
  .rec-row,.rec-row__head{grid-template-columns:1fr 1fr;gap:6px;font-size:var(--fd-text-micro)}
  .report-hero .container{gap:var(--fd-space-5)}
  .quiz-topbar{gap:10px}
  .quiz-topbar__progress{min-width:100%}
}
