:root{--sky: #EAF6FC;--sky-strong: #7FC4E8;--teal: #2FA69A;--teal-deep: #2B7A8C;--ink: #2B4750;--sun: #F6C453;--coral: #F48B6C;--surface: #FFFFFF;--surface-2: #F7FBFA;--border: #E3EDF2;--text: #2B4750;--text-2: #6C8794;--danger: #D9534F;--success: #3BA776;--radius-s: 8px;--radius-m: 14px;--radius-l: 22px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--shadow-1: 0 1px 3px rgba(43, 71, 80, .08);--shadow-2: 0 4px 16px rgba(43, 71, 80, .12);--font-ui: -apple-system, "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif;--tap-scale: .96;--tap-duration: .12s}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-ui);background:var(--surface-2);color:var(--text);-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100dvh;max-width:720px;margin:0 auto}.app-header{padding:calc(env(safe-area-inset-top) + var(--space-3)) var(--space-4) var(--space-3);background:var(--surface);border-bottom:1px solid var(--border);display:flex;justify-content:center}.app-main{flex:1;overflow-y:auto}.page{padding:var(--space-4);padding-bottom:var(--space-6)}.page-title{font-size:22px;font-weight:600;margin-bottom:var(--space-4)}.btn{font-family:var(--font-ui);font-size:15px;border:none;border-radius:var(--radius-s);padding:10px 16px;cursor:pointer;transition:transform var(--tap-duration) ease,box-shadow var(--tap-duration) ease,background var(--tap-duration) ease}.btn:active{transform:scale(var(--tap-scale))}.btn-primary{background:var(--teal);color:#fff;box-shadow:var(--shadow-1)}.btn-primary:active{background:var(--teal-deep)}.btn-secondary{background:var(--sky);color:var(--teal-deep)}.btn-danger{background:#fbeaea;color:var(--danger)}.btn-ghost{background:transparent;color:var(--text-2)}.hero-card{position:relative;background:var(--sky);border-radius:var(--radius-l);overflow:hidden;box-shadow:var(--shadow-1)}.hero-text{position:relative;z-index:1;padding:var(--space-5) var(--space-5) 84px}.hero-text h1{font-size:22px;font-weight:600;margin-bottom:var(--space-2)}.hero-text p{color:var(--text-2);font-size:15px}.hero-hills{position:absolute;left:0;right:0;bottom:0;width:100%;height:72px}.phase-note{color:var(--text-2);font-size:13px;margin:var(--space-4) var(--space-1)}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}@media (min-width: 560px){.module-grid{grid-template-columns:repeat(3,1fr)}}.module-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);transition:transform var(--tap-duration) ease,box-shadow var(--tap-duration) ease}.module-tile:active{transform:scale(var(--tap-scale));box-shadow:var(--shadow-1)}.module-name{font-size:16px;font-weight:600}.module-badge{align-self:flex-start;font-size:12px;color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:2px 10px}.tabbar{display:flex;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tab-btn{flex:1;font-family:var(--font-ui);font-size:14px;padding:var(--space-3) 0;border:none;background:transparent;color:var(--text-2);cursor:pointer;transition:transform var(--tap-duration) ease,color var(--tap-duration) ease}.tab-btn:active{transform:scale(var(--tap-scale))}.tab-btn.active{color:var(--teal);font-weight:600}.settings-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m);padding:var(--space-4);margin-bottom:var(--space-4)}.settings-group h2{font-size:14px;color:var(--text-2);font-weight:500;margin-bottom:var(--space-3)}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;font-size:15px}.settings-hint{font-size:12px;color:var(--text-2);margin-top:var(--space-2)}.version-row{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:pointer}.version-value{color:var(--teal-deep);font-weight:600}.segmented{display:flex;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-s);padding:3px;gap:3px}.segment{flex:1;font-family:var(--font-ui);font-size:14px;padding:8px 0;border:none;border-radius:6px;background:transparent;color:var(--text-2);cursor:pointer;transition:transform var(--tap-duration) ease,background var(--tap-duration) ease,color var(--tap-duration) ease}.segment:active{transform:scale(var(--tap-scale))}.segment.active{background:var(--surface);color:var(--teal-deep);font-weight:600;box-shadow:var(--shadow-1)}.debug-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b475073;display:flex;align-items:flex-end;justify-content:center;z-index:100}.debug-panel{background:var(--surface);border-radius:var(--radius-l) var(--radius-l) 0 0;width:100%;max-width:720px;max-height:80dvh;display:flex;flex-direction:column;padding:var(--space-4);padding-bottom:calc(env(safe-area-inset-bottom) + var(--space-4))}.debug-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.debug-meta{display:flex;gap:var(--space-4);font-size:12px;color:var(--text-2);margin-bottom:var(--space-3)}.debug-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-3)}.debug-log-list{overflow-y:auto;font-size:12px;border-top:1px solid var(--border)}.debug-log-row{display:flex;gap:var(--space-2);padding:6px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.debug-log-time{color:var(--text-2);font-variant-numeric:tabular-nums}.debug-log-module{color:var(--teal-deep);font-weight:600}.debug-log-data{color:var(--text-2);word-break:break-all}.debug-empty{color:var(--text-2);padding:var(--space-3) 0}.error-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--surface-2);font-family:var(--font-ui)}.error-card{background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-2);padding:var(--space-6) var(--space-5);max-width:420px;text-align:center;display:flex;flex-direction:column;gap:var(--space-3);align-items:center}.error-icon{width:48px;height:48px;border-radius:50%;background:var(--sun);color:var(--ink);font-size:26px;font-weight:700;display:flex;align-items:center;justify-content:center}.error-card h1{font-size:18px}.error-card p{font-size:14px;color:var(--text-2)}.error-code{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-s);padding:6px 12px;font-size:13px;color:var(--teal-deep)}
