/* Public full-stack enhancements — follows the existing deep sea theme */
.tb-standalone{background:#0c131a;color:#e2e8ed;font-family:system-ui,"Microsoft YaHei",sans-serif;margin:0;min-height:100vh}
.tb-standalone a{color:#dfaa73;text-decoration:none}.tb-standalone a:hover{text-decoration:underline}
.tb-standalone h1,.tb-standalone h2,.tb-comments h2{font-family:"Noto Serif SC","Source Han Serif SC",serif;font-weight:500}
.tb-top{padding:25px max(5vw,18px);border-bottom:1px solid #2d3c46;display:flex;gap:26px;font-size:13px}
.tb-wrap{max-width:1040px;margin:50px auto;padding:0 25px}
.tb-kicker{font-size:12px;letter-spacing:.12em;color:#dfaa73}.tb-standalone h1{font-size:38px;margin:10px 0}.tb-intro{color:#9fb1bd;font-size:15px;line-height:2}
.tb-columns-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin:38px 0}
.tb-column-card{display:block;border:1px solid #30414d;background:#13202b;padding:22px;border-radius:var(--radius-ui,4px);min-width:0}
.tb-column-card img{width:100%;height:185px;object-fit:cover;margin:0 0 18px}
.tb-column-card small{display:block;color:#dfaa73;font-size:13px;letter-spacing:.03em;font-variant-numeric:tabular-nums}
.tb-column-card h2{font-size:20px;color:#e8edf0}.tb-column-card h2 a{color:inherit}
.tb-column-card p{color:#a1b0ba;font-size:14px;line-height:1.9}
.tb-comments{max-width:780px;margin:40px 0 70px;padding-top:25px;border-top:1px solid #31424f}
.tb-comments h2{font-size:23px;margin:0 0 14px}.tb-muted{color:#92a5b0;font-size:13px;margin:10px 0 20px}
.tb-comment-form{border:1px solid rgba(230,236,242,.1);background:rgba(18,30,41,.5);padding:20px;margin:20px 0 26px;border-radius:var(--radius-ui,4px);display:grid;gap:12px}
.tb-comment-title{font-size:15px;font-weight:600;color:#dfaa73}
.tb-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.tb-comment-form input:not([type=checkbox]),.tb-comment-form textarea{
background:#0b151e;border:1px solid #374855;color:#e5eaed;padding:10px 12px;outline:none;border-radius:var(--radius-ui,4px);width:100%;font-size:14px;min-height:44px;min-width:0;box-sizing:border-box;transition:border-color 150ms}
.tb-comment-form input:focus,.tb-comment-form textarea:focus{border-color:#dfaa73}
.tb-comment-form textarea{resize:vertical;min-height:80px}
/* 笔记页的筛选行去掉方框：只保留每个控件自身的一条单底线，不叠容器双底线，
   选中与聚焦时底线转暖琥珀色，下拉菜单显式深色底避免白底白字。 */
.tb-directory-controls{
  display:grid;
  grid-template-columns:minmax(0,1.65fr) minmax(0,1fr) minmax(0,1.35fr) minmax(0,0.95fr);
  gap:10px 24px;
  align-items:end;
}
.tb-directory-controls input,.tb-directory-controls select{
  background:transparent;border:0;border-bottom:1px solid #2e3e4a;border-radius:0;
  padding:10px 2px;min-height:44px;color:#e8eef4;font:inherit;font-size:14px;width:100%;min-width:0;
  box-sizing:border-box;outline:none;color-scheme:dark;
  transition:border-color 150ms ease,color 150ms ease;
}
.tb-directory-controls input::-webkit-search-cancel-button{appearance:none;-webkit-appearance:none}
.tb-directory-controls select{
  /* Native popups can use the select's background, not the surrounding page.
     Keep it opaque even on the fallback path: transparent + pale text can
     produce a white-on-white menu in Windows browsers. */
  appearance:none;-webkit-appearance:none;padding-right:22px;cursor:pointer;
  background-color:#0c131a;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23acbac6' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 2px center;background-size:14px;
}
.tb-directory-controls select option{background:#0e1720;color:#e8eef4;font:inherit}
/* Use the browser's stylable picker when available, retaining the actual
   select (labels, native keyboard handling and input events) rather than
   replacing it with a second JavaScript widget. */
@supports (appearance:base-select){
  .tb-directory-controls select,.tb-directory-controls select::picker(select){appearance:base-select}
  .tb-directory-controls select{align-items:center}
  .tb-directory-controls select::picker-icon{display:none}
  .tb-directory-controls select::picker(select){
    background:#13202b;color:#e8eef4;color-scheme:dark;
    border:0;border-radius:var(--radius-ui,4px);padding:6px;
    margin-block-start:6px;max-block-size:min(360px,70vh);
    min-inline-size:max(anchor-size(self-inline),180px);
    max-inline-size:calc(100vw - 32px);overflow:auto;
    box-shadow:0 10px 26px rgba(0,0,0,.24);
  }
  .tb-directory-controls select option{
    display:flex;align-items:center;gap:8px;min-block-size:44px;box-sizing:border-box;
    background:#13202b;padding:10px 12px;border-radius:var(--radius-ui,4px);line-height:1.5;cursor:pointer;
  }
  .tb-directory-controls select option:checked{background:#25303b;color:#dfaa73}
  .tb-directory-controls select option:hover,
  .tb-directory-controls select option:focus-visible{background:#2c3c49;color:#f4f8fb;outline:none}
  .tb-directory-controls select option::checkmark{color:inherit}
}
.tb-directory-controls input::placeholder{color:#7f929e}
.tb-directory-controls input:focus,.tb-directory-controls select:focus,
.tb-directory-controls input:focus-visible,.tb-directory-controls select:focus-visible{
  border-bottom-color:#dfaa73;color:#f4f8fb;outline:none;
}
.tb-submit{justify-self:start;border:1px solid #d7a26d;background:#3e3025;color:#f6d4ab;min-height:44px;padding:10px 22px;font-size:14px;font-weight:500;border-radius:var(--radius-ui,4px);display:inline-flex;align-items:center;justify-content:center}
.tb-submit:disabled{opacity:.45;cursor:not-allowed}.tb-comment-feedback{font-size:13px;color:#dfaa73}
.tb-honeypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important}
.tb-comment{padding:18px 0;border-bottom:1px solid #30404d;color:#dae1e5}
.tb-comment-name{font-size:14px;font-weight:600}.tb-comment-time{font-size:12px;color:#8295a1;font-variant-numeric:tabular-nums}
.tb-comment-body{font-size:14px;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:6px}
.tb-comment .tb-reply{margin:14px 0 0 18px;padding-left:15px;border-left:1px solid #dfaa7377}
.tb-owner{border:1px solid #dfaa73;color:#dfaa73;padding:2px 6px;margin-left:5px;font-size:12px;border-radius:var(--radius-ui,4px)}
.tb-site,.tb-comment-source{color:#dfaa73;font-size:13px}
.tb-comment-source{display:block;margin-top:8px}
.tb-text-button,.tb-link{border:0;background:none;color:#dfaa73;padding:6px 0;cursor:pointer;font-size:13px}
.tb-avatar{display:block;width:100%;height:100%;object-fit:cover;object-position:center 14%;background:#101d28;transform-origin:center 40%;}
/* --------------------------------------------------------------------------
   博主名片 · 键帽图标栏
   44px 触控目标、4px 建筑微圆角、深海磨砂底与暖琥珀点亮——与全站同一套语言。
   纯 CSS 提示签（data-tip），鼠标与键盘 focus-visible 都会浮现。
   -------------------------------------------------------------------------- */
.tb-icon-btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;min-width:44px;min-height:44px;padding:0;margin:0;
  border:1px solid rgba(230,236,242,.12);border-radius:4px;
  background:rgba(19,32,44,.85);color:#c4d0da;text-decoration:none;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:border-color 180ms ease,background-color 180ms ease,color 180ms ease,
             transform 240ms cubic-bezier(0.16,1,0.3,1),box-shadow 180ms ease;
}
.tb-icon-btn svg{width:20px;height:20px;flex:none;display:block;fill:none;stroke:currentColor;
  stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.tb-icon-btn:focus-visible{outline:2px solid #dfaa73;outline-offset:2px}
.tb-icon-btn[data-copied="true"]{border-color:rgba(223,170,115,.58);background:rgba(223,170,115,.11);color:#dfaa73}
@media(hover:hover) and (pointer:fine){
  .tb-icon-btn:hover{
    border-color:rgba(223,170,115,.58);background:rgba(223,170,115,.11);color:#dfaa73;
    transform:translateY(-2px);box-shadow:0 5px 14px -8px rgba(0,0,0,.9);
  }
}
.tb-icon-btn:active{transform:scale(.96);transition-duration:140ms}

/* 提示签：从按钮下缘展开的签条（钉在按钮上时永远不覆盖上方的定位文字）；
   首尾按钮向内对齐。卡片与侧栏都不裁剪它。 */
.tb-icon-btn[data-tip]::after{
  content:attr(data-tip);position:absolute;left:50%;top:calc(100% + 4px);z-index:6;
  padding:4px 8px;border-radius:4px;border:1px solid rgba(230,236,242,.14);
  background:#0d1720;color:#eef2f6;font-size:11.5px;line-height:1.45;letter-spacing:.01em;
  box-shadow:0 6px 16px -8px rgba(0,0,0,.95);
  white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,-3px);
  transition:opacity 140ms ease,transform 180ms cubic-bezier(0.16,1,0.3,1);
}
/* 键帽图标栏：首尾按钮的提示签改为向内对齐，窄卡片里也不会溢出画面 */
.profile-actions > :first-child[data-tip]::after{left:0;transform:translate(0,-3px)}
.profile-actions > :last-child[data-tip]::after{left:auto;right:0;transform:translate(0,-3px)}
@media(hover:hover) and (pointer:fine){
  .tb-icon-btn[data-tip]:hover::after{opacity:1;transform:translate(-50%,0)}
  .profile-actions > :first-child[data-tip]:hover::after,
  .profile-actions > :last-child[data-tip]:hover::after{transform:translate(0,0)}
}
.tb-icon-btn[data-tip]:focus-visible::after{opacity:1;transform:translate(-50%,0)}
.profile-actions > :first-child[data-tip]:focus-visible::after,
.profile-actions > :last-child[data-tip]:focus-visible::after{transform:translate(0,0)}

.tb-sr-status{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;
  clip-path:inset(50%)!important;white-space:nowrap!important;margin:-1px!important;padding:0!important;border:0!important}
@media(prefers-reduced-motion:reduce){
  .tb-icon-btn,.tb-icon-btn[data-tip]::after{transition:none}
  .tb-icon-btn:hover{transform:none}
  .tb-icon-btn:active{transform:none}
}
.tb-recent-item{display:flex;align-items:flex-start;gap:10px;margin-top:8px;font-size:14px;line-height:1.6}
.tb-recent-item .tb-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#dfaa73;margin-top:8px;flex:none}
.tb-directory{margin:20px 0 70px}
.tb-directory-results{padding:0;list-style:none}
.tb-directory-item{border-bottom:1px solid #2e3e4a;padding:20px 0;transition:background-color 180ms ease,opacity 180ms ease}
.tb-directory-item:hover{background:rgba(223,170,115,.025)}
.tb-directory-item small{display:block;color:#acbac6;font-size:13px;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.tb-directory-item a{display:block;color:inherit;font-weight:600;font-size:clamp(18px,1.6vw,20px);line-height:1.45;margin-top:8px;text-decoration:none}
.tb-directory-item a:hover{color:#dfaa73}
.tb-directory-item p{color:var(--body-secondary,#c3ced7);line-height:1.8;font-size:15px;margin-top:8px;max-width:68ch}
.tb-read{display:inline-block;color:#dfaa73;font-size:12px;font-variant-numeric:tabular-nums;margin-top:6px}
.tb-chapter-nav{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:15px;border:1px solid #3b4e5a;border-radius:var(--radius-ui,4px);color:#c5cdd1;font-size:13px;margin:22px 0}
.tb-chapter-nav a{color:#dfaa73}
/* Inline text filter on the "全部留言" rule: no box, no border, no caret —
   quiet words that warm to amber when they carry the current scope. */
.tb-activity-filter{display:flex;align-items:baseline;gap:18px;padding:0;margin:0;background:none;border:0;min-height:0;font-size:13.5px;line-height:1.5}
.tb-activity-filter [role="tab"]{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  padding:10px 0;margin:-10px 0;border:0;border-radius:0;background:none;
  color:#8fa1ae;font:inherit;font-size:13.5px;line-height:1.5;letter-spacing:.01em;
  cursor:pointer;-webkit-appearance:none;appearance:none;white-space:nowrap;
  transition:color 180ms ease;
}
/* Touch-sized hit area that never grows the heading rule. */
.tb-activity-filter [role="tab"]::before{content:"";position:absolute;inset:-6px -8px;}
.tb-activity-filter [role="tab"]::after{
  content:"";position:absolute;left:0;right:0;bottom:-10.5px;height:1.5px;border-radius:1px;
  background:#dfaa73;transform:scaleX(0);transform-origin:left center;
}
@media(prefers-reduced-motion:no-preference){.tb-activity-filter [role="tab"]::after{transition:transform 260ms cubic-bezier(0.16,1,0.3,1)}}
@media(hover:hover) and (pointer:fine){.tb-activity-filter [role="tab"]:hover{color:#e6edf3}}
.tb-activity-filter [role="tab"][aria-selected="true"]{color:#dfaa73}
.tb-activity-filter [role="tab"][aria-selected="true"]::after{transform:scaleX(1)}

.tb-submit,.tb-link,.tb-text-button{cursor:pointer;transition:color 160ms ease,border-color 160ms ease,background-color 160ms ease}
.tb-submit:hover:not(:disabled){background:#503a29;border-color:#edc393}.tb-submit:active:not(:disabled){transform:translateY(1px)}
.tb-comment-form :focus-visible{outline:1px solid #dfaa73;outline-offset:3px}
.tb-activity-filter [role="tab"]:focus-visible{outline:1px solid #dfaa73;outline-offset:2px;color:#e6edf3}
.tb-comment[id]{scroll-margin-top:95px}.tb-comment-feedback{min-height:1.5em}.tb-comment-form[aria-busy="true"]{cursor:progress}

@media(max-width:740px){.tb-form-grid{grid-template-columns:1fr}.tb-standalone h1{font-size:30px}.tb-columns-grid{grid-template-columns:1fr}}
@media(max-width:640px){
  .tb-directory-controls{grid-template-columns:1fr 1fr;gap:8px 16px}
  .tb-directory-controls input{grid-column:1 / -1}
  .tb-directory-controls select:first-of-type{grid-row:3;grid-column:1}
  .tb-directory-controls select:last-of-type{grid-row:3;grid-column:2}
  .tb-directory-controls input,.tb-directory-controls select{min-height:44px;font-size:14px;padding:10px 2px}
  .tb-directory-controls select{padding-right:22px}
}

/* ---- 笔记目录：一次性错峰入场 + 画廊级行聚焦 -------------------------------
   The stagger index comes from :nth-child, so the renderer writes no inline
   style at all. Only the first eight rows are staggered; later rows land with
   the batch. Each re-render (open, search, column switch) replays the keyframe,
   which is what makes a filtered list feel alive rather than swapped. */
@media(prefers-reduced-motion:no-preference){
  .tb-directory-results .tb-directory-item{
    animation:tb-item-in 420ms cubic-bezier(0.16,1,0.3,1) backwards;
  }
  .tb-directory-results .tb-directory-item:nth-child(1){animation-delay:0ms}
  .tb-directory-results .tb-directory-item:nth-child(2){animation-delay:40ms}
  .tb-directory-results .tb-directory-item:nth-child(3){animation-delay:80ms}
  .tb-directory-results .tb-directory-item:nth-child(4){animation-delay:120ms}
  .tb-directory-results .tb-directory-item:nth-child(5){animation-delay:160ms}
  .tb-directory-results .tb-directory-item:nth-child(6){animation-delay:200ms}
  .tb-directory-results .tb-directory-item:nth-child(7){animation-delay:240ms}
  .tb-directory-results .tb-directory-item:nth-child(n+8){animation-delay:280ms}
}
@keyframes tb-item-in{
  from{opacity:0;transform:translateY(12px)}
  to{opacity:1;transform:none}
}

.tb-directory-results .tb-directory-item{position:relative}
/* Warm amber rule that grows out of the row on hover/focus, with a 4px lean. */
.tb-directory-results .tb-directory-item::before{
  content:"";position:absolute;left:-14px;top:16px;bottom:16px;width:2px;border-radius:2px;
  background:#dfaa73;transform:scaleY(0);transform-origin:top center;
  transition:transform 280ms cubic-bezier(0.16,1,0.3,1);pointer-events:none;
}
@media(hover:hover) and (pointer:fine){
  .tb-directory-results .tb-directory-item{transition:transform 240ms cubic-bezier(0.22,1,0.36,1),opacity 180ms ease,background-color 180ms ease}
  .tb-directory-results .tb-directory-item:hover,
  .tb-directory-results .tb-directory-item:focus-within{transform:translateX(4px)}
  .tb-directory-results .tb-directory-item:hover::before,
  .tb-directory-results .tb-directory-item:focus-within::before{transform:scaleY(1)}
  /* Gallery focus: siblings recede to 0.66 — readable, clearly behind. */
  .tb-directory-results:has(.tb-directory-item:hover,.tb-directory-item:focus-within) .tb-directory-item:not(:hover,:focus-within){opacity:.66}
}

/* ---- 认可按钮：统一的 140ms 按压微缩 ---- */
.tb-submit,.tb-link,.tb-text-button,.tb-send-actions button,.tb-captcha-refresh{
  transition:color 160ms ease,border-color 160ms ease,background-color 160ms ease,transform 140ms cubic-bezier(0.22,1,0.36,1);
}
.tb-submit:active:not(:disabled),
.tb-text-button:active:not(:disabled),
.tb-send-actions button:active:not(:disabled),
.tb-captcha-refresh:active:not(:disabled){transform:scale(0.98)}
.tb-directory-controls input:focus,.tb-directory-controls select:focus{transition:border-color 150ms ease,background-color 150ms ease}

@media(prefers-reduced-motion:reduce){
  .tb-submit,.tb-link,.tb-text-button,.tb-directory-item{transition:none}
  .tb-activity-filter [role="tab"],.tb-activity-filter [role="tab"]::after{transition:none}
  .tb-submit:active{transform:none}
  .tb-directory-results .tb-directory-item{animation:none}
  .tb-directory-results .tb-directory-item::before{transition:none}
  .tb-directory-results .tb-directory-item:hover,.tb-directory-results .tb-directory-item:focus-within{transform:none}
  .tb-directory-results:has(.tb-directory-item:hover,.tb-directory-item:focus-within) .tb-directory-item:not(:hover,:focus-within){opacity:1}
  .tb-submit:active:not(:disabled),.tb-text-button:active:not(:disabled),
  .tb-send-actions button:active:not(:disabled),.tb-captcha-refresh:active:not(:disabled){transform:none}
}

/* Consent is a send-time action, not a permanent block over the wallpaper. */
html.tb-dialog-open { overflow:hidden; }
.tb-send-dialog { box-sizing:border-box; width:min(480px,calc(100vw - 32px)); max-height:calc(100svh - 32px); margin:auto; padding:0; overflow:auto; color:#e5edf3; background:#101a24; border:1px solid #34434f; border-radius:var(--radius-ui,4px); box-shadow:0 24px 90px rgba(0,0,0,.4); }
.tb-send-dialog::backdrop { background:rgba(3,8,14,.7); backdrop-filter:blur(5px); }
.tb-send-form { display:grid; gap:17px; margin:0; padding:25px; text-align:left; }
.tb-send-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.tb-send-heading h2 { font-size:21px; font-weight:600; letter-spacing:.02em; line-height:1.4; margin:0; }
.tb-send-close { display:grid; place-items:center; min-width:44px; min-height:44px; width:44px; height:44px; margin:-10px -10px 0 0; font-size:24px; color:#a2b2c0; border:0; background:transparent; border-radius:var(--radius-ui,4px); cursor:pointer; transition:color 150ms,background-color 150ms; }
.tb-send-close:hover { color:#f1f5f8; background:rgba(255,255,255,.06); }
.tb-send-intro { font-size:13.5px; line-height:1.8; color:#aab9c5; margin:-5px 0 0; }
.tb-send-rules { padding:0 0 0 17px; margin:0; color:#bdc9d2; font-size:13px; line-height:1.85; }
.tb-send-rules li { margin:0 0 6px; padding-left:3px; }
.tb-send-rules li::marker { color:#dfaa73; }
.tb-send-agree { display:flex; gap:10px; align-items:center; min-height:44px; padding:4px 0; color:#e5edf3; font-size:13.5px; line-height:1.6; cursor:pointer; border-radius:var(--radius-ui,4px); user-select:none; }
.tb-send-agree input { width:18px; height:18px; min-width:18px; min-height:18px; margin:0; flex:none; accent-color:#dfaa73; cursor:pointer; }
.tb-send-captcha { min-width:0; margin:0; padding:16px 0 0; border:0; border-top:1px solid rgba(230,236,242,.1); }
.tb-send-captcha legend { font-size:13.5px; font-weight:500; color:#e5edf3; padding:0 10px 0 0; }
.tb-send-hint { font-size:13px; color:#91a4b3; line-height:1.7; margin:0 0 10px; }
.tb-captcha-row { display:flex; align-items:center; gap:16px; min-height:64px; }
.tb-captcha-image { width:180px; height:64px; border:1px solid rgba(230,236,242,.1); border-radius:var(--radius-ui,4px); object-fit:contain; }
.tb-captcha-refresh { border:0; min-height:44px; min-width:44px; padding:0 12px; background:rgba(223,170,115,.08); color:#dfaa73; font-size:13px; font-weight:500; border-radius:var(--radius-ui,4px); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:background-color 160ms,color 160ms; }
.tb-captcha-refresh:hover { background:rgba(223,170,115,.16); color:#ecc396; }
.tb-captcha-answer { box-sizing:border-box; width:100%; min-height:44px; background:#0c141d; border:1px solid #394a58; border-radius:var(--radius-ui,4px); color:#edf3f7; font-family:inherit; font-size:16px; line-height:1.5; padding:10px 12px; margin-top:12px; letter-spacing:.12em; }
.tb-captcha-answer::placeholder { color:#738796; letter-spacing:0; font-size:13.5px; }
.tb-captcha-loading,.tb-send-feedback { font-size:13px; line-height:1.75; margin:7px 0 0; color:#e1b482; }
.tb-send-feedback { color:#eab2a7; margin:-5px 0 0; }
.tb-captcha-loading:empty,.tb-send-feedback:empty { display:none; }
.tb-send-actions { display:flex; align-items:center; justify-content:flex-end; gap:12px; padding-top:6px; }
.tb-send-actions button { font:inherit; font-size:14px; font-weight:500; min-height:44px; padding:10px 22px; border-radius:var(--radius-ui,4px); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:background-color .15s,color .15s,border-color .15s; }
.tb-send-cancel { background:transparent; border:1px solid #394a58; color:#bdc9d2; }
.tb-send-confirm { border:1px solid #c99764; background:#dfaa73; color:#17120d; font-weight:600!important; }
.tb-send-confirm:hover:not(:disabled) { background:#eabf91; }
.tb-send-cancel:hover:not(:disabled) { border-color:#8599a9; color:#f1f5f8; }
.tb-send-form button:disabled { opacity:.4; cursor:not-allowed; }
.tb-send-form :focus-visible { outline:2px solid #dfaa73; outline-offset:2px; }
.tb-send-dialog[open] { animation:tb-dialog-enter 240ms cubic-bezier(0.16,1,0.3,1) both; }
@keyframes tb-dialog-enter {
  from { opacity:0; transform:translateY(8px) scale(0.98); }
  to { opacity:1; transform:none; }
}
/* The backdrop arrives softer and slower than the panel, so the panel reads as
   landing on top of a surface that is still settling. */
.tb-send-dialog[open]::backdrop { animation:tb-backdrop-in 300ms ease both; }
@keyframes tb-backdrop-in {
  from { background:rgba(3,8,14,0); backdrop-filter:blur(0px); }
  to { background:rgba(3,8,14,.7); backdrop-filter:blur(5px); }
}
@media(max-width:480px) { .tb-send-form { padding:20px; gap:15px; } }
@media(prefers-reduced-motion:reduce) {
  .tb-send-dialog[open] { animation:none; }
  .tb-send-dialog[open]::backdrop { animation:none; }
  .tb-send-actions button { transition:none; }
  .tb-submit,.tb-text-button,.tb-send-actions button,.tb-captcha-refresh { transition:none; }
  .tb-submit:active:not(:disabled),.tb-text-button:active:not(:disabled),
  .tb-send-actions button:active:not(:disabled),.tb-captcha-refresh:active:not(:disabled) { transform:none; }
}
