
        .stack-app * { box-sizing: border-box; }

        .stack-app { background: var(--card-background); }
        .stack-app footer { color: inherit; }

        .stack-app .rn-container {
            max-width: 700px;
            margin: 20px auto;
        }

        /* ---- 选项卡 ---- */
        .stack-app .tab-bar {
            display: flex;
            gap: 0;
            margin-bottom: 0;
        }
        .stack-app .tab-btn {
            flex: 1;
            padding: 12px 0;
            background: var(--card-background);
            color: inherit;
            border: none;
            cursor: pointer;
            font-size: 15px;
            font-weight: bold;
            transition: background 0.15s, color 0.15s;
        }
        .stack-app .tab-btn:first-child { border-radius: var(--card-border-radius); }
        .stack-app .tab-btn:last-child { border-radius: var(--card-border-radius); }
        .stack-app .tab-btn.active {
            background: var(--card-background);
            color: inherit;
        }
        .stack-app .tab-btn:hover:not(.active) { background: var(--card-background); color: inherit; }

        .stack-app .tab-panel {
            display: none;
            background: var(--card-background);
            border-radius: var(--card-border-radius);
            padding: 24px;
        }
        .stack-app .tab-panel.active { display: block; }

        /* ---- 生成器 ---- */
        .stack-app .gen-display {
            background: var(--card-background);
            border-radius: var(--card-border-radius);
            padding: 40px 20px;
            text-align: center;
            margin-bottom: 20px;
            min-height: 100px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .stack-app .gen-display .gen-value {
            font-size: 36px;
            color: inherit;
            font-family: 'Courier New', monospace;
            font-weight: bold;
        }
        .stack-app .gen-grid {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 6px 14px;
            width: 100%;
        }
        .stack-app .gen-grid span {
            font-family: 'Courier New', monospace;
            font-weight: bold;
            color: inherit;
            font-size: 16px;
            white-space: nowrap;
        }
        .stack-app .gen-display .gen-placeholder {
            color: inherit;
            font-size: 18px;
        }

        .stack-app .gen-controls {
            display: flex;
            flex-wrap: wrap;
            gap: 12px;
            align-items: center;
            justify-content: center;
            margin-bottom: 20px;
        }
        .stack-app .gen-controls label {
            color: inherit;
            font-size: 13px;
        }
        .stack-app .gen-controls input {
            width: 70px;
            padding: 8px;
            background: var(--card-background);
            color: inherit;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            text-align: center;
            font-size: 14px;
        }
        .stack-app .gen-controls input:focus { outline: none; border-color: var(--card-separator-color); }

        .stack-app .gen-btns {
            display: flex;
            gap: 10px;
            justify-content: center;
            flex-wrap: wrap;
        }
        .stack-app .gen-btns button {
            padding: 10px 24px;
            border: none;
            border-radius: var(--card-border-radius);
            font-weight: bold;
            font-size: 14px;
            cursor: pointer;
            transition: background 0.15s;
        }
        .stack-app .btn-gen-int { background: var(--card-background); color: inherit; }
        .stack-app .btn-gen-int:hover { background: var(--card-background); }
        .stack-app .btn-gen-float { background: var(--card-background); color: inherit; }
        .stack-app .btn-gen-float:hover { background: var(--card-background); }
        .stack-app .btn-gen-complex { background: var(--card-background); color: inherit; }
        .stack-app .btn-gen-complex:hover { background: var(--card-background); }

        /* ---- 炸弹游戏 ---- */
        .stack-app .bomb-controls {
            display: flex;
            flex-wrap: wrap;
            gap: 12px;
            align-items: center;
            justify-content: center;
            margin-bottom: 16px;
        }
        .stack-app .bomb-controls label { color: inherit; font-size: 13px; }
        .stack-app .bomb-controls input {
            width: 70px;
            padding: 8px;
            background: var(--card-background);
            color: inherit;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            text-align: center;
            font-size: 14px;
        }
        .stack-app .bomb-controls input:focus { outline: none; border-color: var(--card-separator-color); }

        .stack-app .bomb-status {
            text-align: center;
            margin-bottom: 10px;
            font-weight: bold;
            font-size: 15px;
            color: inherit;
        }
        .stack-app .bomb-count {
            text-align: center;
            margin-bottom: 12px;
            color: inherit;
            font-size: 13px;
        }

        .stack-app .bomb-btns {
            display: flex;
            gap: 10px;
            justify-content: center;
            flex-wrap: wrap;
            margin-bottom: 16px;
        }
        .stack-app .bomb-btns button {
            padding: 10px 24px;
            border: none;
            border-radius: var(--card-border-radius);
            font-weight: bold;
            font-size: 14px;
            cursor: pointer;
            transition: background 0.15s;
        }
        .stack-app .btn-mode-int { background: var(--card-background); color: inherit; }
        .stack-app .btn-mode-int:hover { background: var(--card-background); }
        .stack-app .btn-mode-complex { background: var(--card-background); color: inherit; }
        .stack-app .btn-mode-complex:hover { background: var(--card-background); }

        .stack-app .btn-restart {
            padding: 12px 32px;
            border: none;
            border-radius: var(--card-border-radius);
            font-weight: bold;
            font-size: 15px;
            cursor: pointer;
            transition: background 0.15s;
            background: var(--card-background);
            color: inherit;
        }
        .stack-app .btn-restart:hover { background: var(--card-background); }

        .stack-app .bomb-canvas-wrap {
            position: relative;
            width: 100%;
            aspect-ratio: 1 / 1;
            max-width: 500px;
            margin: 0 auto;
        }
        .stack-app .bomb-canvas-wrap canvas {
            width: 100%;
            height: 100%;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            background: var(--card-background);
            cursor: crosshair;
            display: block;
        }

        @media (max-width: 600px) {
            .stack-app .tab-panel { padding: 16px; }
            .stack-app .gen-display { padding: 24px 16px; }
            .stack-app .gen-display .gen-value { font-size: 26px; }
            .stack-app .gen-controls { gap: 8px; }
            .stack-app .gen-controls input { width: 60px; }
        }
    

        .stack-app {
            --lab-ink: var(--card-text-color-main);
            --lab-muted: var(--card-text-color-secondary);
            --lab-line: var(--card-separator-color);
            --lab-soft: #eef2f6;
            --lab-paper: var(--card-background);
            --lab-blue: #165dff;
            --lab-blue-dark: #0c3fb4;
            --lab-orange: #f26a2e;
            --lab-red: #c9364f;
            --lab-shadow: 6px 6px 0 #102033;
        }
        .stack-app {
            min-width: 320px;
            background:
                var(--card-background);
            background-size: 24px 24px;
            color: inherit;
        }
        .stack-app .global-nav { border-bottom: 1px solid var(--card-separator-color); background: var(--card-background); }
        .stack-app .tool-hero {
            padding: 54px 20px 72px;
            border-bottom: 1px solid var(--card-separator-color);
            background: var(--card-background);
            text-align: left;
        }
        .stack-app .tool-hero-inner { width: min(1100px, 100%); margin: 0 auto; }
        .stack-app .tool-kicker,
.stack-app .panel-index,
.stack-app .field-label,
.stack-app .result-label {
            font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
            letter-spacing: 0.12em;
            text-transform: uppercase;
        }
        .stack-app .tool-kicker {
            display: inline-flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 14px;
            color: inherit;
            font-size: 12px;
            font-weight: 800;
        }
        .stack-app .tool-kicker::before { width: 28px; height: 3px; background: var(--card-background); content: ""; }
        .stack-app .tool-hero h1 {
            margin: 0;
            color: inherit;
            font-family: var(--base-font-family);
            font-size: clamp(38px, 7vw, 72px);
            line-height: 0.98;
            letter-spacing: -0.04em;
        }
        .stack-app .tool-hero p {
            max-width: 680px;
            margin: 18px 0 0;
            color: inherit;
            font-size: 16px;
            line-height: 1.8;
        }
        .stack-app .hero-status { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
        .stack-app .hero-status span {
            padding: 6px 9px;
            border: 1px solid var(--card-separator-color);
            background: var(--card-background);
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 11px;
            font-weight: 700;
        }
        .stack-app .rn-container {
            width: min(1100px, calc(100% - 32px));
            max-width: none;
            margin: -38px auto 72px;
            padding: 0;
        }
        .stack-app .tab-bar {
            position: relative;
            z-index: 2;
            width: fit-content;
            border: 1px solid var(--card-separator-color);
            background: var(--card-background);
            box-shadow: var(--shadow-l1);
        }
        .stack-app .tab-btn {
            min-width: 190px;
            padding: 14px 20px;
            border-right: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius) !important;
            background: var(--card-background);
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 13px;
            letter-spacing: 0.03em;
        }
        .stack-app .tab-btn:last-child { border-right: 0; }
        .stack-app .tab-btn:hover:not(.active) { background: var(--card-background); color: inherit; }
        .stack-app .tab-btn.active { background: var(--card-background); color: inherit; }
        .stack-app .tab-btn:focus-visible { outline: 3px solid var(--lab-orange); outline-offset: 3px; }
        .stack-app .tab-panel {
            margin-top: 18px;
            padding: 0;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            background: var(--card-background);
            box-shadow: var(--shadow-l1);
        }
        .stack-app .panel-head {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 18px;
            padding: 22px 24px;
            border-bottom: 1px solid var(--card-separator-color);
        }
        .stack-app .panel-index { color: inherit; font-size: 11px; font-weight: 800; }
        .stack-app .panel-head h2 { margin: 5px 0 0; color: inherit; font-size: 22px; }
        .stack-app .panel-head p {
            max-width: 480px;
            margin: 0;
            color: inherit;
            font-size: 13px;
            line-height: 1.7;
            text-align: right;
        }
        .stack-app .generator-workbench {
            display: grid;
            grid-template-columns: minmax(280px, 0.8fr) minmax(340px, 1.2fr);
            min-height: 430px;
        }
        .stack-app .control-deck {
            padding: 26px 24px;
            border-right: 1px solid var(--card-separator-color);
            background: var(--card-background);
        }
        .stack-app .control-deck h3,
.stack-app .result-deck h3 { margin: 0 0 18px; color: inherit; font-size: 14px; }
        .stack-app .gen-controls,
.stack-app .bomb-controls {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 14px;
            margin: 0;
        }
        .stack-app .field { display: flex; min-width: 0; flex-direction: column; gap: 7px; }
        .stack-app .field-label { color: inherit; font-size: 10px; font-weight: 800; }
        .stack-app .gen-controls input,
.stack-app .bomb-controls input {
            width: 100%;
            min-height: 44px;
            padding: 10px 12px;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            background: var(--card-background);
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 15px;
            text-align: left;
        }
        .stack-app .gen-controls input:focus,
.stack-app .bomb-controls input:focus {
            border-color: var(--card-separator-color);
            outline: 3px solid rgba(22, 93, 255, 0.14);
        }
        .stack-app .input-note { margin: 14px 0 0; color: inherit; font-size: 12px; line-height: 1.6; }
        .stack-app .gen-btns,
.stack-app .bomb-btns {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 8px;
            margin-top: 24px;
        }
        .stack-app .gen-btns button,
.stack-app .bomb-btns button,
.stack-app .btn-restart,
.stack-app .utility-btn {
            min-height: 44px;
            padding: 10px 13px;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            background: var(--card-background);
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 12px;
            font-weight: 800;
            cursor: pointer;
            transition: transform 0.12s, box-shadow 0.12s, background 0.12s;
        }
        .stack-app .gen-btns button:hover,
.stack-app .bomb-btns button:hover,
.stack-app .btn-restart:hover,
.stack-app .utility-btn:hover:not(:disabled) {
            transform: translate(-2px, -2px);
            box-shadow: var(--shadow-l1);
        }
        .stack-app .gen-btns button:active,
.stack-app .bomb-btns button:active,
.stack-app .btn-restart:active,
.stack-app .utility-btn:active {
            transform: translate(0, 0);
            box-shadow: none;
        }
        .stack-app .btn-gen-int,
.stack-app .btn-mode-int { background: var(--card-background) !important; color: inherit !important; }
        .stack-app .btn-gen-float { background: var(--card-background) !important; }
        .stack-app .btn-gen-complex,
.stack-app .btn-mode-complex { background: var(--card-background) !important; }
        .stack-app .result-deck { display: flex; min-width: 0; flex-direction: column; padding: 26px 24px; }
        .stack-app .result-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
        .stack-app .result-label { color: inherit; font-size: 10px; font-weight: 800; }
        .stack-app .utility-btn { min-height: 34px; padding: 7px 10px; }
        .stack-app .utility-btn:disabled { border-color: var(--card-separator-color); color: inherit; cursor: not-allowed; }
        .stack-app .gen-display {
            flex: 1;
            min-height: 250px;
            margin: 14px 0 0;
            padding: 28px;
            border: 1px solid var(--card-separator-color);
            border-radius: var(--card-border-radius);
            background: var(--card-background);
            background-size: 100% 28px;
        }
        .stack-app .gen-display .gen-value {
            overflow-wrap: anywhere;
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: clamp(32px, 6vw, 58px);
            line-height: 1.1;
        }
        .stack-app .gen-grid { align-content: center; align-items: center; gap: 8px; }
        .stack-app .gen-grid span {
            padding: 6px 8px;
            border: 1px solid var(--card-separator-color);
            background: var(--card-background);
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 13px;
        }
        .stack-app .feedback { min-height: 22px; margin-top: 12px; color: inherit; font-size: 12px; line-height: 1.6; }
        .stack-app .feedback.error { color: var(--stack-danger); font-weight: 700; }
        .stack-app .feedback.success { color: var(--stack-success); font-weight: 700; }
        .stack-app .bomb-workbench { display: grid; grid-template-columns: 290px minmax(0, 1fr); }
        .stack-app .bomb-sidebar { padding: 24px; border-right: 1px solid var(--card-separator-color); background: var(--card-background); }
        .stack-app .bomb-controls { grid-template-columns: 1fr; }
        .stack-app .bomb-btns { grid-template-columns: 1fr; margin-top: 18px; }
        .stack-app .bomb-console { margin-top: 20px; border: 1px solid var(--card-separator-color); background: var(--card-background); color: inherit; }
        .stack-app .bomb-status {
            min-height: 76px;
            margin: 0;
            padding: 14px;
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 12px;
            line-height: 1.65;
            text-align: left;
        }
        .stack-app .bomb-count {
            margin: 0;
            padding: 9px 14px;
            border-top: 1px solid var(--card-separator-color);
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 11px;
            text-align: left;
        }
        .stack-app .bomb-restart { margin-top: 12px !important; margin-bottom: 0 !important; }
        .stack-app .btn-restart { width: 100%; background: var(--card-background); color: inherit; }
        .stack-app .bomb-board { min-width: 0; padding: 24px; }
        .stack-app .board-ruler {
            display: flex;
            justify-content: space-between;
            margin-bottom: 12px;
            color: inherit;
            font-family: "Cascadia Code", Consolas, monospace;
            font-size: 10px;
            letter-spacing: 0.08em;
        }
        .stack-app .bomb-canvas-wrap { max-width: 620px; border: 1px solid var(--card-separator-color); background: var(--card-background); }
        .stack-app .bomb-canvas-wrap canvas { border: 0; border-radius: var(--card-border-radius); background: transparent; cursor: crosshair; touch-action: manipulation; }
        .stack-app footer { color: inherit; }
        @media (max-width: 800px) {
            .stack-app .tool-hero { padding: 42px 18px 64px; }
            .stack-app .rn-container { width: min(100% - 24px, 680px); }
            .stack-app .tab-bar { width: 100%; }
            .stack-app .tab-btn { min-width: 0; padding-inline: 10px; }
            .stack-app .generator-workbench,
.stack-app .bomb-workbench { grid-template-columns: 1fr; }
            .stack-app .control-deck,
.stack-app .bomb-sidebar { border-right: 0; border-bottom: 1px solid var(--card-separator-color); }
            .stack-app .panel-head { flex-direction: column; }
            .stack-app .panel-head p { text-align: left; }
        }
        @media (max-width: 520px) {
            .stack-app .tool-hero h1 { font-size: 42px; }
            .stack-app .hero-status { display: none; }
            .stack-app .rn-container { margin-top: -28px; }
            .stack-app .tab-btn { font-size: 11px; }
            .stack-app .panel-head,
.stack-app .control-deck,
.stack-app .result-deck,
.stack-app .bomb-sidebar,
.stack-app .bomb-board { padding: 18px; }
            .stack-app .gen-controls,
.stack-app .gen-btns { grid-template-columns: 1fr; }
            .stack-app .gen-display { min-height: 200px; padding: 18px; }
            .stack-app .gen-grid span { font-size: 12px; }
        }
        @media (prefers-reduced-motion: reduce) {
            .stack-app *,
.stack-app *::before,
.stack-app *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
        }
    