:root{--bg:#071321;--surface:#0d1e30;--surface2:#12263b;--line:#263d55;--text:#f4f7fb;--muted:#91a1b3;--gold:#efb83f;--gold2:#ce8f1f;--green:#20b169;--red:#d9515d;--radius:16px;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;color:var(--text);background:radial-gradient(circle at 50% -15%,#17304b 0,transparent 35%),var(--bg);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.login-view{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(460px,100%);padding:42px;background:rgba(13,30,48,.94);border:1px solid var(--line);border-radius:24px;box-shadow:0 24px 80px #0008}.brand-mark,.brand span{display:grid;place-items:center;background:linear-gradient(145deg,#ffd66c,#c98213);color:#0b1b2c;font-weight:900}.brand-mark{width:58px;height:58px;border-radius:17px;transform:rotate(45deg);font-size:26px;margin:0 0 30px}.brand-mark::first-letter{transform:rotate(-45deg)}.eyebrow{margin:0 0 8px;color:var(--gold);font-size:12px;letter-spacing:.24em}.login-card h1{font-size:42px;margin:0 0 12px}.lead,.privacy,.card p,.section-title p{color:var(--muted);line-height:1.7}.privacy{font-size:12px;text-align:center;margin:18px 0 0}.login-form,.card form{display:grid;gap:13px;margin-top:26px}label{display:grid;gap:7px;color:#cbd5e0;font-size:14px}input,select,textarea{min-width:0;width:100%;border:1px solid var(--line);border-radius:10px;background:#081827;color:var(--text);padding:13px 14px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px #efb83f1f}textarea{resize:vertical;min-height:92px}.primary,.ghost,.danger{border:1px solid transparent;border-radius:10px;padding:12px 18px;font-weight:700}.primary{background:linear-gradient(135deg,#f5c759,var(--gold2));color:#101b28}.ghost{background:#10243a;border-color:var(--line);color:#dbe6f1}.danger{background:#3b1820;border-color:#682932;color:#ff99a0}.small{padding:8px 13px;font-size:13px}
.app-shell{max-width:1280px;margin:auto;min-height:100vh}.topbar{height:68px;position:sticky;top:0;z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 24px;background:#071321ef;border-bottom:1px solid #1e3348;backdrop-filter:blur(14px)}.brand{display:flex;gap:11px;align-items:center;color:inherit;text-decoration:none}.brand span{width:34px;height:34px;border-radius:10px}.guild-head{text-align:center}.guild-head strong{margin-right:10px}.badge{display:inline-block;color:#6ee1a2;background:#0e3c2a;border-radius:999px;padding:5px 9px;font-size:12px}.topbar #logoutBtn{justify-self:end}.tabs{position:sticky;top:68px;z-index:19;display:flex;justify-content:center;gap:4px;padding:9px;background:#091827e8;border-bottom:1px solid #1e3348;backdrop-filter:blur(14px)}.tabs button{border:0;color:var(--muted);background:transparent;padding:10px 22px;border-radius:9px}.tabs button.active{color:#101b28;background:var(--gold);font-weight:800}main{padding:32px 24px 72px}.panel{display:none}.panel.active{display:block}.hero{display:flex;justify-content:space-between;gap:24px;align-items:end;padding:32px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(130deg,#12283f,#0b1a2b)}.hero h2,.section-title h2{font-size:32px;margin:0}.hero p{color:var(--muted);margin:7px 0 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:16px 0}.stat{padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);text-align:center}.stat strong{display:block;color:var(--gold);font-size:34px}.stat span{color:var(--muted)}.card{margin-top:16px;padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.card h3{margin:0}.section-title{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}.section-title.mini{align-items:center;margin:0 0 12px}.section-title.mini span{font-size:12px;color:var(--muted)}.compact-input{max-width:260px}.ranking-list,.manage-list{display:grid;gap:8px}.rank-row,.manage-row,.attendance-row{display:grid;grid-template-columns:48px minmax(120px,1fr) 120px 160px;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;background:var(--surface);border:1px solid #1d344b}.rank-no{color:var(--gold);font-size:20px;font-weight:900}.muted{color:var(--muted);font-size:13px}.gear{display:flex;gap:5px;flex-wrap:wrap}.gear i{font-style:normal;font-size:11px;padding:3px 6px;border-radius:5px;background:#19334c;color:#aac0d5}.gear i.on{background:#423414;color:#f4ca5f}.squad-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.squad{padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.squad h3{margin:5px 0 12px}.task{padding:13px;border-left:3px solid var(--gold);background:#081827;border-radius:8px;line-height:1.6}.chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:13px}.chip{background:#172d43;border-radius:7px;padding:7px 10px;color:#d8e3ed;font-size:13px}.task-target{color:#ffcf65}.attendance-summary{display:flex;gap:8px;flex-wrap:wrap}.count-chip{padding:8px 11px;background:#122a40;border-radius:8px}.count-chip strong{color:var(--gold)}
.map-tools{display:grid;grid-template-columns:1fr 1fr 1.3fr auto;gap:10px;align-items:end}.owner-add{display:flex;gap:7px}.zoom-tools{display:grid;grid-template-columns:64px 1fr 64px;gap:8px;margin:12px 0}.map-viewport{position:relative;overflow:hidden;touch-action:none;width:100%;height:min(66vw,720px);min-height:320px;background:#020810;border:1px solid var(--line);border-radius:12px}.map-viewport canvas{position:absolute;transform-origin:0 0;image-rendering:auto}.map-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:12px 0}.score-list{display:grid;gap:7px}.score-row{display:grid;grid-template-columns:36px 1fr auto;gap:10px;padding:11px;background:#10243a;border-radius:9px}.score-row strong{color:var(--gold)}.admin-grid{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(420px,1.25fr);gap:16px}.manage-row{grid-template-columns:minmax(110px,1fr) 100px 120px auto}.manage-row .actions{display:flex;gap:5px}.response-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.response-grid button.selected{border-color:var(--gold);color:var(--gold)}.brief-tasks{display:grid;gap:8px;margin:12px 0}.brief-task{padding:11px;background:#071827;border-radius:9px}.brief-task strong{color:#ffca57}.identity-grid{display:grid;grid-template-columns:1fr 180px auto;gap:10px;align-items:end}.toast{position:fixed;z-index:100;left:50%;top:82px;transform:translate(-50%,-20px);opacity:0;pointer-events:none;background:#162a3e;color:#fff;border:1px solid var(--line);padding:12px 18px;border-radius:10px;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{width:min(560px,calc(100% - 30px));border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--text);padding:0;box-shadow:0 30px 100px #000b}dialog::backdrop{background:#000b}.modal-close{float:right;background:none;border:0;color:#9fb0c0;font-size:26px;padding:14px 18px}#modalBody{padding:30px;clear:both}footer{text-align:center;color:#5e7184;padding:24px}
@media(max-width:760px){.login-card{padding:28px}.topbar{padding:0 14px}.brand strong{display:none}.guild-head{font-size:14px}.tabs{justify-content:flex-start;overflow:auto}.tabs button{white-space:nowrap;padding:9px 14px}main{padding:20px 12px 56px}.hero{padding:22px;align-items:start}.hero h2,.section-title h2{font-size:27px}.hero>button{padding:9px}.stats{gap:7px}.stat{padding:16px 7px}.stat strong{font-size:28px}.card{padding:16px}.section-title{align-items:start}.compact-input{max-width:150px}.rank-row{grid-template-columns:34px 1fr auto}.rank-row .gear{grid-column:2/4}.squad-grid,.admin-grid{grid-template-columns:1fr}.map-tools{grid-template-columns:1fr 1fr}.map-tools .owner-add,.map-tools #quickBtn{grid-column:1/3}.map-viewport{height:74vw;min-height:280px}.identity-grid{grid-template-columns:1fr}.response-grid{grid-template-columns:1fr 1fr}.manage-row{grid-template-columns:1fr auto}.manage-row>*:not(.actions):not(strong){grid-column:1/3}.guild-head .badge{display:none}}
