/* ============================================================
   ALICE Console — 仪器式工作台 v2（字阶与主站同步收敛）
   ============================================================ */

body.console{overflow:hidden}

/* ---------- 顶栏 ---------- */
.topbar{
  position:fixed;inset:0 0 auto 0;z-index:60;height:56px;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 clamp(16px,3vw,32px);
  border-bottom:1px solid var(--hairline);
  background:rgba(10,9,8,.92);backdrop-filter:blur(6px);
}
.topbar__left{display:flex;align-items:baseline;gap:16px}
.topbar__word{font-family:var(--serif);font-size:19px;letter-spacing:.14em;color:var(--ink)}
.topbar__tag{
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:var(--gold-70);
}
.topbar__right{display:flex;align-items:center;gap:22px}
.topbar__status{
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);color:var(--ink-35);
  display:flex;align-items:center;gap:8px;
}
.topbar__status .dot{width:5px;height:5px;border-radius:50%;background:var(--gold);display:inline-block}
.topbar__back{
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:var(--ink-50);transition:color .45s var(--ease);
}
.topbar__back:hover{color:var(--gold)}

/* ---------- 准入门 ---------- */
.gate{
  position:fixed;inset:0;z-index:55;background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .8s var(--ease);
}
.gate.away{opacity:0;pointer-events:none}
.gate__stars{position:absolute;inset:0;pointer-events:none}
.gate__inner{position:relative;text-align:center;padding:0 24px}
.gate__title{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(28px,4vw,42px);letter-spacing:.08em;
  margin:30px 0 46px;color:var(--ink);
}
.gate__form{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap}
.gate__input{
  background:transparent;border:none;border-bottom:1px solid var(--gold-40);
  font-family:var(--mono);font-size:var(--t-m);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:var(--ink);padding:12px 4px;width:min(320px,64vw);text-align:center;outline:none;
  transition:border-color .45s var(--ease);
}
.gate__input:focus{border-color:var(--gold)}
.gate__input::placeholder{color:var(--ink-22)}
.gate__input.err{border-color:#8a4a3a;animation:shake .4s var(--ease)}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.gate__hint{
  margin-top:26px;font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);
  text-transform:uppercase;color:var(--ink-22);
}
.gate__hint b{color:var(--gold-70);font-weight:500}
.gate__hint.err{color:#a06a5a}
.gate__alt{margin-top:16px;font-size:var(--t-m);color:var(--ink-35)}
.gate__alt a{color:var(--gold-70);border-bottom:1px solid var(--gold-40);transition:color .45s}
.gate__alt a:hover{color:var(--gold)}

/* ---------- 工作台骨架 ---------- */
.deck{
  position:fixed;inset:56px 0 0 0;z-index:10;
  display:grid;grid-template-columns:264px 1fr 336px;
  opacity:0;transition:opacity .8s var(--ease);
}
.deck.on{opacity:1}
.rail{overflow-y:auto;border-right:1px solid var(--hairline);padding:28px 22px 40px}
.rail--right{border-right:none;border-left:1px solid var(--hairline)}
.rail__block{margin-bottom:44px}
.rail__foot{margin-top:auto}
.rlabel{
  font-family:var(--mono);font-size:var(--t-xs);font-weight:500;letter-spacing:var(--ls-label);
  text-transform:uppercase;color:var(--ink-22);margin-bottom:18px;
}

/* 案件 */
.case__id{font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);color:var(--gold);margin-bottom:12px}
.case__name{font-family:var(--serif);font-size:var(--t-m);line-height:1.7;letter-spacing:.04em;color:var(--ink);margin-bottom:20px}
.case__meta{list-style:none}
.case__meta li{
  display:flex;justify-content:space-between;padding:12px 0;
  border-top:1px solid var(--hairline);
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.18em;
}
.case__meta span{color:var(--ink-22)}
.case__meta b{color:var(--ink-50);font-weight:500}

/* RALPH 循环 */
.loop{list-style:none}
.loop li{
  display:flex;align-items:center;gap:12px;padding:12px 0;
  border-top:1px solid var(--hairline);
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.18em;
  color:var(--ink-22);transition:color .5s var(--ease);
}
.loop li i{
  width:5px;height:5px;border-radius:50%;background:var(--ink-22);
  flex:none;transition:background .5s,box-shadow .5s;
}
.loop li em{margin-left:auto;font-style:normal;letter-spacing:.2em;text-transform:uppercase;color:inherit}
.loop li.active{color:var(--gold)}
.loop li.active i{background:var(--gold);box-shadow:0 0 8px rgba(201,180,144,.7);animation:pulse 1.6s ease-in-out infinite}
.loop li.done{color:var(--ink-50)}
.loop li.done i{background:var(--gold-70);box-shadow:none;animation:none}
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}
.boundary{font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.06em;line-height:1.9;color:var(--ink-35)}

/* ---------- 中栏：任务流 ---------- */
.stream{display:flex;flex-direction:column;min-width:0}
.stream__scroll{flex:1;overflow-y:auto;padding:36px clamp(20px,4vw,56px) 24px}
.msg{max-width:640px;margin:0 0 34px}
.msg--user{
  border-left:1px solid var(--gold);padding-left:18px;margin-left:auto;
}
.msg__who{
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:var(--ink-22);margin-bottom:10px;display:block;
}
.msg--user .msg__who{color:var(--gold-70)}
.msg__body{font-size:var(--t-m);line-height:1.85;color:var(--ink-70)}
.msg--user .msg__body{font-family:var(--serif);font-size:var(--t-l);letter-spacing:.04em;color:var(--ink)}
.msg .caret{
  display:inline-block;width:7px;height:14px;background:var(--gold);
  vertical-align:-2px;margin-left:3px;animation:blink 1s steps(1) infinite;
}
@keyframes blink{50%{opacity:0}}

/* 证据包 */
.packet{
  max-width:640px;margin:8px 0 34px;
  border:1px solid var(--hairline-strong);
  padding:26px 28px 22px;position:relative;
}
.packet::before{
  content:"EVIDENCE PACKET · A-0091";
  position:absolute;top:-7px;left:20px;background:var(--bg);padding:0 10px;
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:var(--ls-label);color:var(--gold-70);
}
.packet__verdict{
  font-family:var(--serif);font-weight:500;font-size:clamp(21px,2.4vw,28px);
  letter-spacing:.10em;color:var(--ink);margin:6px 0 20px;
}
.packet__verdict .dim{color:var(--ink-35)}
.packet__rows{border-bottom:1px solid var(--hairline)}
.packet__row{
  display:flex;justify-content:space-between;gap:20px;
  border-top:1px solid var(--hairline);padding:12px 0;
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.16em;
}
.packet__row span{color:var(--ink-35)}
.packet__row b{color:var(--ink);font-weight:500;text-align:right}
.packet__row b.gold{color:var(--gold)}
.packet__foot{
  margin-top:16px;font-family:var(--mono);font-size:var(--t-xs);
  letter-spacing:.18em;color:var(--ink-22);
}

/* 输入区 */
.composer{
  border-top:1px solid var(--hairline);
  padding:16px clamp(20px,4vw,56px);
  display:flex;gap:16px;align-items:center;
  background:rgba(10,9,8,.6);
}
.composer input{
  flex:1;background:transparent;border:none;outline:none;
  border-bottom:1px solid var(--hairline);
  font-family:var(--mono);font-size:var(--t-m);letter-spacing:.10em;
  color:var(--ink);padding:10px 2px;
  transition:border-color .45s var(--ease);
}
.composer input:focus{border-color:var(--gold-40)}
.composer input::placeholder{color:var(--ink-22)}

/* ---------- 右栏：证据链 ---------- */
.evi__empty{font-size:var(--t-m);line-height:1.9;color:var(--ink-22)}
.evi details{border-top:1px solid var(--hairline)}
.evi details:last-child{border-bottom:1px solid var(--hairline)}
.evi summary{
  list-style:none;cursor:pointer;padding:12px 0;
  display:flex;align-items:baseline;gap:10px;
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.16em;
  color:var(--ink-50);transition:color .45s;
}
.evi summary::-webkit-details-marker{display:none}
.evi summary:hover{color:var(--ink)}
.evi summary .c-no{color:var(--ink-22);flex:none}
.evi summary .c-st{margin-left:auto;color:var(--gold-70);flex:none}
.evi .c-body{
  padding:0 0 14px;font-family:var(--mono);font-size:var(--t-xs);
  letter-spacing:.12em;line-height:1.9;color:var(--ink-35);
}
.evi .c-body b{color:var(--ink-50);font-weight:500}

/* Gateboard */
.gates{list-style:none;border-bottom:1px solid var(--hairline)}
.gates li{
  display:flex;justify-content:space-between;align-items:baseline;
  border-top:1px solid var(--hairline);padding:12px 0;
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.16em;
  color:var(--ink-35);
}
.gates li em{font-style:normal;letter-spacing:.2em;color:var(--ink-22);transition:color .5s}
.gates li em.pass{color:var(--gold)}
.gates li em.held{color:var(--ink-35)}
.gates__note{
  margin-top:16px;font-family:var(--mono);font-size:var(--t-xs);
  letter-spacing:var(--ls-label);color:var(--ink-22);
}

/* 显现 */
.rise{opacity:0;transform:translateY(10px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.rise.in{opacity:1;transform:none}

/* ---------- 响应式 ---------- */
@media (max-width:1080px){
  body.console{overflow:auto}
  .deck{position:static;display:block;margin-top:56px}
  .rail,.rail--right{border:none;border-bottom:1px solid var(--hairline);overflow:visible}
  .rail--left{order:0}
  .stream{min-height:60vh}
  .stream__scroll{overflow:visible}
  .topbar__tag{display:none}
}
@media (max-width:640px){
  .topbar{padding:0 18px}
  .topbar__status{display:none}
  .topbar__right{gap:14px}
}
