*,:before,:after{box-sizing:border-box}:root{--brand:#1e3d78;--navy:#1e3d78;--brand-light:#e8eef8;--navy-light:#e8eef8;--brand-mid:#c2d0ed;--warn:#f59e0b;--amber:#f59e0b;--danger:#ef4444;--bg:#f9fafb;--card:#fff;--text:#111827;--muted:#6b7280;--border:#e5e7eb;--radius:12px;--nav-h:60px}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Lato,Noto Serif TC,sans-serif}#root{max-width:430px;min-height:100dvh;margin:0 auto;padding-bottom:80px;position:relative}.font-display{font-family:Cormorant Garamond,Noto Serif TC,serif}.font-num{letter-spacing:-.02em;font-family:Cormorant Garamond,serif;font-weight:600}.font-serif,.font-zh{font-family:Noto Serif TC,serif}.card{background:var(--card);border-radius:12px;box-shadow:0 1px 3px #0000000f}.btn{cursor:pointer;border:none;font-family:Lato,sans-serif;font-weight:700;transition:filter .15s,transform .1s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--brand);color:#fff;text-align:center;border-radius:8px;width:100%;padding:14px;font-size:15px;display:block}.btn-primary:active{filter:brightness(.88)}.btn-secondary{color:var(--brand);border:1.5px solid var(--brand);background:#fff;border-radius:8px;padding:9px 14px;font-size:13px}.btn-ghost{background:var(--brand-light);color:var(--brand);border:none;border-radius:8px;padding:9px 14px;font-size:13px}.btn-danger{color:var(--danger);background:#fff;border:1.5px solid #fecaca;border-radius:8px;padding:6px 11px;font-size:12px}.btn-outline{color:var(--brand);border:1.5px solid var(--brand);background:#fff;border-radius:8px;padding:9px 14px;font-size:13px}.btn-full{width:100%}.btn-sm{padding:6px 12px;font-size:12px}.btn-icon{background:var(--brand-light);color:var(--brand);cursor:pointer;border:none;border-radius:10px;align-items:center;gap:5px;padding:8px 12px;font-family:Lato,sans-serif;font-size:12px;font-weight:700;display:flex}.prog{background:#f3f4f6;border-radius:9999px;overflow:hidden}.prog-fill{border-radius:9999px;transition:width .3s ease-in-out}.bar-ok{background:var(--brand)}.bar-warn{background:var(--warn)}.bar-over{background:var(--danger)}.progress-wrap{background:#e5e7eb;border-radius:999px;overflow:hidden}.progress-bar{border-radius:999px;height:100%;transition:width .3s ease-in-out}.progress-bar.blue{background:var(--brand)}.progress-bar.amber{background:var(--warn)}.progress-bar.danger{background:var(--danger)}.page{padding-bottom:calc(var(--nav-h) + 16px);min-height:100dvh}.page-header{z-index:30;background:#fff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}.page-body{flex-direction:column;gap:12px;padding:14px;display:flex}.bottom-nav{width:100%;max-width:430px;height:calc(60px + env(safe-area-inset-bottom));z-index:40;background:#fff;border-top:1px solid #e5e7eb;align-items:flex-start;padding-top:6px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{cursor:pointer;color:var(--muted);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:4px 0;text-decoration:none;transition:color .15s;display:flex}.nav-item svg{color:var(--muted);width:20px;height:20px;transition:color .15s}.nav-item span{color:var(--muted);font-family:Lato,sans-serif;font-size:10px;font-weight:700;transition:color .15s}.nav-item.active svg,.nav-item.active span{color:var(--brand)}.nav-center{position:relative;top:-6px}.nav-center svg{width:24px!important;height:24px!important}.log-item+.log-item{border-top:1px solid #f3f4f6}.input{border:1.5px solid #e5e7eb;border-radius:10px;outline:none;width:100%;padding:10px 12px;font-family:Lato,sans-serif;font-size:14px;transition:border-color .15s}.input:focus{border-color:var(--brand)}.label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:12px;font-weight:700;display:block}.modal-overlay{z-index:200;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--card);padding:20px 20px calc(24px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;flex-direction:column;gap:14px;width:100%;max-width:430px;max-height:90dvh;display:flex;overflow-y:auto}.modal-title{margin:0;font-family:Noto Serif TC,serif;font-size:16px;font-weight:700}.divider{background:var(--border);height:1px}.text-muted{color:var(--muted);font-size:13px}.text-danger{color:var(--danger)}
