:root{--bg:#f6f7f9;--card:#fff;--card-2:#f1f3f6;--line:#e4e7ec;--text:#1a1d23;--muted:#6b7280;--up:#059669;--down:#dc2626;--warn:#b45309;--accent:#2563eb;--radius:12px;--shadow:0 1px 2px #1018280a, 0 1px 3px #1018280f}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overflow-wrap:break-word;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:15px;line-height:1.5;overflow-x:hidden}a{color:inherit;text-decoration:none}.app{max-width:720px;padding:16px 14px calc(84px + env(safe-area-inset-bottom));margin:0 auto}.topbar{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.topbar h1{letter-spacing:-.02em;margin:0;font-size:19px}.topbar .sub{color:var(--muted);font-size:12px}.dot{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot.ok{background:var(--up)}.dot.off{background:#9ca3af}.dot.bad{background:var(--down)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px;padding:14px}.card.tight{padding:12px}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.card-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 10px;font-size:12px;font-weight:600}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;font-weight:600;display:inline-flex}.badge.buy{color:var(--up);background:#e7f6f0}.badge.sell{color:var(--down);background:#fdeaea}.badge.hold{color:var(--muted);background:#eef0f4}.badge.warn{color:var(--warn);background:#fdf3e3}.badge.info{color:var(--accent);background:#e8f0fe}.badge.plain{background:var(--card-2);color:var(--muted)}.up{color:var(--up)}.down{color:var(--down)}.muted{color:var(--muted)}.warn{color:var(--warn)}.mono{font-variant-numeric:tabular-nums}.bar{background:var(--card-2);border-radius:999px;height:5px;overflow:hidden}.bar>span{border-radius:999px;height:100%;display:block}.row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.row:last-child{border-bottom:none}.row .left{min-width:0}.row .right{text-align:right;white-space:nowrap}.sym{letter-spacing:-.01em;font-weight:700}.small{font-size:12px}.xsmall{font-size:11px}.grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.grid.three{grid-template-columns:repeat(3,1fr)}.metric{background:var(--card-2);border-radius:8px;padding:10px}.metric .label{color:var(--muted);margin-bottom:3px;font-size:11px}.metric .value{font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.nav{z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:8px 0 calc(8px + env(safe-area-inset-bottom));background:#fffffff0;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav a{text-align:center;color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-height:44px;padding:2px 0;font-size:11px;display:flex}.nav a.active{color:var(--accent);font-weight:600}.nav .icon{font-size:17px;line-height:1}input[type=text],input[type=password]{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:8px;padding:10px 12px;font-size:16px}input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}button{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#fff;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:500}button:hover:not(:disabled){background:var(--card-2)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#1d4ed8}button.danger{color:var(--down);border-color:#f5c2c2}button.danger:hover:not(:disabled){background:#fdeaea}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.empty{text-align:center;color:var(--muted);padding:36px 16px}.empty .big{margin-bottom:10px;font-size:30px}.error{color:#b42318;background:#fdeaea;border:1px solid #f5c2c2;border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:13px}.notice{color:#8a5a08;background:#fdf6e7;border:1px solid #f3ddb0;border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:13px}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg,#eef0f4 25%,#f7f8fa 50%,#eef0f4 75%) 0 0/200% 100%;height:78px;margin-bottom:12px;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}hr.sep{border:none;border-top:1px solid var(--line);margin:12px 0}.card.group{padding:12px 12px 4px}.group-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:8px;padding-bottom:10px;display:flex}.group-id{flex-wrap:wrap;align-items:center;gap:7px;min-width:0;display:flex}.group-id .sym{font-size:17px}.opinion{border-left:3px solid var(--line);margin-top:10px;padding:10px 0 10px 10px}.opinion+.opinion{border-top:1px dashed var(--line)}.opinion-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.opinion-conf{flex:1;align-items:center;gap:6px;min-width:90px;display:flex}.opinion-conf .bar{flex:1}.opinion-text{margin:7px 0 0}.opinion-text.clamp{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chips{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.meta-row{flex-wrap:wrap;gap:10px;margin-top:8px;display:flex}.link-btn{color:var(--accent);background:0 0;border:none;margin-top:2px;padding:2px 0;font-weight:600}.link-btn:hover:not(:disabled){background:0 0;text-decoration:underline}@media (width<=420px){body{font-size:14px}.app{padding:14px 11px calc(84px + env(safe-area-inset-bottom))}.card{padding:12px}.card.group{padding:11px 11px 3px}.badge{padding:3px 7px;font-size:11px}.grid.three{gap:7px}.metric{padding:8px}.metric .value{font-size:14px}.metric .label{font-size:10px}.topbar h1{font-size:18px}.nav .icon{font-size:16px}}.next-run{justify-content:space-between;align-items:center;gap:10px;display:flex}.countdown{letter-spacing:-.02em;white-space:nowrap;font-size:22px;font-weight:700}.countdown .unit{color:var(--muted);margin-left:1px;font-size:12px;font-weight:600}.countdown .running{color:var(--accent);font-size:15px}
