:root{color-scheme:dark;--ink:#080d15;--panel:rgba(10,16,25,.9);--line:rgba(162,184,213,.16);--text:#f2f6fb;--muted:#8492a5;--blue:#71a7f4}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{width:100%;min-height:100%;margin:0;background:var(--ink)}
body.ttapp{min-height:100svh;overflow:hidden;color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,input{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
.ttapp-topbar{position:fixed;z-index:40;top:0;right:0;left:0;display:grid;height:calc(62px + env(safe-area-inset-top));grid-template-columns:44px 1fr 60px;align-items:end;padding:env(safe-area-inset-top) 16px 10px;background:linear-gradient(180deg,rgba(6,10,16,.82),rgba(6,10,16,0));pointer-events:none}
.ttapp-topbar>*{pointer-events:auto}
.ttapp-back,.ttapp-ghost{display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--line);border-radius:10px;background:rgba(9,14,22,.6);color:#dce5f1;text-decoration:none;backdrop-filter:blur(14px)}
.ttapp-ghost{width:auto;padding:0 10px;font-size:.66rem;font-weight:800}
.ttapp-scanbrand{display:flex;align-items:center;justify-content:center;gap:8px;color:#eef3fa;font-size:.75rem;font-weight:800;text-decoration:none}
.ttapp-scanbrand img{width:22px;height:22px}
.ttscan{position:relative;height:100svh;min-height:580px;overflow:hidden;background:#05080d}
.ttscan-stage{position:absolute;inset:0;background:linear-gradient(145deg,#132137,#080d15)}
.ttscan-stage video{display:block;width:100%;height:100%;object-fit:cover}
.ttscan-camera-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,8,13,.32) 0%,transparent 25%,transparent 62%,rgba(4,8,13,.72) 100%);pointer-events:none}
.ttscan-intro{position:fixed;z-index:5;top:calc(82px + env(safe-area-inset-top));left:50%;display:flex;flex-direction:column;align-items:center;transform:translateX(-50%);text-align:center;pointer-events:none}
.ttscan-intro span{color:#a9c9f6;font-size:.6rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.ttscan-intro strong{margin-top:5px;color:#fff;font-size:clamp(1.35rem,5vw,2.1rem);letter-spacing:-.04em;text-shadow:0 2px 18px rgba(0,0,0,.45)}
.ttscan-hud{position:absolute;inset:0;pointer-events:none}
.ttscan-reticle{position:absolute;top:47%;left:50%;width:min(78vw,620px);height:min(23vw,170px);transform:translate(-50%,-50%);border:1px solid rgba(211,226,246,.22);border-radius:16px;box-shadow:0 0 0 9999px rgba(3,7,12,.32)}
.ttscan-reticle i{position:absolute;width:28px;height:28px;border-color:#dcecff;border-style:solid;filter:drop-shadow(0 0 8px rgba(113,167,244,.55))}
.ttscan-reticle i:nth-child(1){top:-1px;left:-1px;border-width:3px 0 0 3px;border-radius:15px 0 0}
.ttscan-reticle i:nth-child(2){top:-1px;right:-1px;border-width:3px 3px 0 0;border-radius:0 15px 0 0}
.ttscan-reticle i:nth-child(3){right:-1px;bottom:-1px;border-width:0 3px 3px 0;border-radius:0 0 15px}
.ttscan-reticle i:nth-child(4){bottom:-1px;left:-1px;border-width:0 0 3px 3px;border-radius:0 0 0 15px}
.ttscan-reticle:after{content:"";position:absolute;top:50%;left:5%;width:90%;height:1px;background:linear-gradient(90deg,transparent,#8fc0ff,transparent);animation:sweep 2.4s ease-in-out infinite}
@keyframes sweep{0%,100%{transform:translateY(-48px);opacity:.25}50%{transform:translateY(48px);opacity:.9}}
.ttscan-hint{position:absolute;top:calc(47% + min(16vw,112px));left:50%;width:max-content;max-width:88%;transform:translateX(-50%);padding:7px 11px;border-radius:8px;background:rgba(5,9,15,.6);color:#d7e0ec;font-size:.69rem;font-weight:700;text-align:center;backdrop-filter:blur(10px)}
.ttscan-chip{position:absolute;top:calc(47% - 14px);left:50%;transform:translate(-50%,-50%);padding:7px 12px;border-radius:8px;background:rgba(5,9,15,.78);font-size:.78rem;font-weight:900;letter-spacing:.05em}
.ttscan-capture{position:fixed;z-index:20;right:18px;bottom:calc(84px + env(safe-area-inset-bottom));left:18px;display:flex;flex-direction:column;align-items:center;gap:10px}
.ttscan-capture-btn{display:flex;width:min(100%,460px);min-height:56px;align-items:center;justify-content:center;gap:11px;border:0;border-radius:13px;background:#eef4fc;color:#08101d;font-size:.78rem;font-weight:900;box-shadow:0 18px 50px rgba(0,0,0,.34)}
.ttscan-capture-btn:active{transform:scale(.985)}
.ttscan-capture-icon{width:17px;height:17px;border:2px solid #142033;border-radius:5px;box-shadow:inset 0 0 0 3px #eef4fc}
.ttscan-manual-link{min-height:34px;padding:0 10px;border:0;background:transparent;color:#bdc9d8;font-size:.68rem;font-weight:750;text-decoration:underline;text-underline-offset:3px}
.ttscan-zoom{position:fixed;z-index:21;right:18px;bottom:calc(166px + env(safe-area-inset-bottom));left:18px;width:min(calc(100% - 36px),420px);margin:auto;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(7,12,19,.72);backdrop-filter:blur(16px)}
.ttscan-zoom-top,.ttscan-zoom-row{display:flex;align-items:center}.ttscan-zoom-top{justify-content:space-between;color:#aab7c8;font-size:.62rem;font-weight:800}.ttscan-zoom-row{gap:10px;margin-top:7px}
.ttscan-zoom button{width:30px;height:30px;border:0;border-radius:7px;background:rgba(255,255,255,.07);color:white}.ttscan-zoom input{min-width:0;flex:1;accent-color:#8bbafd}
.ttscan-sheet,.ttscan-permission,.ttscan-auth,.ttscan-confirm,.ttscan-manual,.ttscan-card{position:fixed;z-index:50;right:14px;bottom:calc(76px + env(safe-area-inset-bottom));left:14px;width:min(calc(100% - 28px),560px);max-height:calc(100svh - 100px);margin:auto;padding:16px;border:1px solid var(--line);border-radius:16px;background:rgba(9,15,24,.94);box-shadow:0 24px 70px rgba(0,0,0,.55);backdrop-filter:blur(22px);overflow:auto}
.ttscan-permission h2,.ttscan-auth h2,.ttscan-confirm h2{margin:5px 0 6px;font-size:1.25rem;line-height:1.05;letter-spacing:-.03em}.ttscan-permission p,.ttscan-confirm p{margin:0 0 13px;color:var(--muted);font-size:.72rem;line-height:1.45}
.ttscan-result-badge{color:#8db8f4;font-size:.59rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase}
.ttscan-confirm{display:grid;grid-template-columns:130px minmax(0,1fr);gap:14px}
.ttscan-capture-preview{width:100%;height:100%;min-height:150px;border-radius:11px;object-fit:cover;background:#111a27}
.ttscan-confirm-body{min-width:0}
.ttscan-confirm input,.ttscan-manual input{width:100%;min-height:50px;padding:0 13px;border:1px solid rgba(155,183,220,.2);border-radius:10px;outline:0;background:rgba(255,255,255,.035);color:white;font-size:1.25rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.ttscan-confirm input:focus,.ttscan-manual input:focus{border-color:rgba(113,167,244,.65);box-shadow:0 0 0 3px rgba(113,167,244,.1)}
.ttscan-confirm-actions,.ttscan-auth-actions,.ttscan-actions{display:flex;gap:7px;margin-top:10px}
.ttscan-btn{display:flex;min-height:42px;flex:1;align-items:center;justify-content:center;padding:0 12px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.04);color:#dae3ef;font-size:.68rem;font-weight:850;text-decoration:none}
.ttscan-btn.primary{border-color:transparent;background:#edf3fb;color:#09111d}
.ttscan-suggestions{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.ttscan-suggestions button{padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:rgba(255,255,255,.04);color:#cbd7e6}
.ttscan-manual label{display:block;margin-bottom:8px;color:#9eacbd;font-size:.64rem;font-weight:800}.ttscan-manual-row{display:flex;gap:8px}.ttscan-manual-row button{padding:0 15px;border:0;border-radius:10px;background:#edf3fb;color:#09111d;font-weight:850}
.ttscan-card-top{display:flex;gap:10px}.ttscan-img{width:90px;height:65px;border-radius:9px;object-fit:cover}.ttscan-tail{font-size:1.5rem;font-weight:850}.ttscan-sub,.ttscan-warn,.ttscan-foot{color:var(--muted);font-size:.68rem}.ttscan-select{min-width:0;flex:1;border:1px solid var(--line);border-radius:9px;background:#0b111b;color:white}
.ttscan-toast{position:fixed;z-index:80;bottom:calc(88px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);padding:9px 12px;border-radius:8px;background:#edf3fb;color:#08101d;font-size:.7rem;font-weight:800}
.ttscan-nav{position:fixed;z-index:35;right:0;bottom:0;left:0;display:flex;height:calc(62px + env(safe-area-inset-bottom));align-items:flex-start;justify-content:center;gap:4px;padding:8px 12px env(safe-area-inset-bottom);border-top:1px solid rgba(150,175,207,.1);background:rgba(7,11,18,.9);backdrop-filter:blur(18px)}
.ttscan-nav a{display:flex;min-height:38px;align-items:center;padding:0 12px;border-radius:8px;color:#77869a;font-size:.6rem;font-weight:800;text-decoration:none}.ttscan-nav a.is-active{background:rgba(113,167,244,.11);color:#b8d5fb}
@media(max-width:600px){.ttscan-intro{top:calc(72px + env(safe-area-inset-top))}.ttscan-reticle{width:84vw;height:25vw}.ttscan-confirm{grid-template-columns:1fr}.ttscan-capture-preview{height:92px;min-height:0}.ttscan-nav{justify-content:space-around}.ttscan-nav a{padding:0 8px}.ttscan-actions{flex-wrap:wrap}.ttscan-actions .ttscan-select{flex-basis:100%;min-height:40px}}
@media(min-width:900px){.ttscan-reticle{top:48%;width:min(58vw,720px);height:min(14vw,170px)}.ttscan-hint{top:calc(48% + 105px)}}