/* ===== 移液器校准 · 靶心图 ===== */
.pip {
    background: #f9fbfa;
    border: 1px solid #dbe7e2;
    border-radius: 12px;
    padding: 24px 22px;
    margin-bottom: 26px;
    box-shadow: 0 10px 30px rgba(25, 80, 65, .07);
}

.pip-stage {
    display: grid;
    grid-template-columns: 230px 1fr;
    gap: 26px;
    align-items: center;
}

/* ---- 靶心 ---- */
.pip-target-wrap { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.pip-target {
    position: relative; width: 196px; height: 196px; border-radius: 50%;
    background: radial-gradient(circle,
        #ecfdf5 0 32%,
        #f0fdf4 32% 58%,
        #fffbeb 58% 80%,
        #fef2f2 80% 100%);
    border: 1px solid #dbe7e2;
    box-shadow: inset 0 0 20px rgba(20, 90, 70, .06);
}
.pip-target::before,
.pip-target::after {
    content: ''; position: absolute; border-radius: 50%;
    border: 1px dashed rgba(16, 122, 90, .35);
}
.pip-target::before { inset: 21%; }
.pip-target::after { inset: 42%; }
.pip-ring-label {
    position: absolute; font: 700 8px/1 ui-monospace, monospace;
    color: #93b0a8; background: #fff; padding: 1px 4px; border-radius: 3px;
}
.pip-ring-label.r1 { right: -6px; top: 46%; }
.pip-ring-label.r2 { right: 4px; top: 24%; }
.pip-ring-label.r3 { right: 12px; top: 6%; }

.pip-dot {
    position: absolute; width: 12px; height: 12px; border-radius: 50%;
    background: #059669; border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(5, 150, 105, .45);
    transform: translate(-50%, -50%);
    transition: left .4s, top .4s, background .3s;
}
.pip-dot.bad { background: #dc2626; box-shadow: 0 2px 6px rgba(220, 38, 38, .45); }
.pip-dot::after {
    content: ''; position: absolute; inset: -6px; border-radius: 50%;
    border: 1px solid currentColor; opacity: .35;
}
.pip-cross-h, .pip-cross-v {
    position: absolute; background: rgba(15, 118, 110, .12);
}
.pip-cross-h { left: 8%; right: 8%; top: 50%; height: 1px; }
.pip-cross-v { top: 8%; bottom: 8%; left: 50%; width: 1px; }
.pip-target-cap {
    font: 700 10px/1.4 ui-monospace, monospace; color: #7d9a92; text-align: center;
}
.pip-target-cap em { display: block; font-style: normal; font-size: 9px; color: #a3b8b1; font-weight: 400; }

/* ---- 读数 ---- */
.pip-read {
    background: #fff; border: 1px solid #dbe7e2; border-radius: 10px;
    padding: 16px 18px; display: flex; flex-direction: column; gap: 12px;
}
.pip-big small { font-size: 10px; color: #8aa79f; letter-spacing: .05em; display: block; }
.pip-big b {
    font: 700 36px/1 ui-monospace, Consolas, monospace; color: #047857;
    font-variant-numeric: tabular-nums; letter-spacing: -.02em;
}
.pip-big b em { font-style: normal; font-size: 11px; color: #8aa79f; font-weight: 400; }
.pip-big i {
    font-style: normal; font-size: 11px; font-weight: 700; margin-left: 8px;
    padding: 4px 10px; border-radius: 4px; vertical-align: middle;
    background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0;
}
.pip-big i.bad { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }

.pip-errbar {
    position: relative; height: 30px; border-radius: 6px;
    background: linear-gradient(90deg, #fef2f2 0%, #fffbeb 30%, #ecfdf5 50%, #fffbeb 70%, #fef2f2 100%);
    border: 1px solid #e3efe9; overflow: hidden;
}
.pip-errbar-zone {
    position: absolute; top: 0; bottom: 0; border-left: 1px dashed #10b981; border-right: 1px dashed #10b981;
    background: rgba(16, 185, 129, .1);
}
.pip-errbar-pin {
    position: absolute; top: -3px; bottom: -3px; width: 3px;
    background: #0f766e; border-radius: 2px;
    box-shadow: 0 0 0 2px #fff;
    transition: left .4s;
}
.pip-errbar-txt {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: space-between;
    padding: 0 8px; font: 700 9px/1 ui-monospace, monospace; color: #7d9a92;
}

.pip-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.pip-card {
    background: #f6fbf9; border: 1px solid #e3efe9; border-radius: 7px; padding: 8px 10px;
}
.pip-card span { display: block; font-size: 9.5px; color: #8aa79f; }
.pip-card b {
    font: 700 13.5px/1.35 ui-monospace, monospace; color: #115e59;
    font-variant-numeric: tabular-nums;
}
.pip-card b em { font-style: normal; font-size: 9px; color: #8aa79f; font-weight: 400; }

/* ---- 参数 ---- */
.pip-params { margin-top: 18px; border-top: 1px solid #dbe7e2; padding-top: 15px; }
.pip-params h2 { font-size: 12px; letter-spacing: .07em; color: #3f645e; margin: 0 0 11px; }
.pip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; }
.pip-grid label { display: flex; flex-direction: column; gap: 4px; }
.pip-grid span { font-size: 10.5px; color: #8aa79f; }
.pip-grid input, .pip-grid select {
    font: inherit; font-size: 12px; padding: 7px 9px; border: 1px solid #dbe7e2;
    border-radius: 5px; background: #fff; color: #115e59; font-variant-numeric: tabular-nums;
    min-width: 0;
}
.pip-grid input:focus, .pip-grid select:focus { outline: 2px solid rgba(4, 120, 87, .16); border-color: #047857; }
.pip-grid input.is-bad { border-color: #dc2626; background: #fff1f2; }

.pip-verdict {
    margin: 15px 0 0; padding: 10px 13px; border-radius: 8px;
    font-size: 11.5px; line-height: 1.7; color: #115e59; background: #effaf6;
    border-left: 3px solid #10b981;
}
.pip-verdict.bad { color: #9f1239; background: #fff5f7; border-left-color: #e11d48; }

@media (max-width: 820px) {
    .pip-stage { grid-template-columns: 1fr; justify-items: center; }
    .pip-read { width: 100%; }
    .pip-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
    .pip { padding: 16px 13px; }
    .pip-target { width: 168px; height: 168px; }
    .pip-cards { grid-template-columns: 1fr 1fr; }
    .pip-grid { grid-template-columns: 1fr; }
    .pip-big b { font-size: 29px; }
}

/* ---- 深色 ---- */
[data-theme="dark"] .pip { background: #0d1513; border-color: #21302c; box-shadow: none; }
[data-theme="dark"] .pip-read { background: #131d1a; border-color: #21302c; }
[data-theme="dark"] .pip-target {
    border-color: #21302c;
    background: radial-gradient(circle, rgba(6, 78, 59, .5) 0 32%, rgba(6, 78, 59, .25) 32% 58%, rgba(120, 53, 15, .18) 58% 80%, rgba(127, 29, 29, .25) 80% 100%);
}
[data-theme="dark"] .pip-ring-label { background: #131d1a; color: #7d9a92; }
[data-theme="dark"] .pip-big b { color: #6ee7b7; }
[data-theme="dark"] .pip-big small, [data-theme="dark"] .pip-card span, [data-theme="dark"] .pip-grid span { color: #8aa79f; }
[data-theme="dark"] .pip-errbar { background: linear-gradient(90deg, rgba(127,29,29,.3), rgba(120,53,15,.2) 30%, rgba(6,78,59,.4) 50%, rgba(120,53,15,.2) 70%, rgba(127,29,29,.3)); border-color: #21302c; }
[data-theme="dark"] .pip-card { background: #16211e; border-color: #21302c; }
[data-theme="dark"] .pip-card b { color: #b8dcd5; }
[data-theme="dark"] .pip-params { border-color: #21302c; }
[data-theme="dark"] .pip-params h2 { color: #b8d8d2; }
[data-theme="dark"] .pip-grid input, [data-theme="dark"] .pip-grid select { background: #131d1a; border-color: #21302c; color: #d5f4ef; }
[data-theme="dark"] .pip-verdict { background: rgba(16, 185, 129, .1); color: #a7f3d0; }
[data-theme="dark"] .pip-verdict.bad { background: rgba(190, 18, 60, .12); color: #fda4af; }
