:root{color-scheme:dark;--bg:#06100c;--panel:#0c1d17;--panel2:#132820;--edge:#385b48;--green:#a7f7b8;--mint:#72d997;--text:#e7f5e9;--muted:#98b19e;--red:#f29a7b;--amber:#f4ce87}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,'Microsoft YaHei',sans-serif;background:#050c09;color:var(--text)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--mint);outline-offset:2px}a{color:var(--green)}.mono{font-family:ui-monospace,Consolas,monospace}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:10px}.hidden{display:none!important}
.player{max-width:580px;height:100vh;height:100dvh;min-height:0;margin:auto;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#143725,#07130e 60%);box-shadow:0 0 40px #0007;padding-top:env(safe-area-inset-top)}
.player-header{min-height:52px;display:flex;align-items:center;justify-content:space-between;padding:8px 13px;background:#0b1a14;border-bottom:1px solid #294536;gap:8px}.brand{font-weight:900;letter-spacing:.1em;font-size:16px}.brand span{color:var(--green)}.subbrand{font-size:9px;letter-spacing:.12em;color:var(--muted);font-family:ui-monospace,monospace;margin-top:3px}.header-right{display:flex;align-items:center;gap:7px}.square{border:1px solid #40664e;color:var(--green);background:#132b1c;padding:7px 10px;min-height:36px;border-radius:5px}.status-dot{display:inline-block;width:7px;height:7px;background:#80e6a1;border-radius:50%;box-shadow:0 0 8px #8eef9e;margin-right:5px}.top-status{color:var(--muted);font-size:10px;letter-spacing:.04em}
.map-zone{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:5px;background:#08130d}.map-board{position:relative;flex:none;max-width:100%;overflow:hidden;box-shadow:0 0 0 1px #437654,0 9px 35px #000a}.map-board img{display:block;width:100%;height:100%}.map-shade{pointer-events:none;position:absolute;inset:0;background:linear-gradient(0deg,#00140a35,transparent 30%,#07150b29)}.route-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.route-base{stroke:#062d18;stroke-width:1.3;stroke-linecap:round;stroke-dasharray:2 1}.route-glow{stroke:#d9ff8a;stroke-width:.65;stroke-linecap:round;stroke-dasharray:2 1;animation:dash 4s linear infinite;filter:drop-shadow(0 0 1.4px #bcff73)}@keyframes dash{to{stroke-dashoffset:-35}}.map-pin{position:absolute;z-index:3;transform:translate(-50%,-50%);pointer-events:none;border:2px solid #e1ffb0;background:#183923f5;box-shadow:0 0 16px #a2ff7680,0 0 2px #fff;display:grid;place-items:center;border-radius:50%;font:bold 13px ui-monospace,monospace;width:29px;height:29px}.map-pin.origin{color:#bbf9b7;border-color:#9be0b3;opacity:.83;width:22px;height:22px;font-size:10px}.map-pin.target{color:#e9ffbd;animation:pin-pulse 1.7s infinite}@keyframes pin-pulse{50%{box-shadow:0 0 22px 5px #a2ff76b5,0 0 0 6px #a2ff762c}}.target-name{position:absolute;z-index:4;transform:translate(-50%,0);pointer-events:none;max-width:65%;padding:3px 6px;color:#f0ffd8;background:#061e12e8;border:1px solid #a4e5a0;border-radius:3px;font-size:9px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 3px #000}.map-tag{position:absolute;z-index:2;top:8px;left:8px;padding:4px 6px;background:#092015a9;font:700 10px ui-monospace,monospace;letter-spacing:.08em;color:#bff9ca}
.objective-panel{padding:11px 15px 9px;background:linear-gradient(110deg,#163126e8,#13241de8);border-top:1px solid #65916c80;backdrop-filter:blur(9px)}.obj-top{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--green);font:800 10px ui-monospace,monospace;letter-spacing:.1em}.obj-top .number{color:var(--amber)}.obj-title{font-size:clamp(17px,4.3vw,21px);font-weight:850;margin:5px 0 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obj-caption{font-size:12px;color:#b6d2bf;line-height:1.45;max-height:37px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.obj-tags{display:flex;gap:7px;margin-top:7px;flex-wrap:wrap}.tag{padding:2px 6px;border:1px solid #497d56;background:#0b1f14;border-radius:4px;color:#b8ecc4;font:700 10px ui-monospace,monospace}.tag.urgent{color:var(--amber);border-color:#98784b}.tag.expired{color:var(--red);border-color:#965b4d}.task-controls{background:#08170f;padding:10px 15px max(10px,env(safe-area-inset-bottom));border-top:1px solid #244331}.primary{width:100%;min-height:54px;background:linear-gradient(#316f4d,#1d4c33);border:1px solid #a2f8ae;border-radius:6px;color:#f0fff0;font-size:17px;letter-spacing:.06em;font-weight:900;box-shadow:0 4px 0 #0a2618;text-shadow:0 1px #112e1b}.primary:active{transform:translateY(2px);box-shadow:0 2px 0 #0a2618}.progress-row{display:flex;justify-content:space-between;color:#9bc4a7;font:700 10px ui-monospace,monospace;margin:10px 0 5px}.bar{height:7px;background:#091d13;border:1px solid #3c6148;overflow:hidden;border-radius:3px}.fill{height:100%;background:linear-gradient(90deg,#45b773,#b4fabe);width:0%;transition:width .09s linear}.action-foot{display:flex;justify-content:space-between;align-items:center;gap:9px;margin-top:9px}.secondary-btn{border:1px solid #457055;background:#13251b;padding:5px 9px;border-radius:5px;color:#bbdec4;font-size:11px}.statusline{color:#6e9a7a;font:600 10px ui-monospace,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.story-shade{position:fixed;inset:0;background:#000c;z-index:40;display:none;justify-content:center;align-items:flex-end}.story-shade.open{display:flex}.story-sheet{width:min(580px,100%);max-height:77dvh;overflow:auto;padding:19px 18px max(26px,env(safe-area-inset-bottom));border:1px solid #456d50;background:#0c2016;border-radius:16px 16px 0 0;box-shadow:0 -9px 50px #0008}.story-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.story-head h2{margin:0 0 7px;font-size:20px}.story-main{line-height:1.8;color:#cce4d2;font-size:14px;white-space:pre-line;margin-top:15px}.story-meta{font-size:11px;line-height:1.8;color:#a2bea9}.story-notice{font-size:11px;color:#9da99e;border-top:1px solid #375941;padding-top:12px;margin-top:20px}
.admin-body{min-height:100dvh;background:radial-gradient(ellipse at 50% 0%,#103025,#06110c 62%);padding:18px 16px 45px}.admin-shell{max-width:1000px;margin:auto}.admin-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:17px}.admin-top h1{margin:0;font-size:22px}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.panel{background:#0e2017;border:1px solid #35513e;padding:19px;border-radius:11px;box-shadow:0 12px 40px #0004}.panel h2{font-size:16px;margin:0 0 13px}.panel h3{font-size:13px;color:#a3e3ba}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.fieldlabel{font-size:11px;font-weight:750;color:#b4d1b6;margin:11px 0 5px;display:block}.field{width:100%;border:1px solid #446b51;border-radius:6px;background:#0a190f;color:#e5f8ea;padding:10px;font-size:13px;min-height:40px}.textarea{resize:vertical;min-height:110px;line-height:1.55}.panel-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}.admin-btn{padding:10px 13px;font-size:12px;font-weight:800;border:1px solid #659b76;background:#214b31;color:#ebffee;border-radius:6px}.admin-btn.dim{background:#13281e;border-color:#3f6750}.admin-btn.danger{background:#392420;border-color:#965c50}.admin-btn:disabled{opacity:.4}.stage{border:1px solid #3b6248;background:#0b1c13;padding:11px;border-radius:8px;margin:10px 0}.stage-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.stage-top strong{font-size:12px;color:#e1f9e9}.stage-top .actions{display:flex;gap:4px}.stage-top button{border:1px solid #526d58;color:#c9efce;background:#203629;padding:5px 8px;border-radius:5px}.stage-meta{display:grid;grid-template-columns:1.2fr 1.1fr .75fr .75fr;gap:8px}.feedback{min-height:23px;font-size:12px;color:var(--amber);margin-top:11px;white-space:pre-wrap;overflow-wrap:anywhere}.audio-item{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #2d4937;padding:8px 0;gap:8px}.audio-item span{font-size:11px;overflow-wrap:anywhere}.select-mini{min-width:0;flex:1;background:#101d14;color:#d7ebdc;padding:9px;border:1px solid #476850;border-radius:5px}.upload-name{font:600 11px ui-monospace,monospace;color:#9de8b3}.op-divider{margin:18px 0;border:0;border-top:1px solid #365641}@media(max-width:760px){.admin-grid{grid-template-columns:1fr}.stage-meta{grid-template-columns:1fr 1fr}.admin-top h1{font-size:19px}}
@media(max-height:650px){.player-header{min-height:43px;padding:4px 11px}.objective-panel{padding:6px 13px}.task-controls{padding:6px 13px max(8px,env(safe-area-inset-bottom))}.primary{min-height:46px}.obj-caption{display:none}.obj-title{margin:2px 0}.obj-tags{margin-top:2px}.action-foot{margin-top:5px}.progress-row{margin:6px 0 4px}}

.history-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{text-align:left;padding:10px;border-bottom:1px solid #35513e;overflow-wrap:anywhere}#operatorPanel{margin-top:16px}#auditHistory{white-space:pre-wrap;overflow-wrap:anywhere}.header-right{gap:3px}.header-right .square{padding:6px;font-size:11px}

.generator{margin-top:18px;padding:12px;border:1px solid #446b51;border-radius:6px}.generator summary{cursor:pointer;font-weight:700}.generator fieldset{border:1px solid #35513e;margin:12px 0;padding:10px}.generator legend{font-size:12px}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px}.check-grid label{display:flex;align-items:center;gap:5px}

.access-panel{margin-top:16px;padding:12px 18px}.access-panel label{margin-top:0}.operator-heading{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.operator-heading h2{font-size:28px;margin:5px 0}.operator-heading button{margin-left:auto}.operator-emblem{width:70px;height:78px;display:grid;place-items:center;background:#173e2a;border:2px solid #8fc5a0;border-radius:8px 8px 25px 25px;font:bold 26px ui-monospace,monospace;color:#cfffac}.operator-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.operator-stats article{padding:16px;border:1px solid #446b51;background:#102d1e;border-radius:8px}.operator-stats span{display:block;color:var(--muted);font-size:12px}.operator-stats strong{display:block;font-size:26px;margin-top:8px;font-variant-numeric:tabular-nums}.exp-panel{padding:16px;background:#081a11;border-radius:8px}.exp-panel>div{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px}.exp-panel progress{width:100%;height:18px;margin-top:12px;accent-color:#a7f7b8}.admin-tools{margin-top:24px;border-top:1px solid #35513e;padding-top:15px}.admin-tools summary{cursor:pointer;font-size:12px;color:var(--muted)}#operatorPanel h3{margin-top:24px;font-size:16px}@media(max-width:760px){.operator-stats{grid-template-columns:repeat(2,1fr)}.operator-stats strong{font-size:22px}.operator-heading button{margin-left:0}}

.map-zone{position:relative}.reward-notice{position:absolute;z-index:8;bottom:18px;left:50%;transform:translateX(-50%);width:min(90%,420px);padding:18px;text-align:center;border:1px solid #c1f6a3;border-radius:10px;background:#102b20f5;box-shadow:0 8px 30px #0009;color:#d3f7bc}.reward-notice strong{display:block;font-size:22px;margin:9px 0}.reward-notice div{font-size:12px}.reward-pop{animation:reward-in .35s ease-out}@keyframes reward-in{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.reward-pop{animation:none}}

.player-header,.objective-panel,.task-controls{flex-shrink:0}.progress-panel{margin-top:10px;padding:9px;border:1px solid #385b48;border-radius:6px;background:#10251b}.progress-panel.active{border-color:#b9ed88;box-shadow:0 0 12px #8fff7222}.progress-panel .progress-row{margin:0 0 7px;font-size:12px;color:#d4eecb}.progress-panel .bar{height:20px;border-color:#86b278}.progress-panel .fill{min-height:100%;box-shadow:0 0 9px #a5f1a1}.progress-panel.active .fill{background:repeating-linear-gradient(120deg,#70cf81 0 14px,#b9f28c 14px 28px)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.credit-counter{display:inline-flex;align-items:center;white-space:pre;font-variant-numeric:tabular-nums;font-family:ui-monospace,Consolas,monospace}.digit-window{display:inline-block;position:relative;overflow:hidden;height:1.2em;width:.65em;line-height:1.2em;perspective:300px;background:#163c26;border-radius:3px;margin:0 1px}.digit-window:after{content:'';position:absolute;inset:50% 0 auto;border-top:1px solid #0005;pointer-events:none}.digit-strip{display:block;transform:translateY(0);transition-property:transform;transition-timing-function:cubic-bezier(.15,.7,.16,1);will-change:transform}.digit-strip>span{display:block;height:1.2em;line-height:1.2em;text-align:center}@media(max-height:650px){.progress-panel{margin-top:6px;padding:6px}.progress-panel .bar{height:18px}.progress-panel .progress-row{font-size:11px;margin-bottom:5px}}
