@import "https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;700;900&family=Nunito:wght@600;700;800;900&display=swap";:root{--bg:#f6efe2;--card:#fffcf4;--card2:#fdf8ec;--line:#e6d9c2;--line2:#f1e7d6;--sink:#e9ddc6;--ink:#2b2519;--ink2:#5b4f3b;--dim:#8a7a5e;--dim2:#9a8b70;--faint:#b0a48b;--orange:#de6f16;--orange-lo:#f09a3e;--orange-dk:#b4560f;--orange-bg:#fcebd8;--green:#5fb870;--green-dk:#2e7d4f;--green-bg:#e4f3e7;--red:#b4453a;--red-bg:#fbe9e6;--blue:#3a85c6;--grey:#c9bca3;--amber:#e0b24a;--chip:#f4ebda;--tabbg:#ede2ce;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Noto Sans TC,Nunito,system-ui,sans-serif}a{color:var(--orange);text-decoration:none}a:hover{color:var(--orange-dk)}input,select,button,textarea{font-family:inherit}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}@keyframes toastin{0%{opacity:0;transform:translateY(6px)}to{opacity:1}}.page{background:radial-gradient(1200px 500px at 50% -200px, #fff7e6 0%, var(--bg) 60%);min-height:100vh;padding-bottom:64px}.topbar{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#f6efe2db;position:sticky;top:0}.topbar-in{flex-wrap:wrap;align-items:center;gap:28px;max-width:1440px;margin:0 auto;padding:14px 28px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand .mark{background:linear-gradient(180deg, var(--orange-lo), var(--orange));width:34px;height:34px;box-shadow:0 2px 0 var(--orange-dk), 0 4px 10px #de6f1659;color:#fff;border-radius:11px;place-items:center;font-family:Nunito,sans-serif;font-size:15px;font-weight:900;display:grid}.brand .name{font-family:Nunito,Noto Sans TC,sans-serif;font-size:18px;font-weight:900}.pills{background:var(--tabbg);border-radius:14px;gap:6px;padding:4px;display:flex}.pills.wide{width:max-content;padding:5px}.pill{color:#7d6e55;cursor:pointer;background:0 0;border:none;border-radius:11px;padding:9px 20px;font-size:13.5px;font-weight:600}.pill.on{background:var(--card);color:var(--ink);font-weight:700;box-shadow:0 2px 6px #46341424}.pill.sm{border-radius:9px;padding:7px 14px;font-size:12.5px}.pill.dark.on{background:var(--ink);color:#fff7e6}.userchip{background:var(--card);border:1px solid var(--line);border-radius:12px;align-items:center;gap:8px;padding:7px 12px;font-size:13px;font-weight:500;display:flex}.userchip .sub{color:var(--dim2);font-size:12px;font-weight:400}.dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;display:inline-block}.dot.live{background:var(--green);animation:2.4s infinite pulseDot;box-shadow:0 0 0 3px #5fb87033}.dot.on{background:var(--green)}.dot.off{background:var(--grey)}.dot.idle{background:var(--amber)}.dot.sm{width:7px;height:7px}.container{max-width:1440px;margin:0 auto;padding:28px}.btn{background:var(--card);border:1px solid var(--line);box-shadow:0 2px 0 var(--line);color:var(--ink);cursor:pointer;border-radius:12px;padding:9px 15px;font-size:13px;font-weight:600}.btn:hover:not(:disabled){border-color:#f0b27a}.btn:active:not(:disabled){box-shadow:none;transform:translateY(2px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg, var(--orange-lo), var(--orange));box-shadow:0 3px 0 var(--orange-dk);color:#fff;border:none;font-weight:700}.btn.dark{background:var(--ink);color:#fff7e6;border:none;font-weight:700;box-shadow:0 3px #14110b}.btn.danger{color:var(--red);background:#fff1ee;border:1px solid #f2cfc8;font-weight:700;box-shadow:0 3px #f2cfc8}.btn.green{color:#fff;background:linear-gradient(#6fc47f,#4ea463);border:none;font-weight:700;box-shadow:0 3px #3d8850}.btn.s{padding:7px 12px;font-size:12.5px}.btn.xs{box-shadow:0 2px 0 var(--line);border-radius:9px;padding:5px 10px;font-size:12px}.chip{background:var(--chip);border:1px solid var(--sink);color:var(--ink2);cursor:pointer;white-space:nowrap;border-radius:11px;padding:8px 13px;font-size:12.5px;font-weight:600}.chip:hover:not(:disabled){background:#efe2cc}.chip:disabled{opacity:.5;cursor:not-allowed}input[type=text],input[type=email],input[type=password],input[type=number],select{border:1px solid var(--line);color:var(--ink);background:#fffefa;border-radius:12px;padding:10px 13px;font-size:13px}input:focus,select:focus{outline-offset:1px;border-color:#f0b27a;outline:2px solid #f0b27a}.num{font-family:Nunito,sans-serif;font-weight:700}.card{background:var(--card);border:1px solid var(--line);box-shadow:0 3px 0 var(--sink);border-radius:20px}.card.pad{padding:18px 22px 20px}.card-title{align-items:center;gap:8px;margin-bottom:12px;font-size:14.5px;font-weight:800;display:flex}.card-title i{background:var(--orange);border-radius:4px;width:6px;height:16px;display:block}.card-title i.blue{background:var(--blue)}.card-title i.green{background:var(--green)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.col{flex-direction:column;gap:16px;display:flex}.grow{flex:1}.muted{color:var(--dim)}.faint{color:var(--faint)}.h1{letter-spacing:.01em;font-size:26px;font-weight:900}.sub{color:var(--dim);margin-top:4px;font-size:13.5px}.wgrid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;display:grid}.wrows{flex-direction:column;gap:10px;display:flex}.wcard{background:var(--card);border:1px solid var(--line);text-align:left;box-shadow:0 3px 0 var(--sink), 0 10px 24px -18px #46341480;cursor:pointer;border-radius:20px;padding:14px;transition:transform .15s,border-color .15s}.wcard:hover{border-color:#f0b27a;transform:translateY(-2px)}.wcard .head{white-space:nowrap;padding:4px 6px 14px}.ch{letter-spacing:-.02em;color:var(--orange);flex-shrink:0;font-family:Nunito,Noto Sans TC,sans-serif;font-size:28px;font-weight:900;line-height:1}.xy{color:var(--dim2);flex-shrink:0;font-family:Nunito,sans-serif;font-size:12.5px;font-weight:700}.mapname{color:var(--ink);text-overflow:ellipsis;min-width:0;font-size:17px;font-weight:700;overflow:hidden}.charname{color:var(--dim2);text-overflow:ellipsis;min-width:0;font-size:12.5px;overflow:hidden}.thumb{aspect-ratio:16/10;background:repeating-linear-gradient(135deg,#e4dac6 0 8px,#dcd1ba 8px 16px);border-radius:14px;place-items:center;display:grid;position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb .ph{color:var(--dim);letter-spacing:.06em;font-family:ui-monospace,Menlo,monospace;font-size:11px}.wrow{text-align:left;background:var(--card);border:1px solid var(--line);width:100%;box-shadow:0 3px 0 var(--sink);cursor:pointer;white-space:nowrap;border-radius:16px;align-items:center;gap:16px;padding:10px 14px 10px 10px;transition:border-color .15s;display:flex}.wrow:hover{border-color:#f0b27a}.wrow .thumb{border-radius:11px;flex-shrink:0;width:132px}.detail{grid-template-columns:minmax(0,1fr) 400px;align-items:start;gap:20px;display:grid}@media (width<=1100px){.detail{grid-template-columns:1fr}}.stage{background:var(--ink);border:1px solid var(--line);box-shadow:0 3px 0 var(--sink), 0 20px 40px -30px #46341499;border-radius:22px;padding:12px}.screen{aspect-ratio:16/10;background:repeating-linear-gradient(135deg,#3a3226 0 10px,#332c21 10px 20px);border-radius:15px;outline:none;place-items:center;display:grid;position:relative;overflow:hidden}.screen video,.screen img{object-fit:contain;background:#000;width:100%;height:100%;display:block}.screen .ph{color:var(--dim2);letter-spacing:.08em;font-family:ui-monospace,Menlo,monospace;font-size:12px}.screen.armed{cursor:crosshair;box-shadow:inset 0 0 0 3px var(--orange)}.badges{pointer-events:none;gap:7px;display:flex;position:absolute;top:12px;left:12px}.badges span{color:#efe5d2;background:#ffffff1a;border-radius:9px;padding:5px 10px;font-size:11.5px;font-weight:600}.badges .fps{color:#ffd9a8;font-family:Nunito,sans-serif;font-weight:800}.badges .good{color:#bfe6c7}.badges .warn{color:#ffd9a8}.stage .bar{align-items:center;gap:10px;padding:12px 6px 4px;display:flex}.stage .bar .hint{color:#a99c82;min-width:0;font-size:12px}.tool{color:#efe5d2;cursor:pointer;white-space:nowrap;background:#ffffff12;border:none;border-radius:10px;padding:7px 13px;font-size:12.5px;font-weight:600}.tool:hover{background:#ffffff24}.tool.on{background:var(--orange);color:#fff}.stats{grid-template-columns:auto 1fr;gap:9px 16px;font-size:13px;display:grid}.stats .k{color:var(--dim)}.stats .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.switchrow{border-bottom:1px solid var(--line2);cursor:pointer;text-align:left;background:0 0;border-top:none;border-left:none;border-right:none;align-items:center;gap:12px;width:100%;padding:11px 2px;display:flex}.switchrow:last-child{border-bottom:none}.switchrow .lbl{flex:1;font-size:13.5px;font-weight:500}.switchrow .hint{color:var(--dim2);font-family:Nunito,sans-serif;font-size:11.5px;font-weight:700}.track{box-sizing:border-box;background:#ddd1ba;border-radius:14px;flex-shrink:0;justify-content:flex-start;width:44px;height:25px;padding:3px;transition:background .18s;display:flex}.track.on{background:var(--green);justify-content:flex-end}.track i{background:#fff;border-radius:50%;width:19px;height:19px;display:block;box-shadow:0 1px 3px #00000040}.members{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:18px;display:grid}@media (width<=1000px){.members{grid-template-columns:1fr}}.mrow{border:none;border-top:1px solid var(--line2);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:10px;width:100%;padding:12px 16px;display:flex}.mrow.on{background:#f7eedc}.mrow .email{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.mrow .sl{color:var(--dim2);margin-top:3px;font-size:11.5px}.mtime{flex-shrink:0;font-family:Nunito,sans-serif;font-size:12px;font-weight:800}.bigtime{letter-spacing:-.02em;font-family:Nunito,Noto Sans TC,sans-serif;font-size:40px;font-weight:900;line-height:1}.tag{white-space:nowrap;border-radius:8px;padding:4px 10px;font-size:11.5px;font-weight:700}.tag.ok{color:var(--green-dk);background:var(--green-bg)}.tag.warn{color:var(--orange-dk);background:var(--orange-bg)}.tag.bad{color:var(--red);background:var(--red-bg)}.tag.flat{color:var(--dim);background:#f2e9d8}.pool{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:12px;display:grid}@media (width<=900px){.pool{grid-template-columns:1fr}}.dropzone{background:#fffefa;border:2px dashed #ddcdae;border-radius:16px;min-height:104px;padding:14px;transition:background .15s,border-color .15s}.dropzone.over{border-color:var(--orange);background:#fcefd9}.freebox{border:1px solid var(--sink);background:var(--card2);border-radius:16px;padding:14px}.acct{background:var(--card);border:1px solid var(--sink);border-radius:12px;align-items:center;gap:8px;padding:8px 10px 8px 12px;font-size:13px;display:flex;box-shadow:0 2px #efe5d2}.acct.drag{cursor:grab;-webkit-user-select:none;user-select:none;border-style:dashed;border-color:#d8c8a8}.acct.dragging{opacity:.4}.acct .x{background:var(--chip);width:20px;height:20px;color:var(--red);cursor:pointer;border:none;border-radius:7px;place-items:center;font-size:13px;font-weight:700;display:grid}.acct .m{color:var(--dim2);font-family:Nunito,sans-serif;font-size:11.5px;font-weight:700}.statbox{background:var(--card);border:1px solid var(--line);box-shadow:0 3px 0 var(--sink);border-radius:16px;min-width:104px;padding:12px 18px}.statbox .n{font-family:Nunito,sans-serif;font-size:24px;font-weight:900;line-height:1}.statbox .k{color:var(--dim);margin-top:6px;font-size:12px}.notice{color:#8a6a32;background:#fdf3e2;border:1px solid #f0dfc0;border-radius:12px;align-items:center;gap:8px;padding:10px 14px;font-size:12.5px;display:flex}.tbl-head,.tbl-row{align-items:center;gap:12px;display:grid}.tbl-head{color:var(--dim);padding:0 22px 10px;font-size:12px}.tbl-row{border-top:1px solid var(--line2);padding:13px 22px;font-size:13.5px}.loginpage{background:#0b1020 url(/bg.jpg) 50%/cover no-repeat;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:relative}.loginpage:before{content:"";background:radial-gradient(#00000026 0%,#0000008c 100%);position:absolute;inset:0}.loginbox{background:var(--card);border-radius:18px;width:100%;max-width:400px;padding:28px 26px 24px;position:relative;box-shadow:0 18px 50px #00000073}.loginbox .logo{justify-content:center;margin-bottom:12px;display:flex}.loginbox h1{text-align:center;margin:0 0 2px;font-family:Nunito,Noto Sans TC,sans-serif;font-size:22px;font-weight:900}.loginbox .s{text-align:center;color:var(--dim);margin:0 0 20px;font-size:13px}.loginbox input{width:100%;margin-bottom:12px;padding:11px 13px;font-size:15px}.loginbox .go:disabled{opacity:.5;box-shadow:0 4px 0 var(--orange-dk);cursor:not-allowed}.loginbox .go{background:linear-gradient(180deg, var(--orange-lo), var(--orange));width:100%;box-shadow:0 4px 0 var(--orange-dk);color:#fff;cursor:pointer;border:none;border-radius:999px;margin-top:6px;padding:12px;font-size:16px;font-weight:700}.loginbox .go:active:not(:disabled){box-shadow:0 2px 0 var(--orange-dk);transform:translateY(2px)}.loginbox .msg{color:#a33227;background:#fdecea;border:1px solid #f3c2bc;border-radius:10px;margin-bottom:14px;padding:9px 12px;font-size:13px}.loginbox .foot{text-align:center;color:var(--dim);margin:16px 0 0;font-size:13px}.backdrop{z-index:100;background:#2b251973;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--line);border-radius:18px;width:100%;box-shadow:0 24px 60px #46341459}.modal-head{justify-content:space-between;align-items:center;padding:16px 20px 12px;font-size:15px;font-weight:800;display:flex}.modal-head .x{color:var(--dim);cursor:pointer;background:0 0;border:none;font-size:22px;line-height:1}.modal-body{padding:0 20px 20px;font-size:13.5px}.toasts{z-index:200;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:fixed;bottom:18px;right:18px}.toast{pointer-events:auto;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:12px;padding:10px 16px;font-size:13px;animation:.18s ease-out toastin;box-shadow:0 8px 24px #46341433}.toast.err{border-left-color:var(--red)}.log{background:var(--card2);border:1px solid var(--sink);white-space:pre-wrap;max-height:160px;color:var(--ink2);border-radius:12px;padding:10px;font-family:ui-monospace,Consolas,monospace;font-size:12px;overflow:auto}.maplist{border:1px solid var(--line);background:var(--card);border-radius:12px;max-height:220px;overflow:auto;box-shadow:0 8px 24px #4634142e}.maplist button{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:none;padding:7px 11px;font-size:13px;display:block}.maplist button:hover{background:var(--chip)}.maplist .region{color:var(--dim2);margin-left:6px;font-size:11px}.favlist{border:1px solid var(--line);border-radius:12px;max-height:46vh;overflow-y:auto}.favrow{border-bottom:1px solid var(--line);background:var(--card);align-items:center;gap:8px;padding:9px 12px;display:flex}.favrow:last-child{border-bottom:none}.fav-name{font-size:14.5px;font-weight:800}.maplist.tall{max-height:46vh;overflow-y:auto}.maplist .grp{z-index:1;background:var(--card);border-bottom:1px solid var(--line);color:var(--dim);letter-spacing:.04em;padding:6px 12px;font-size:12px;font-weight:800;position:sticky;top:0}.pill .cnt{background:#0000001f;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:800}.fld{flex-direction:column;gap:4px;display:flex}.fld>span{color:var(--dim);font-size:12.5px;font-weight:700}.fld>input{width:100%}.copyname{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;align-items:center;gap:7px;padding:0;font-size:20px;font-weight:900;display:inline-flex}.copyname .ic{color:var(--dim);opacity:0;font-size:13px;transition:opacity .12s}.copyname:hover .ic,.copyname:focus-visible .ic{opacity:1}.copyname:hover{color:var(--orange-dk)}.keepme{cursor:pointer;-webkit-user-select:none;user-select:none;grid-template-columns:auto 1fr;align-items:center;gap:4px 9px;margin:2px 0 4px;display:grid}.keepme input{width:16px;height:16px;accent-color:var(--orange);cursor:pointer;margin:0}.keepme>span{font-size:13.5px;font-weight:700}.keepme>em{color:var(--dim);grid-column:2;font-size:12px;font-style:normal}.gobar{cursor:pointer;border:1px solid var(--line);background:var(--card);width:100%;box-shadow:0 2px 0 var(--sink);font:inherit;text-align:left;border-radius:12px;align-items:center;gap:10px;margin-bottom:12px;padding:11px 14px;transition:border-color .12s,transform 60ms;display:flex}.gobar:hover{border-color:var(--orange)}.gobar:active{box-shadow:none;transform:translateY(1px)}.gobar .mag{color:var(--orange);font-size:17px}.gobar .ph{color:var(--dim);flex:1;font-size:14px}.gobar .hint{color:var(--dim);background:#0000000d;border-radius:999px;padding:3px 8px;font-size:11.5px;font-weight:800}.palette{flex-direction:column;display:flex}.pbar{border-bottom:1px solid var(--line);align-items:center;gap:10px;margin-bottom:4px;padding:4px 4px 12px;display:flex}.pbar .mag{color:var(--orange);font-size:20px}.pbar input{min-width:0;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:4px 0;font-size:18px;font-weight:700}.pbar input::placeholder{color:var(--dim);font-weight:400}.spin{border:2px solid var(--line);border-top-color:var(--orange);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.plist{max-height:46vh;margin:0 -4px;overflow-y:auto}.plist .grp{z-index:1;background:var(--card);color:var(--dim);letter-spacing:.06em;padding:8px 12px 4px;font-size:11.5px;font-weight:800;position:sticky;top:0}.prow{cursor:default;border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.prow.on{background:var(--orange-lo,#fbe6d2)}.pname{font-size:15px;font-weight:800}.pid{color:var(--dim);font-variant-numeric:tabular-nums;font-size:12px}.pacts{opacity:0;gap:6px;transition:opacity .1s;display:flex}.prow.on .pacts{opacity:1}.pbtn{border:1px solid var(--line);background:var(--card);font:inherit;cursor:pointer;border-radius:8px;padding:4px 10px;font-size:12.5px;font-weight:700}.pbtn:hover{border-color:var(--orange);color:var(--orange-dk)}.pbtn.go{background:var(--orange);border-color:var(--orange-dk);color:#fff}.pbtn.go:hover{color:#fff}.pbtn.star.on{color:var(--orange);border-color:var(--orange)}.pempty{text-align:center;color:var(--dim);padding:34px 12px;font-size:14px}.pfoot{border-top:1px solid var(--line);color:var(--dim);margin-top:4px;padding-top:10px;font-size:11.5px}.pfoot kbd{border:1px solid var(--line);background:var(--card);min-width:18px;font:inherit;text-align:center;border-bottom-width:2px;border-radius:5px;margin:0 2px;padding:1px 5px;font-size:11px;display:inline-block}
