.mode-switch{display:flex;gap:2px;margin-left:auto;margin-right:28px}.mode-switch button{padding:10px 18px;border:1px solid #43534f;color:#aebbb7;background:#0a1111}.mode-switch button.active{color:#ffb51b;border-color:#ffb51b;background:#18201e}#encryptLab{padding:28px 2vw 70px;min-height:calc(100vh - 155px)}.encrypt-head{display:flex;align-items:baseline;gap:24px;margin-bottom:20px}.encrypt-head h1{color:#ffb51b;font-size:24px}.encrypt-head p{color:#8fa09b}.encrypt-grid{display:grid;grid-template-columns:minmax(360px, .85fr) minmax(480px,1.15fr);gap:18px}.encrypt-input,.encrypt-output{padding:20px;display:flex;flex-direction:column;gap:12px}.encrypt-input>textarea{min-height:210px}.encrypt-actions{display:flex;gap:10px}.protocol-label,.encrypt-output>label{color:#ffb51b;font-weight:700;letter-spacing:.06em}#protocols{display:flex;flex-wrap:wrap;gap:7px}#protocols button,#chosenPath button{padding:8px 10px;border:1px solid #40504d;background:#0a1111;color:#c5cfcc}#protocols button:hover{border-color:#ffb51b;color:#ffb51b}#chosenPath{min-height:44px;padding:10px;border:1px dashed #40504d;color:#71817c}#chosenPath i{color:#ffb51b;margin:0 5px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #34433f}.metrics span{padding:12px;text-align:center;color:#778984;border-right:1px solid #34433f}.metrics strong{display:block;color:#51d6a1;font-size:21px;margin-top:5px}.encrypt-output output{display:block;min-height:45px;padding:12px;border:1px solid #34433f;color:#d7dfdc;overflow-wrap:anywhere}.encrypt-output #carrier{max-height:100px;overflow:auto}.encrypt-output textarea{min-height:220px;color:#51d6a1}#copyMorse{align-self:flex-end}@media(max-width:900px){.encrypt-grid{grid-template-columns:1fr}.mode-switch{margin-right:8px}.local{display:none}}
.encrypt-mode{grid-template-rows:72px minmax(0,1fr) 42px}.encrypt-mode #encryptLab{grid-row:2;overflow:auto}.encrypt-mode footer{grid-row:3}
.encrypt-input .protocol-label,.encrypt-input #protocols,.encrypt-input #chosenPath,.encrypt-input #manualEncrypt{display:none!important}
.unified-lab{display:flex;flex-direction:column;min-height:100vh}.unified-lab header{order:1;flex:0 0 72px}.unified-lab nav{display:none!important}.unified-lab #encryptLab{order:2;display:block!important;min-height:auto;padding:24px 20px 30px;border-bottom:1px solid #34433f}.unified-lab main{order:3;display:grid!important;min-height:760px;padding-top:46px}.unified-lab main:before{content:'自動逆向破解';position:absolute;top:13px;left:20px;color:#ffb51b;font-weight:700;font-size:18px}.unified-lab footer{order:4;flex:0 0 42px}.unified-lab .encrypt-head{margin-bottom:14px}.unified-lab .encrypt-input>textarea{min-height:180px}.unified-lab .encrypt-output textarea{min-height:180px}@media(max-width:1050px){.unified-lab main{min-height:auto}.unified-lab header{flex-basis:auto}}
.unified-lab header .mode-switch{display:none!important}
.encrypt-actions{align-items:stretch;flex-wrap:wrap}.option-control{display:flex;align-items:center;border:1px solid #40504d;background:#0a1111}.option-control span{padding:0 10px;color:#ffb51b}.option-control select{height:100%;min-height:43px;border:0;border-left:1px solid #40504d;background:#101819;color:#d7dfdc;padding:0 28px 0 10px;font:600 13px Consolas}#puzzleHint{display:block;min-height:43px;padding:11px 13px;border:1px dashed #53645f;color:#65d49d;background:#07100e}
.mixPreview{}
#mixPreview{padding:12px;border:1px solid #34433f;background:#060c0d;color:#8fa09b}#mixPreview>strong{display:block;color:#ffb51b;margin-bottom:9px}#mixPreview>div{display:flex;flex-wrap:wrap;gap:6px;align-items:center}#mixPreview span{display:inline-flex;gap:7px;padding:7px 9px;border:1px solid #40504d}#mixPreview span.data{color:#65d49d;border-color:#356b56}#mixPreview span.noise{color:#ff8f70;border-color:#754636}#mixPreview span b{font-size:10px;opacity:.7}#mixPreview i{color:#59635f}#mixPreview small{display:block;margin-top:9px;color:#87938f}
#sourcePreview{padding:12px;border:1px solid #34433f;background:#060a0b}#sourcePreview strong{display:block;color:#ffb51b;margin-bottom:9px}#sourcePreview pre{margin:0;max-height:220px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;color:#d7dfdc;font:14px/1.55 Consolas}
.option-control input{width:76px;min-height:43px;border:0;border-left:1px solid #40504d;background:#101819;color:#d7dfdc;padding:0 10px;font:700 15px Consolas;outline:none}.option-control input:focus{box-shadow:inset 0 0 0 1px #ffb51b}.option-control>b{padding:0 10px;color:#8fa09b}
.encrypt-output #encryptPath.path-hidden{color:transparent;text-shadow:0 0 9px #65d49d;user-select:none}.encrypt-output #pathToggle{align-self:flex-start;padding:7px 11px;font-size:11px}
#protocolRegistry{padding:12px;border:1px solid #34433f;background:#070d0e;color:#9aa6a2}#protocolRegistry summary{cursor:pointer;color:#ffb51b;font-weight:700}#protocolRegistry div{margin-top:9px;line-height:1.5}#protocolRegistry b{display:inline-block;min-width:70px;color:#65d49d}#protocolRegistry small{display:block;margin-top:10px;color:#74827d}

/* iOS-sized screens use a dedicated single-column hierarchy. */
@media (max-width:600px){
  body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
  .encrypt-head{display:block!important;align-items:initial!important;gap:0!important;margin-bottom:16px!important}
  .encrypt-head h1{display:block!important;font-size:21px!important;line-height:1.25!important;white-space:nowrap!important;margin:0 0 8px!important}
  .encrypt-head p{display:block!important;margin:0!important;font-size:13px!important;line-height:1.6!important;max-width:none!important}
  .encrypt-grid{display:block!important}
  .encrypt-input,.encrypt-output{width:100%!important;margin:0 0 12px!important;padding:13px!important}
  .encrypt-input,.encrypt-output{border-radius:20px!important;border-color:#394642!important;box-shadow:0 6px 22px #0005}
  .encrypt-input textarea,.encrypt-output textarea,.encrypt-output output{border-radius:14px!important}
  .encrypt-actions button,.encrypt-actions .option-control{border-radius:14px!important}
  .encrypt-actions .option-control select,.encrypt-actions .option-control input{border-radius:0 14px 14px 0!important}
  .encrypt-input>textarea{min-height:165px!important;font-size:16px!important}
  .encrypt-actions{display:flex!important;flex-direction:column!important;gap:8px!important;overflow:visible!important}
  .encrypt-actions>*{width:100%!important;min-width:0!important;max-width:none!important;white-space:nowrap!important;writing-mode:horizontal-tb!important}
  .encrypt-actions .option-control{display:flex!important;justify-content:space-between!important;min-height:44px!important}
  .encrypt-actions .option-control span{white-space:nowrap!important}
  .encrypt-actions .option-control select,.encrypt-actions .option-control input{flex:1 1 auto!important;min-width:0!important}
  .metrics{font-size:11px}
  .metrics span{padding:9px 4px}
  .encrypt-output textarea{min-height:180px!important;font-size:14px!important}
  /* Mobile keeps the complete encryption workflow; only the layout changes. */
  .encrypt-input .protocol-label{display:block!important;margin-top:4px}
  .encrypt-input #protocols{display:flex!important;max-height:190px!important;overflow:auto!important;padding:2px}
  .encrypt-input #chosenPath{display:block!important;min-height:42px!important}
  .encrypt-input #manualEncrypt{display:block!important;width:100%!important;white-space:nowrap!important}
}

/* Keep the unified mobile shell stable even when an old script is cached. */
@media (max-width:600px){
  body.unified-lab header .mode-switch,
  body.unified-lab nav,
  header .mode-switch[hidden],
  nav[hidden]{display:none!important}
}

/* Mobile title must remain a single horizontal line.  Keep the description
   flexible beside it instead of allowing the Chinese heading to collapse into
   a narrow vertical column on iOS Safari. */
@media (max-width:600px){
  body.unified-lab .encrypt-head{
    display:grid!important;
    grid-template-columns:max-content minmax(0,1fr)!important;
    align-items:center!important;
    column-gap:14px!important;
    width:100%!important;
    min-width:0!important;
    overflow:visible!important;
  }
  body.unified-lab .encrypt-head h1{
    display:inline-block!important;
    width:auto!important;
    min-width:max-content!important;
    max-width:none!important;
    margin:0!important;
    white-space:nowrap!important;
    word-break:keep-all!important;
    overflow:visible!important;
    writing-mode:horizontal-tb!important;
    text-orientation:mixed!important;
    font-size:21px!important;
    line-height:1.25!important;
  }
  body.unified-lab .encrypt-head p{
    min-width:0!important;
    max-width:none!important;
    margin:0!important;
  }
}
