:root{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
  color:#202628;background:#F7F5F0;
  --stone950:#252B2D;--stone850:#353C3D;--stone750:#46575C;--stone600:#687983;
  --stone500:#69716F;--stone250:#D9D8D2;--stone100:#EFEEE9;
  --canvas:#F7F5F0;--surface:#FFFEFB;--text:#202628;
  --ember:#B85B2F;--ember-deep:#8F4425;--ember-soft:#F5E7DD;--spark:#D79A3D;
  --success:#567663;--success-soft:#EAF1EC;--danger:#A4514D;--danger-soft:#F5E5E3;
  --warning:#8D6232;--warning-soft:#F5EDDF;--info:#557087;--info-soft:#E8EEF2;
  --provenance:#7A6558;--provenance-soft:#EFEAE6;
  --navy:#252B2D;--navy2:#46575C;--ice:#F7F5F0;--card:#FFFEFB;--muted:#69716F;
  --border:#D9D8D2;--blue-soft:#EFEEE9;--violet:#7A6558;--violet-soft:#EFEAE6;
}
*{box-sizing:border-box}
html,body,#app{height:100%;margin:0;overflow:hidden;background:var(--canvas)}
body{-webkit-text-size-adjust:100%;overscroll-behavior:none}
button,input,textarea,select{font:inherit}
button,.experiment-card,.step-card,.module-card,.nav-item,.file-button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button{cursor:pointer}
input,textarea,select{user-select:text;-webkit-user-select:text}
.boot{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--navy)}
.boot strong{font-size:20px}.boot span{font-size:12px;color:var(--muted)}
.boot-brand{width:54px;height:54px;display:block;margin-bottom:6px}
.app{height:100dvh;display:flex;flex-direction:column;background:var(--canvas);max-width:760px;margin:0 auto;position:relative}
.app-header{flex:none;padding:calc(13px + env(safe-area-inset-top)) 18px 12px;display:flex;align-items:center;justify-content:space-between;background:rgba(244,247,250,.94);backdrop-filter:blur(18px);z-index:4;border-bottom:1px solid rgba(223,229,236,.7)}
.brand,.kicker{font-size:10px;letter-spacing:.15em;font-weight:800;color:var(--ember)}
.app-header h1{font-size:23px;line-height:1.1;margin:4px 0 0;letter-spacing:-.025em}
.network-dot{width:10px;height:10px;border-radius:50%;background:var(--success);box-shadow:0 0 0 5px rgba(47,122,77,.1)}
.network-dot.offline{background:var(--warning);box-shadow:0 0 0 5px rgba(167,106,38,.1)}
.app-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 16px 26px}
.feedback{width:100%;border:1px solid #cfe0ed;background:#eef6fb;color:var(--navy2);border-radius:13px;padding:11px 13px;display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:12px;font-weight:650}
.search-wrap{position:sticky;top:-1px;z-index:2;background:linear-gradient(var(--ice) 80%,transparent);padding:0 0 11px}
.search-wrap input{width:100%;border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:12px 14px;outline:none;font-size:16px}
.hero-card{background:var(--navy);color:var(--surface);border-radius:22px;padding:19px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;box-shadow:0 9px 26px rgba(20,41,68,.13)}
.hero-card .kicker{color:#ff9b74}.hero-card h2{font-size:20px;margin:5px 0}.hero-card p{margin:0;color:#d7e1eb;font-size:12px;line-height:1.5}
.primary,.secondary,.warning,.danger{border:0;border-radius:14px;padding:13px 15px;font-weight:750;min-height:46px}
.primary{background:var(--navy);color:var(--surface)}.hero-card .primary{background:var(--surface);color:var(--navy)}
.primary.compact{min-width:108px;white-space:nowrap}
.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}
.warning{background:var(--warning-soft);color:var(--warning);border:1px solid #efd9b9}
.danger{background:var(--danger);color:var(--surface)}
.page-actions{display:flex;margin:0 0 14px}.page-actions .primary{width:100%}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:20px 1px 10px}.section-title:first-child{margin-top:0}.section-title h2{font-size:18px;margin:0}.section-title span{font-size:11px;font-weight:750;color:var(--navy2);background:#e9eff5;padding:5px 9px;border-radius:999px}
.list,.step-list{display:flex;flex-direction:column;gap:9px}
.experiment-card,.step-card{width:100%;border:1px solid var(--border);background:var(--surface);border-radius:18px;padding:15px;text-align:left;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;color:var(--text);box-shadow:0 1px 2px rgba(15,30,50,.035)}
.experiment-card:active,.step-card:active,.module-card:active{transform:scale(.994)}
.card-main{min-width:0;flex:1}.card-main strong{font-size:16px;display:block}.sample-id{display:block;font-size:11px;font-weight:750;color:#315b86;margin-top:3px;word-break:break-all}.card-main p{font-size:12px;color:var(--muted);line-height:1.55;margin:8px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-side{display:flex;align-items:center;gap:7px}.chevron{font-size:22px;color:#9aa4b1}
.status-pill,.mini-pill{font-size:10px;font-weight:800;padding:5px 8px;border-radius:999px;white-space:nowrap}.status-pill.active{background:var(--ember-soft);color:var(--ember)}.status-pill.completed{background:var(--success-soft);color:var(--success)}.status-pill.archived{background:#eef1f4;color:#66717f}.status-pill.trashed{background:var(--danger-soft);color:var(--danger)}
.mini-pill.running{background:var(--ember-soft);color:var(--ember)}.mini-pill.completed{background:var(--success-soft);color:var(--success)}
.empty-state{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:28px 18px;text-align:center}.empty-icon{width:42px;height:42px;border-radius:14px;background:var(--blue-soft);display:grid;place-items:center;margin:0 auto 9px;color:#315b86;font-size:20px}.empty-state strong{font-size:14px}.empty-state p{font-size:12px;color:var(--muted);margin:5px 0 0}
.segments{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:#e9eef3;border-radius:13px;padding:4px;margin-bottom:14px}.segments button{border:0;background:transparent;border-radius:10px;padding:9px 5px;color:var(--muted);font-weight:700;font-size:12px}.segments button.active{background:var(--surface);color:var(--navy);box-shadow:0 1px 3px rgba(18,38,60,.08)}
.bottom-nav{flex:none;display:grid;grid-template-columns:repeat(4,1fr);background:rgba(255,255,255,.96);border-top:1px solid var(--border);padding:6px 8px calc(6px + env(safe-area-inset-bottom));backdrop-filter:blur(20px);z-index:6}
.nav-item{border:0;background:transparent;color:#7c8796;border-radius:12px;padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:2px}.nav-item span{font-size:19px;line-height:1}.nav-item small{font-size:10px;font-weight:700}.nav-item.active{color:var(--navy);background:#f0f4f8}
.overlay{position:absolute;inset:0;background:rgba(15,27,42,.38);backdrop-filter:blur(2px);z-index:20;display:flex;align-items:flex-end}
.sheet{width:100%;max-height:90dvh;overflow-y:auto;background:var(--surface);border-radius:24px 24px 0 0;padding:9px 18px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(15,27,42,.18)}
.sheet-handle{width:38px;height:4px;border-radius:999px;background:#d8dee5;margin:0 auto 13px}
.sheet-head{display:flex;align-items:flex-start;justify-content:space-between}.sheet-head h2{font-size:22px;margin:4px 0 0}.icon-button{width:34px;height:34px;border-radius:50%;border:0;background:#eef2f5;color:#687484;font-size:21px}
.sheet label,.form-page label{display:block;font-size:12px;font-weight:750;margin-top:15px}.sheet input,.sheet textarea,.sheet select,.form-page input,.form-page textarea,.form-page select{width:100%;border:1px solid var(--border);background:#fbfcfd;border-radius:13px;padding:12px;margin-top:7px;outline:none;color:var(--text);font-size:16px}.sheet textarea,.form-page textarea{resize:none}.sheet-actions{display:grid;grid-template-columns:1fr 1.5fr;gap:8px;margin-top:18px}
.detail-page,.sub-page{position:absolute;inset:0;background:var(--canvas);z-index:15;display:flex;flex-direction:column}
.detail-header{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:calc(10px + env(safe-area-inset-top)) 12px 10px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--border);backdrop-filter:blur(18px);font-size:13px;font-weight:750}.back{justify-self:start;border:0;background:transparent;color:#315b86;padding:8px 4px;font-weight:700}.header-spacer{display:block}
.detail-scroll,.sub-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:20px 16px calc(24px + env(safe-area-inset-bottom))}
.detail-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.detail-title h2{font-size:23px;margin:5px 0 3px}
.info-card,.settings-card,.data-status,.identity-note,.running-card,.program-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:15px;margin-bottom:12px}
.info-row{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #edf0f3}.info-row:last-child{border-bottom:0}.info-row span{font-size:12px;color:var(--muted);flex:0 0 34%}.info-row strong{font-size:12px;line-height:1.5;text-align:right;word-break:break-word}
.identity-note strong,.settings-card h3,.program-card h3{font-size:14px}.identity-note p,.settings-card p,.data-status p,.program-card p{font-size:12px;color:var(--muted);line-height:1.6;margin:5px 0 0}
.action-stack{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.data-status{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.data-status h2{font-size:19px;margin:5px 0}.network-large{font-size:10px;font-weight:800;background:var(--success-soft);color:var(--success);padding:6px 8px;border-radius:999px}.network-large.offline{background:var(--warning-soft);color:var(--warning)}
.settings-card h3{margin:0 0 5px}.two-buttons{display:grid;grid-template-columns:1.4fr 1fr;gap:8px;margin-top:13px}.file-button{display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.file-button input{position:absolute;inset:0;opacity:0}
.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.metric{background:#f5f8fb;border-radius:13px;padding:12px;text-align:center}.metric strong{display:block;font-size:18px;color:var(--navy)}.metric span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.email-link{display:block;text-align:center;color:#315b86;text-decoration:none;font-size:12px;padding:11px 0 2px;word-break:break-all}
.error-screen{height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.error-card{max-width:460px;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:22px}.error-card h2{margin:0 0 7px;font-size:20px}.error-card p{font-size:13px;line-height:1.6;color:var(--muted);margin:0}
.running-card{background:var(--ember-soft);border-color:#f7d5c8}.running-card .run-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.running-card h3{margin:0;font-size:16px}.running-card .elapsed{font-size:28px;font-variant-numeric:tabular-nums;font-weight:800;color:var(--navy);margin:10px 0 2px}.running-card p{margin:0;color:var(--muted);font-size:12px}
.step-card{align-items:center}.step-index{width:34px;height:34px;border-radius:12px;background:var(--blue-soft);display:grid;place-items:center;color:var(--navy2);font-size:12px;font-weight:800;flex:none}.step-body{min-width:0;flex:1}.step-body strong{display:block;font-size:15px}.step-body small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.step-side{display:flex;align-items:center;gap:6px}
.module-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.module-card{border:1px solid var(--border);background:var(--surface);border-radius:18px;padding:16px;text-align:left;color:var(--text);min-height:112px}.module-card .module-icon{width:35px;height:35px;border-radius:12px;background:var(--blue-soft);display:grid;place-items:center;color:var(--navy2);font-weight:800;margin-bottom:11px}.module-card strong{display:block;font-size:15px}.module-card p{font-size:11px;line-height:1.5;color:var(--muted);margin:4px 0 0}
.form-page h2{font-size:24px;margin:4px 0 0}.form-hint{font-size:12px;color:var(--muted);line-height:1.6;margin:5px 0 0}
.field-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.field-row .unit{min-width:74px}
.repeat-box{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:13px;margin-top:12px}.repeat-head{display:flex;align-items:center;justify-content:space-between}.repeat-head strong{font-size:13px}.remove-row{border:0;background:var(--danger-soft);color:var(--danger);border-radius:10px;padding:8px 10px;font-size:11px;font-weight:750}
.add-row{width:100%;margin-top:9px}
.form-submit{width:100%;margin-top:18px}
.form-error{background:var(--danger-soft);border:1px solid #f1caca;color:var(--danger);border-radius:13px;padding:10px 12px;font-size:12px;margin-top:12px}
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:15px;padding:13px;margin-top:14px}.switch-row div{min-width:0}.switch-row strong{font-size:13px}.switch-row p{font-size:11px;color:var(--muted);line-height:1.5;margin:3px 0 0}.switch-row input{width:22px;height:22px}
.program-row{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.program-row.sinter{grid-template-columns:repeat(2,1fr)}
.program-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.program-summary div{background:#f6f8fa;border-radius:11px;padding:9px}.program-summary span{display:block;font-size:10px;color:var(--muted)}.program-summary strong{font-size:12px}
.step-detail-grid{display:flex;flex-direction:column;gap:8px}.value-chip{background:#f5f8fb;border-radius:12px;padding:10px 12px;display:flex;justify-content:space-between;gap:10px}.value-chip span{font-size:11px;color:var(--muted)}.value-chip strong{font-size:12px;text-align:right}
@media(max-width:390px){.module-grid{grid-template-columns:1fr}.hero-card{align-items:stretch;flex-direction:column}.primary.compact{width:100%}}

/* ===== Android Stable 1.0 parity shell ===== */
html,body,#app{background:var(--canvas)}
.app{background:var(--canvas);max-width:760px}
.home-scroll{padding:calc(24px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom))}
.home-brand-row{display:flex;align-items:center}
.flintara-mark{width:44px;height:44px;display:block;flex:none}
.home-brand-copy{margin-left:12px}
.home-brand-copy .cn{font-size:30px;line-height:1;font-weight:800;color:var(--stone950);letter-spacing:-.03em}
.home-brand-copy .en{font-size:12px;letter-spacing:1.9px;color:var(--stone750);margin-top:4px}
.home-question-row{display:flex;align-items:center;margin-top:24px}
.home-question{flex:1;font-size:25px;line-height:1.25;font-weight:800;color:var(--stone950);letter-spacing:-.02em}
.quick-wrap{position:relative;margin-left:12px}
.quick-plus{width:46px;height:46px;border:1px solid var(--stone250);border-radius:15px;background:var(--ember-soft);color:var(--ember);font-size:28px;font-weight:300;display:grid;place-items:center;padding:0}
.quick-menu{position:absolute;right:0;top:54px;width:174px;background:var(--surface);border:1px solid var(--stone250);border-radius:14px;padding:6px;box-shadow:0 10px 30px rgba(37,43,45,.13);z-index:45}
.quick-menu button{width:100%;border:0;background:transparent;text-align:left;padding:11px 12px;border-radius:10px;color:var(--text);font-size:13px}
.quick-menu button:active{background:var(--stone100)}
.home-subtitle{font-size:14px;color:var(--stone500);margin-top:6px}
.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}
.home-feature-card{height:142px;border-radius:22px;border:1px solid var(--stone250);background:var(--surface);padding:16px;text-align:left;color:var(--text);display:flex;flex-direction:column;box-shadow:0 2px 7px rgba(37,43,45,.04);transition:transform 150ms ease}
.home-feature-card:active{transform:scale(.985)}
.home-feature-card.featured{background:var(--stone600);border-color:transparent;color:var(--surface);box-shadow:0 6px 14px rgba(70,87,92,.15)}
.feature-icon{width:38px;height:38px;border-radius:12px;background:var(--stone100);display:grid;place-items:center;color:var(--stone750)}
.featured .feature-icon{background:rgba(255,254,251,.17);color:var(--surface)}
.feature-icon svg{width:22px;height:22px;display:block}
.home-feature-card .spacer{flex:1}
.home-feature-card strong{font-size:16px;font-weight:650}
.home-feature-card small{display:block;font-size:11px;line-height:16px;color:var(--stone500);margin-top:4px}
.home-feature-card.featured small{color:rgba(255,254,251,.82)}
.system-home-entry{width:100%;border:1px solid var(--stone250);background:var(--surface);border-radius:18px;padding:13px 15px;margin-top:16px;display:flex;align-items:center;text-align:left;color:var(--text);box-shadow:0 1px 3px rgba(37,43,45,.04);transition:transform 150ms ease}
.system-home-entry:active{transform:scale(.992)}
.system-home-entry .copy{flex:1;margin-left:12px}
.system-home-entry strong{font-size:15px;font-weight:650;display:block}
.system-home-entry small{font-size:11px;line-height:16px;color:var(--stone500);display:block;margin-top:3px}
.system-home-entry .arrow{font-size:24px;color:var(--stone500);font-weight:300}
.home-section-head{display:flex;align-items:center;margin-top:24px;margin-bottom:4px}
.home-section-head h2{margin:0;font-size:18px;color:var(--stone950)}
.home-section-head .grow{flex:1}
.text-link{border:0;background:transparent;color:var(--stone750);font-size:12px;padding:8px}
.active-highlight{width:100%;border:1px solid var(--stone250);background:var(--surface);border-radius:18px;padding:15px 16px;margin-top:10px;text-align:left;color:var(--text);transition:transform 150ms ease}
.active-highlight:active{transform:scale(.992)}
.highlight-top{display:flex;align-items:flex-start}.highlight-main{flex:1;min-width:0}
.active-highlight h3{font-size:18px;margin:0;color:var(--text)}.active-highlight .sid{font-size:12px;color:var(--stone750);margin-top:2px;font-weight:600}
.active-highlight .purpose{font-size:13px;line-height:19px;color:var(--stone500);margin:7px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.running-line{margin-top:10px;padding-top:10px;border-top:1px solid var(--stone250);display:flex;justify-content:space-between;gap:10px;align-items:center}
.running-line strong{font-size:12px;color:var(--stone750)}.running-line span{font-size:13px;font-variant-numeric:tabular-nums;font-weight:700;color:var(--ember)}
.page-screen{position:absolute;inset:0;background:var(--canvas);z-index:8;display:flex;flex-direction:column;transition:transform 150ms ease;touch-action:pan-y;transform:translateZ(0)}
.page-screen.edge-dragging,.detail-page.edge-dragging,.sub-page.edge-dragging,.android-page.edge-dragging{transition:none!important;will-change:transform}.page-screen.edge-settling,.detail-page.edge-settling,.sub-page.edge-settling,.android-page.edge-settling{will-change:transform;transition:transform 180ms cubic-bezier(.2,.75,.2,1)!important}
.page-header{flex:none;padding:calc(12px + env(safe-area-inset-top)) 20px 10px;background:var(--canvas)}
.page-back{border:0;background:transparent;color:var(--stone750);font-size:13px;font-weight:650;padding:8px 0}
.page-header h1{font-size:28px;margin:8px 0 0;color:var(--stone950);letter-spacing:-.025em}
.page-header p{font-size:13px;line-height:19px;color:var(--stone500);margin:6px 0 0}
.page-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 20px calc(28px + env(safe-area-inset-bottom))}
.page-search{padding:8px 0 14px}
.page-search input{width:100%;border:1px solid var(--stone250);background:var(--surface);border-radius:14px;padding:12px 14px;font-size:16px;color:var(--text);outline:none}
.system-entry-card{width:100%;background:var(--surface);border:1px solid var(--stone250);border-radius:20px;padding:18px;text-align:left;color:var(--text);display:flex;align-items:center;margin-top:14px;transition:transform 150ms ease}
.system-entry-card:active{transform:scale(.992)}
.system-entry-card .copy{flex:1;min-width:0}.system-entry-card strong{display:block;font-size:17px}.system-entry-card p{font-size:12px;line-height:18px;color:var(--stone500);margin:4px 0 0}
.system-badge{border-radius:999px;background:var(--ember-soft);color:var(--ember);font-size:11px;font-weight:650;padding:5px 10px;margin-left:8px;white-space:nowrap}
.system-arrow{font-size:22px;color:var(--stone500)}
.system-panel{background:var(--surface);border:1px solid var(--stone250);border-radius:20px;padding:18px;margin-top:14px}
.system-panel-head{display:flex;align-items:flex-start}.system-panel-head .copy{flex:1}.system-panel-head h3{font-size:17px;margin:0;color:var(--stone950)}.system-panel-head p{font-size:12px;line-height:18px;color:var(--stone500);margin:4px 0 0}
.system-row{display:flex;align-items:flex-start;gap:12px;padding:11px 0;border-bottom:1px solid var(--stone250)}.system-row:last-child{border-bottom:0}.system-row span{font-size:12px;color:var(--stone500);flex:0 0 34%}.system-row strong{font-size:12px;line-height:17px;text-align:right;flex:1}
.info-note{background:var(--ember-soft);border-radius:14px;padding:14px;font-size:12px;line-height:18px;color:var(--stone950);margin-top:12px}
.about-brand{display:flex;align-items:center;margin-top:10px}.about-logo-box{width:88px;height:88px;border:1px solid var(--stone250);border-radius:22px;background:var(--surface);display:grid;place-items:center}.about-logo-box .flintara-mark{width:66px;height:66px}
.about-copy{margin-left:16px}.about-copy .flintara-word{font-size:12px;letter-spacing:3px;font-weight:800;color:var(--ember)}.about-copy .cn{font-size:32px;font-weight:800;color:var(--stone950);margin-top:5px}.about-copy .en{font-size:14px;letter-spacing:1.8px;color:var(--stone750)}
.about-principle{background:var(--surface);border:1px solid var(--stone250);border-radius:22px;padding:20px;margin-top:24px}.about-principle h3{font-size:18px;margin:0;color:var(--stone950)}.about-principle p{font-size:14px;line-height:22px;color:var(--stone500);margin:8px 0 0}
.tagline-pill{display:inline-block;background:var(--ember-soft);color:var(--ember);border-radius:999px;padding:7px 12px;font-size:11px;margin-top:14px}
.empty-state{background:var(--surface);border-color:var(--stone250)}
.empty-icon{background:var(--stone100);color:var(--stone750)}
.experiment-card,.step-card,.info-card,.settings-card,.data-status,.identity-note,.running-card,.program-card{background:var(--surface);border-color:var(--stone250)}
.primary{background:var(--stone750);color:var(--surface)}
.secondary{background:var(--surface);border-color:var(--stone250)}
.warning{background:var(--warning-soft);color:var(--warning)}
.danger{background:var(--danger);color:var(--surface)}
.status-pill.active,.mini-pill.running{background:var(--ember-soft);color:var(--ember)}
.status-pill.completed,.mini-pill.completed{background:var(--success-soft);color:var(--success)}
.sample-id{color:var(--stone750)}
.detail-page,.sub-page{background:var(--canvas);touch-action:pan-y;transform:translateZ(0)}
.detail-header{background:rgba(247,245,240,.95);border-bottom-color:var(--stone250)}
.back{color:var(--stone750)}
.module-card{background:var(--surface);border-color:var(--stone250)}
.module-card .module-icon{background:var(--stone100);color:var(--stone750)}
.search-wrap{background:linear-gradient(var(--canvas) 80%,transparent)}
.search-wrap input,.sheet input,.sheet textarea,.sheet select,.form-page input,.form-page textarea,.form-page select{background:var(--surface);border-color:var(--stone250)}
.sheet{background:var(--surface)}
.running-card{background:var(--ember-soft);border-color:#E6C9BA}
.feedback{background:var(--info-soft);border-color:#CDD9E1;color:var(--info)}
@media(max-width:390px){
  .home-grid{gap:10px}.home-feature-card{height:136px;padding:14px}
  .home-question{font-size:23px}
}

/* ===== V0.3.2 Core Parity Mega Pass ===== */
.page-title-xl{font-size:30px;line-height:1.12;font-weight:800;color:var(--stone950);margin:4px 0 2px;letter-spacing:-.025em}
.page-sub-id{font-size:13px;color:var(--info);font-weight:650;margin-top:3px;word-break:break-all}
.android-back{border:0;background:transparent;color:var(--stone750);font-size:14px;font-weight:650;padding:8px 0;margin-bottom:3px}
.android-page{position:absolute;inset:0;background:var(--canvas);z-index:15;display:flex;flex-direction:column;touch-action:pan-y;transform:translateZ(0)}
.android-page-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:calc(14px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom))}
.android-page-scroll.with-bottom{padding-bottom:112px}
.android-bottom-bar{position:absolute;left:0;right:0;bottom:0;background:rgba(247,245,240,.96);backdrop-filter:blur(18px);border-top:1px solid var(--stone250);padding:10px 20px calc(10px + env(safe-area-inset-bottom));z-index:4}
.android-bottom-bar .primary,.android-bottom-bar .secondary{width:100%}
.detail-top-row{display:flex;align-items:center;gap:8px}.detail-top-row .android-back{margin:0}.detail-top-row .grow{flex:1}
.more-button{width:42px;height:42px;border:0;background:transparent;color:var(--text);font-size:28px;line-height:1;border-radius:12px}
.more-menu{position:absolute;right:20px;top:calc(52px + env(safe-area-inset-top));width:238px;background:var(--surface);border:1px solid var(--stone250);border-radius:16px;padding:6px;box-shadow:0 12px 34px rgba(37,43,45,.15);z-index:45}
.more-menu button{width:100%;border:0;background:transparent;text-align:left;border-radius:10px;padding:11px 12px;color:var(--text);font-size:13px}.more-menu button:active{background:var(--stone100)}.more-menu .danger-item{color:var(--danger)}.more-menu hr{border:0;border-top:1px solid var(--stone250);margin:5px}
.detail-purpose{font-size:14px;line-height:20px;color:var(--stone500);margin:5px 0 0}.detail-status-row{display:flex;align-items:center;gap:8px;margin-top:9px}.detail-created{font-size:12px;color:var(--stone500)}
.project-entry{width:100%;border:1px solid var(--stone250);background:rgba(239,238,233,.38);border-radius:12px;padding:10px 12px;display:flex;align-items:center;text-align:left;color:var(--text);margin-top:10px}.project-entry .label{font-size:12px;color:var(--stone500);margin-right:12px}.project-entry strong{font-size:14px;flex:1}.project-entry .arrow{font-size:19px;color:var(--stone500)}
.source-line{font-size:12px;color:var(--stone500);margin-top:7px}.source-line.strong{font-weight:650;color:var(--provenance)}
.readonly-banner{background:rgba(239,238,233,.55);border-radius:12px;padding:10px 12px;font-size:12px;line-height:18px;color:var(--stone500);margin-top:8px}
.section-row{display:flex;align-items:center;margin-top:22px}.section-row h2{font-size:20px;margin:0;color:var(--text)}.section-row .grow{flex:1}.tiny-link{border:0;background:transparent;color:var(--stone500);font-size:12px;padding:7px}
.step-history-card{width:100%;position:relative;background:var(--surface);border:1px solid var(--stone250);border-radius:16px;color:var(--text);margin-top:10px;transition:transform 150ms ease}.step-history-card:active{transform:scale(.992)}.step-history-open{width:100%;border:0;background:transparent;color:inherit;text-align:left;padding:14px;padding-right:48px;border-radius:16px}.step-more-button{position:absolute;right:8px;top:8px;width:36px;height:36px;border:0;border-radius:10px;background:transparent;color:var(--stone500);font-size:22px;line-height:1}.step-more-button:active{background:var(--stone100)}.step-mini-menu{position:absolute;right:8px;top:46px;width:218px;background:var(--surface);border:1px solid var(--stone250);border-radius:14px;padding:6px;box-shadow:0 12px 34px rgba(37,43,45,.15);z-index:45}.step-mini-menu button{width:100%;border:0;background:transparent;border-radius:9px;text-align:left;padding:10px 11px;font-size:12px;color:var(--text)}.step-mini-menu button:active{background:var(--stone100)}
.step-history-top{display:flex;align-items:flex-start;gap:10px}.step-history-index{width:32px;height:32px;border-radius:10px;background:var(--stone100);display:grid;place-items:center;font-size:12px;font-weight:800;color:var(--stone750);flex:none}.step-history-main{min-width:0;flex:1}.step-history-main strong{font-size:15px}.step-history-main small{display:block;font-size:11px;color:var(--stone500);margin-top:3px}.step-history-note{font-size:12px;line-height:18px;color:var(--stone500);margin-top:9px}.inherited-pill{display:inline-block;background:var(--provenance-soft);color:var(--provenance);font-size:10px;font-weight:750;border-radius:999px;padding:5px 8px;margin-top:8px}
.record-head{display:flex;align-items:center;margin-top:18px}.record-head .copy{flex:1}.record-head h3{font-size:18px;margin:0}.record-head p{font-size:12px;color:var(--stone500);margin:3px 0 0}.record-head button{border:0;background:transparent;color:var(--stone750);padding:8px;font-size:12px}
.record-card{background:rgba(239,238,233,.38);border-radius:12px;padding:12px;margin-top:7px}.record-meta{display:flex;align-items:center;gap:8px}.record-meta span{font-size:11px;color:var(--stone500);flex:1}.record-meta button{border:0;background:transparent;color:var(--stone750);font-size:12px}.record-card p{font-size:14px;line-height:21px;margin:6px 0 0;white-space:pre-wrap}
.result-entry{width:100%;background:var(--surface);border:1px solid var(--stone250);border-radius:16px;padding:14px 15px;display:flex;align-items:center;text-align:left;color:var(--text);margin-top:14px;box-shadow:0 1px 3px rgba(37,43,45,.04)}.result-icon{width:36px;height:36px;border-radius:12px;background:var(--ember-soft);display:grid;place-items:center;color:var(--ember);font-weight:800}.result-entry .copy{flex:1;margin-left:12px}.result-entry strong{display:block;font-size:16px}.result-entry small{display:block;font-size:12px;color:var(--stone500);margin-top:3px}.result-entry .arrow{font-size:22px;color:var(--stone500)}
.relation-box{border-top:1px solid var(--stone250);border-bottom:1px solid var(--stone250);padding:12px 0;margin-top:12px}.relation-title{display:flex;align-items:center}.relation-title .copy{flex:1}.relation-title strong{font-size:16px}.relation-title small{display:block;font-size:12px;color:var(--stone500);margin-top:3px}.relation-title button{border:0;background:transparent;color:var(--stone750);font-size:12px}.relation-explain{font-size:12px;color:var(--stone500);line-height:18px;margin-top:8px}.relation-item{background:var(--surface);border:1px solid var(--stone250);border-radius:12px;padding:11px;margin-top:8px}.relation-item strong{font-size:13px}.relation-item p{font-size:11px;line-height:17px;color:var(--stone500);margin:3px 0 0}
.selector-button{width:100%;min-height:58px;border:2px solid var(--text);background:transparent;border-radius:14px;padding:10px 14px;display:flex;align-items:center;text-align:left;color:var(--text);margin-top:10px}.selector-button.recommended{min-height:66px;border:3px solid var(--provenance);color:var(--provenance)}.selector-button .copy{flex:1}.selector-button strong{font-size:19px;font-weight:500}.selector-button.recommended strong{font-weight:800}.selector-button small{display:block;font-size:12px;margin-top:3px}.selector-rec{font-size:12px;font-weight:800}.protocol-complete{background:var(--ember-soft);border:1px solid rgba(184,91,47,.28);border-radius:14px;padding:13px 16px;margin-top:18px}.protocol-complete strong{font-size:16px;color:var(--ember-deep)}.protocol-complete p{font-size:12px;color:var(--stone500);margin:4px 0 0}
.setup-hint{font-size:13px;line-height:19px;color:var(--stone500);margin:4px 0 0}.provenance-hint{font-size:13px;line-height:19px;color:var(--provenance);margin:7px 0 0;font-weight:550}.form-section-label{font-size:14px;font-weight:650;color:var(--text);margin-top:20px}.form-section-help{font-size:13px;line-height:18px;color:var(--stone500);margin-top:3px}.input-unit-wrap{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.unit-chip{min-width:68px;border:1px solid var(--stone250);background:var(--surface);border-radius:13px;padding:13px 10px;text-align:center;font-size:14px;color:var(--text);margin-top:7px}
.template-hint{font-size:13px;color:var(--provenance);font-weight:550;margin-top:6px}.return-home-button{width:100%;margin-top:10px}
.running-page-title{font-size:34px;font-weight:800;color:var(--danger);margin:5px 0 0}.running-page-title.paused{color:var(--warning)}.running-duration{font-size:22px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;margin-top:8px}.running-meta{font-size:15px;color:var(--stone750);margin-top:8px}.running-remaining{font-size:18px;font-weight:700;color:var(--stone750);margin-top:7px}.running-remaining.due{color:var(--ember)}.running-warning{font-size:12px;color:var(--warning);font-weight:550;margin-top:6px}.running-parameter-title{font-size:20px;font-weight:800;margin-top:22px}.running-record-button{width:100%;height:52px;margin-top:16px}.running-actions{display:flex;flex-direction:column;gap:8px}.running-actions button{width:100%}
.modal-layer{position:absolute;inset:0;background:rgba(37,43,45,.30);backdrop-filter:blur(2px);z-index:60;display:flex;align-items:center;justify-content:center;padding:24px}.modal-card{width:min(100%,520px);max-height:84dvh;overflow-y:auto;background:var(--surface);border-radius:22px;padding:20px;box-shadow:0 20px 60px rgba(37,43,45,.20)}.modal-card h2{font-size:20px;margin:0}.modal-card>p{font-size:13px;line-height:19px;color:var(--stone500)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.modal-actions button{min-width:88px}.modal-card label{display:block;font-size:12px;font-weight:700;margin-top:14px}.modal-card input,.modal-card textarea,.modal-card select{width:100%;border:1px solid var(--stone250);background:var(--surface);border-radius:13px;padding:12px;margin-top:7px;font-size:16px;color:var(--text)}
.choice-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.choice-button{border:1px solid var(--stone250);background:var(--surface);border-radius:999px;padding:8px 12px;font-size:12px;color:var(--stone500)}.choice-button.selected{background:var(--stone750);color:var(--surface);border-color:var(--stone750)}
.metric-card{border:1px solid var(--stone250);border-radius:16px;padding:13px;margin-top:10px;background:var(--surface)}.metric-card-head{display:flex;align-items:center}.metric-card-head strong{flex:1;font-size:14px}.metric-card-head button{border:0;background:transparent;color:var(--danger);font-size:12px}.metric-fields{display:grid;grid-template-columns:1fr .65fr;gap:8px}.metric-fields .wide{grid-column:1/-1}
.result-message{font-size:13px;margin-top:10px}.result-message.ok{color:var(--success)}.result-message.error{color:var(--danger)}
.project-choice{width:100%;border:0;border-bottom:1px solid var(--stone250);background:transparent;padding:12px 4px;text-align:left;color:var(--text)}.project-choice:last-child{border-bottom:0}.project-search{margin-bottom:10px}
.info-card-compact{border:1px solid var(--stone250);background:var(--surface);border-radius:12px;padding:10px 12px;display:flex;align-items:center;margin-top:8px}.info-card-compact span{font-size:12px;color:var(--stone500);flex:1}.info-card-compact strong{font-size:13px;text-align:right}
.dialog-note{font-size:12px;line-height:18px;color:var(--stone500);margin-top:5px}
.hidden{display:none!important}
@media(max-width:390px){.metric-fields{grid-template-columns:1fr}.metric-fields .wide{grid-column:auto}.more-menu{width:220px}.running-page-title{font-size:31px}}

/* V0.3.2 final parity fixes */
.page-scroll input,.page-scroll textarea,.page-scroll select,.android-page input,.android-page textarea,.android-page select{width:100%;border:1px solid var(--stone250);background:var(--surface);border-radius:14px;padding:12px 13px;color:var(--text);font-size:16px;outline:none}
.step-record-head{margin-top:18px}
.step-record-head button{border:0;background:transparent;color:var(--stone750);font-size:12px;font-weight:650;padding:8px}

/* ===== V0.3.3 Interaction Parity ===== */
.menu-dismiss-layer{position:fixed;inset:0;border:0;background:transparent;z-index:35;padding:0;margin:0}
.detail-live-time{font-variant-numeric:tabular-nums}
.relation-box{background:rgba(239,238,233,.34);border:0;border-radius:14px;padding:10px 14px;margin-top:12px}
.relation-title-main{display:flex;align-items:center;flex:1;min-width:0;cursor:pointer}
.relation-toggle{width:34px;height:34px;border:0!important;background:transparent!important;color:var(--stone500)!important;font-size:13px!important;padding:0!important}
.relation-explain{margin-top:10px}
.relation-subtoggle{width:100%;border:0;background:transparent;color:var(--stone750);text-align:left;padding:8px 0 4px;font-size:13px;font-weight:600}
.relation-item{cursor:pointer;transition:transform 150ms ease}.relation-item:active{transform:scale(.992)}
.edge-dragging{box-shadow:0 0 24px rgba(37,43,45,.08)}

/* V0.3.5 pause-state parity */
.mini-pill.paused{
  background:var(--warning-soft);
  color:var(--warning);
  border:1px solid rgba(141,98,50,.18);
}
.paused-card{
  background:linear-gradient(180deg,var(--warning-soft),var(--surface));
  border-color:#E5D6BF;
}
.paused-highlight{
  border-color:#DCC9AA;
}
.paused-live{
  color:var(--warning)!important;
  font-weight:750!important;
}
.running-title-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.running-title-row .running-page-title{
  margin:0;
}
.pause-state-pill{
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:4px 10px;
  border-radius:999px;
  background:var(--warning-soft);
  color:var(--warning);
  font-size:11px;
  font-weight:800;
  white-space:nowrap;
}

/* V0.3.6 Android core parity fixes */
.highlight-title-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.highlight-title-row h3{margin:0}
.home-pause-pill{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:3px 9px;
  border-radius:999px;
  background:var(--warning-soft);
  color:var(--warning);
  font-size:10px;
  font-weight:800;
  white-space:nowrap;
}
.program-pre{
  white-space:pre-wrap;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:15px!important;
  line-height:1.7!important;
  background:var(--stone100);
  border-radius:14px;
  padding:14px;
  color:var(--stone950)!important;
  user-select:text;
  -webkit-user-select:text;
}
.step-history-card .step-history-open{
  padding-right:44px;
}

/* V0.3.7 same-view scroll stability + fork feedback */
.step-more-button:disabled,
.modal-card button:disabled{
  opacity:.55;
  cursor:default;
}
.program-pre{
  white-space:pre-wrap!important;
  overflow-wrap:anywhere;
}

/* V0.3.8 Fork binding diagnostics */
.fork-inline-error{
  margin-top:12px;padding:11px 12px;border-radius:12px;
  background:var(--danger-soft);color:var(--danger);
  font-size:12px;line-height:1.55;white-space:pre-wrap;
}
.fork-inline-busy{
  margin-top:12px;padding:10px 12px;border-radius:12px;
  background:var(--info-soft);color:var(--info);
  font-size:12px;font-weight:700;
}

/* V0.3.9 menu hit-test fix */
.menu-dismiss-layer{display:none!important;pointer-events:none!important}
.step-mini-menu{z-index:80}
.step-more-button{z-index:2}

/* V0.4.0 cross-platform interop */
.share-modal{max-width:560px}
.qr-box{
  display:grid;place-items:center;background:#fff;border-radius:18px;padding:12px;
  border:1px solid var(--stone250);margin:14px auto;max-width:360px
}
.qr-box svg{width:100%;height:auto;display:block}
.share-summary{font-size:12px;line-height:1.6;color:var(--stone500);text-align:center}
.modal-stack-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.import-preview-list{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto;margin:12px 0}
.import-preview-list>div{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;padding:10px 12px;border-radius:12px;background:var(--stone100)}
.import-preview-list span{font-size:11px;color:var(--stone500)}
.import-preview-list strong{font-size:13px}
.import-preview-list small{grid-column:2;font-size:11px;color:var(--stone500)}
.package-preview-list{max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:8px;margin:12px 0}
.package-preview-item{border:1px solid var(--stone250);border-radius:13px;padding:11px 12px;background:var(--surface)}
.package-preview-item.blocked{border-color:#e2b9b5;background:var(--danger-soft)}
.package-preview-item strong,.package-preview-item span,.package-preview-item small{display:block}
.package-preview-item strong{font-size:13px}
.package-preview-item span{font-size:10px;color:var(--stone500);margin-top:2px}
.package-preview-item small{font-size:11px;color:var(--stone500);line-height:1.45;margin-top:5px}
.settings-card textarea{width:100%;margin-top:10px;border:1px solid var(--stone250);background:var(--surface);border-radius:13px;padding:12px;font-size:14px;resize:vertical}

/* V0.4.0.1 — camera QR scanner */
.scan-primary{display:flex;align-items:center;justify-content:center;gap:8px}
.scan-icon{font-size:22px;line-height:1}
.share-fallback{margin-top:12px;border-top:1px solid var(--stone250);padding-top:10px}
.share-fallback summary{font-size:12px;color:var(--stone500);cursor:pointer;list-style:none}
.share-fallback summary::-webkit-details-marker{display:none}
.share-fallback summary::after{content:"⌄";float:right}
.share-fallback[open] summary::after{content:"⌃"}
.share-fallback-body{padding-top:10px}
.scanner-layer{background:rgba(22,28,30,.86);align-items:stretch;padding:0}
.scanner-card{width:100%;max-width:none;height:100%;max-height:none;border-radius:0;background:#121819;color:#fff;display:flex;flex-direction:column;padding:max(18px,env(safe-area-inset-top)) 16px max(18px,env(safe-area-inset-bottom))}
.scanner-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.scanner-head .kicker{color:#9DA9AA}.scanner-head h2{margin:3px 0 0;color:#fff;font-size:24px}
.scanner-close{width:42px;height:42px;border:0;border-radius:999px;background:rgba(255,255,255,.1);color:#fff;font-size:28px;line-height:1}
.scanner-stage{position:relative;overflow:hidden;border-radius:22px;background:#000;flex:1;min-height:300px;max-height:65vh}
.scanner-stage video{width:100%;height:100%;object-fit:cover;display:block}
.scanner-mask{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.14)}
.scanner-frame{position:relative;width:min(72vw,320px);aspect-ratio:1;border:1px solid rgba(255,255,255,.24);border-radius:22px}
.scanner-frame i{position:absolute;width:34px;height:34px;border-color:#F5F3EE;border-style:solid}
.scanner-frame i:nth-child(1){left:-2px;top:-2px;border-width:4px 0 0 4px;border-radius:12px 0 0 0}
.scanner-frame i:nth-child(2){right:-2px;top:-2px;border-width:4px 4px 0 0;border-radius:0 12px 0 0}
.scanner-frame i:nth-child(3){right:-2px;bottom:-2px;border-width:0 4px 4px 0;border-radius:0 0 12px 0}
.scanner-frame i:nth-child(4){left:-2px;bottom:-2px;border-width:0 0 4px 4px;border-radius:0 0 0 12px}
.scan-line{position:absolute;left:10%;right:10%;height:2px;top:18%;background:#D97948;box-shadow:0 0 12px rgba(217,121,72,.75);animation:flintaraScan 2.2s ease-in-out infinite}
@keyframes flintaraScan{0%,100%{top:16%;opacity:.55}50%{top:82%;opacity:1}}
.scanner-status{padding:12px 4px 6px;font-size:13px;text-align:center;color:#D7DEDE}
.scanner-status.error{color:#F0B7AF}
.scanner-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.scanner-actions .file-button,.scanner-actions button{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);color:#fff}
.scanner-help{font-size:11px;line-height:1.55;color:#95A1A2;text-align:center;margin:12px 8px 0}
@media(max-width:430px){.scanner-stage{max-height:58vh}.scanner-actions{grid-template-columns:1fr}.scanner-card{padding-left:12px;padding-right:12px}}

/* V0.4.1 Relay */
.relay-card{border-color:#C8D2D0}
.relay-warning{margin:12px 0;padding:11px 12px;border-radius:12px;background:var(--warning-soft);color:var(--warning);font-size:12px;line-height:1.55}
.relay-warning.danger{background:var(--danger-soft);color:var(--danger)}
.relay-check{display:flex!important;align-items:flex-start!important;gap:10px;margin-top:14px}
.relay-check input{width:20px;height:20px;margin:1px 0 0}
.relay-check span{display:flex;flex-direction:column;gap:3px}.relay-check small{font-size:11px;color:var(--stone500);line-height:1.45}
.relay-file-summary,.relay-instruction{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:13px;background:var(--stone100);margin:12px 0}
.relay-file-summary span,.relay-instruction span{font-size:11px;color:var(--stone500)}.relay-instruction strong{font-size:13px;line-height:1.5}
.danger-secondary{border:1px solid var(--danger)!important;color:var(--danger)!important;background:transparent!important}
.readonly-banner strong{font-weight:800}

/* V0.4.1.1 iOS camera preview paint fix */
.scanner-stage video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  min-width:100%;
  min-height:100%;
  object-fit:cover;
  background:#000;
  transform:translateZ(0);
  -webkit-transform:translateZ(0);
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  will-change:transform;
}
.scanner-stage.camera-live video{
  visibility:visible;
  opacity:1;
}
.scanner-mask{
  z-index:2;
  pointer-events:none;
}
.scanner-stage::before{
  content:"正在连接相机…";
  position:absolute;
  inset:0;
  z-index:1;
  display:grid;
  place-items:center;
  color:#8E9A9B;
  font-size:13px;
  background:#000;
}
.scanner-stage.camera-live::before{
  display:none;
}

/* V0.4.1.2: camera preview is independent from QR decoder availability */
.scanner-stage.camera-live::before{display:none!important}
