:root{--bg:#07070d;--card:rgba(255,255,255,.06);--bd:rgba(255,255,255,.13);--tx:#f2f3f8;--mut:#9aa0b5;--a:#25f4ee;--b:#fe2c55;--r:16px}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--tx);line-height:1.5;
background:radial-gradient(900px 500px at 10% -10%,rgba(254,44,85,.28),transparent),radial-gradient(800px 500px at 100% 0,rgba(37,244,238,.2),transparent),var(--bg);background-attachment:fixed}
a{color:var(--a)}
.top{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;max-width:1100px;width:100%;margin:0 auto}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.15rem;color:var(--tx);text-decoration:none}
.top nav a{margin-left:16px;color:var(--mut);text-decoration:none}.top nav a:hover{color:var(--tx)}
.wrap{flex:1;width:100%;max-width:560px;margin:0 auto;padding:12px 18px 40px}
.hero{text-align:center;padding:28px 0 20px;animation:rise .7s ease both}
h1{font-size:clamp(1.9rem,6vw,2.7rem);margin:0 0 8px;background:linear-gradient(90deg,var(--a),var(--b));-webkit-background-clip:text;background-clip:text;color:transparent}
h2{margin:0 0 12px}
.sub{color:var(--mut);margin:0 0 22px}
.glass{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 40px rgba(0,0,0,.35)}
.form{padding:22px;text-align:left}
.track{margin-top:26px;animation:rise .9s ease both}
label{display:block;font-size:.85rem;color:var(--mut);margin:12px 0 6px}
input,select,textarea{width:100%;padding:13px 16px;border-radius:999px;border:1px solid var(--bd);background:rgba(0,0,0,.35);color:var(--tx);font:inherit;outline:none;transition:.2s}
textarea{border-radius:var(--r);resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--a);box-shadow:0 0 0 3px rgba(37,244,238,.15)}
input.bad{border-color:var(--b)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.btn{display:inline-block;padding:12px 22px;border-radius:999px;border:1px solid var(--bd);background:var(--card);color:var(--tx);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;transition:transform .15s,opacity .2s}
.btn:hover{transform:translateY(-2px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn.primary{width:100%;margin-top:18px;border:0;background:linear-gradient(90deg,var(--b),#ff6a3d);letter-spacing:.06em;padding:15px}
.btn.sm{padding:6px 14px;font-size:.85rem}.btn.danger{background:rgba(254,44,85,.18);border-color:var(--b)}.btn.ok{background:rgba(37,244,138,.15);border-color:#25f48a}
.inline{display:flex;gap:10px}.inline input{flex:1}
.notice{color:#ffcf5c;text-align:center;margin:12px 0 0}
.foot{text-align:center;color:var(--mut);font-size:.8rem;padding:18px}
.badge{display:inline-block;padding:3px 12px;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid var(--bd)}
.b-pending{color:#ffcf5c}.b-approved{color:var(--a)}.b-processing{color:#8ab4ff}.b-completed{color:#25f48a}.b-rejected{color:var(--b)}
.bar{height:8px;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden;margin:10px 0}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--a),var(--b));transition:width .8s}
.res{margin-top:16px;padding:16px;border-radius:var(--r);border:1px solid var(--bd);animation:rise .4s ease both}
.res p{margin:4px 0}
#toasts{position:fixed;top:16px;right:16px;left:16px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;z-index:60;pointer-events:none}
.toast{pointer-events:auto;padding:12px 18px;border-radius:12px;background:#1b1b28;border:1px solid var(--b);animation:rise .3s ease both;max-width:420px}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50;animation:fade .25s}
.modal{max-width:420px;width:100%;padding:28px;text-align:center;background:#12121c;animation:pop .45s cubic-bezier(.2,1.4,.4,1) both}
.check{width:84px;height:84px;margin:0 auto 10px}
.check circle,.check path{fill:none;stroke:#25f48a;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:170;stroke-dashoffset:170;animation:draw .8s .15s ease forwards}
.check path{stroke-dasharray:50;stroke-dashoffset:50;animation-delay:.6s}
.oid{font-family:ui-monospace,Menlo,monospace;font-size:1.5rem;letter-spacing:.08em;padding:12px;border-radius:12px;background:rgba(255,255,255,.07);margin:14px 0}
.row-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}
/* admin */
.adm{max-width:1150px;margin:0 auto;padding:10px 16px 40px;width:100%;flex:1}
.anav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:14px 16px;max-width:1150px;margin:0 auto;width:100%}
.anav a{padding:8px 14px;border-radius:999px;color:var(--mut);text-decoration:none}.anav a.on,.anav a:hover{background:var(--card);color:var(--tx)}
.anav .sp{flex:1}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:14px 0 22px}
.stat{padding:16px}.stat b{display:block;font-size:1.8rem}.stat span{color:var(--mut);font-size:.82rem}
.card{padding:18px;margin-bottom:18px}
.card h2{font-size:1.1rem}
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--bd);white-space:nowrap}
th{color:var(--mut);font-weight:500;font-size:.8rem}
td.url{max-width:260px;overflow:hidden;text-overflow:ellipsis}
.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.filters input,.filters select{width:auto;flex:1;min-width:140px}
.flash{padding:12px 16px;border-radius:12px;margin:10px 0;border:1px solid #25f48a;background:rgba(37,244,138,.1)}.flash.err{border-color:var(--b);background:rgba(254,44,85,.1)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.pager{display:flex;gap:8px;justify-content:center;margin-top:14px}
.chk{display:flex;gap:10px;align-items:center}.chk input{width:auto}
@media(max-width:700px){.grid2{grid-template-columns:1fr}}
