:root{--bg:var(--tg-theme-bg-color,#17212b);--text:var(--tg-theme-text-color,#f5f5f5);--hint:var(--tg-theme-hint-color,#8b9aa8);--card:var(--tg-theme-secondary-bg-color,#232e3c);--accent:var(--tg-theme-button-color,#3390ec);--on-accent:var(--tg-theme-button-text-color,#fff);--green:#4caf50;--amber:#e8a33d;--red:#e5484d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Padauk,Myanmar Text,sans-serif}main{max-width:640px;margin:0 auto;padding:20px 16px 40px}h1{font-size:20px;margin:8px 0 4px}.sub{color:var(--hint);font-size:14px;margin:0 0 20px}.err{color:var(--red)}.cta,button{display:block;width:100%;padding:14px;margin-top:16px;border:0;border-radius:10px;background:var(--accent);color:var(--on-accent);font-size:16px;font-weight:600;text-align:center;text-decoration:none;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--hint);font-weight:400}.row{display:block;margin-bottom:14px}.row .src{display:block;font-size:15px;margin-bottom:6px}.row .src em{color:var(--hint);font-style:normal;margin-left:6px}.row input,textarea{width:100%;border-radius:10px;border:1px solid transparent;color:var(--text);font:inherit;resize:vertical}.line,.row input,textarea{padding:12px;background:var(--card)}.line{border-left:3px solid transparent;border-radius:10px;margin-bottom:14px}.line.green{border-left-color:var(--green)}.line.amber{border-left-color:var(--amber)}.line.red{border-left-color:var(--red)}.line .meta{display:flex;justify-content:space-between;color:var(--hint);font-size:12px;margin-bottom:6px}.line .src{margin:0 0 8px}.line .fit,.line .src{color:var(--hint);font-size:13px}.line .fit{display:flex;align-items:center;gap:6px;margin-top:8px}.line .fit em{margin-left:auto;font-style:normal}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.green{background:var(--green)}.dot.amber{background:var(--amber)}.dot.red{background:var(--red)}.bar{height:6px;background:var(--card);border-radius:3px;overflow:hidden}.bar div{height:100%;background:var(--accent);transition:width .2s}.spinner{width:28px;height:28px;margin:24px auto;border:3px solid var(--card);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}.bar div{transition:none}}