@font-face{font-family:Orbitron;src:url(/orbitron.ttf) format('truetype');font-weight:400 600;font-display:swap}@font-face{font-family:Orbitron;src:url(/orbitron-bold.ttf) format('truetype');font-weight:700 900;font-display:swap}:root{--edge:rgba(120,190,255,.28);--edge-lit:rgba(150,210,255,.75)}body{margin:0;padding:3rem 1.5rem 4rem;color:#c8cdd6;min-height:100vh;background:#05080c;background-image:radial-gradient(1200px 600px at 50% -10%,rgba(40,90,150,.25),transparent),radial-gradient(800px 500px at 90% 110%,rgba(30,70,120,.18),transparent);font:15px/1.6 system-ui,-apple-system,sans-serif}.sheet{max-width:46rem;margin:0 auto;padding:1.6rem 1.8rem;background:linear-gradient(165deg,rgba(15,23,35,.96),rgba(8,12,19,.96));border:1px solid var(--edge);border-top:2px solid rgba(150,210,255,.55);box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 40px rgba(60,120,200,.12);clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}h1{margin:0 0 .4rem;font:700 24px Orbitron,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#eaf2ff}h2{margin:1.8rem 0 .5rem;font:600 12px Orbitron,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#7f8ea6}a{color:#7fb4ff;text-decoration:none;border-bottom:1px solid rgba(127,180,255,.3)}a:hover{border-bottom-color:#7fb4ff}.dim{color:#7f8ea6;font:11px ui-monospace,SFMono-Regular,monospace;letter-spacing:.06em}.outcome{padding:.6rem .9rem;background:rgba(80,200,140,.1);border:1px solid rgba(90,210,150,.3);color:#9fe6c8;display:inline-block;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}form{display:inline-block;margin:0 .5rem .6rem 0}button,.button{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.1rem;border:1px solid #2f4a68;color:#dbe2ee;cursor:pointer;background:linear-gradient(180deg,rgba(28,52,80,.85),rgba(18,32,50,.85));font:13px system-ui,sans-serif;letter-spacing:.03em;clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);transition:border-color .1s,box-shadow .1s,background .1s}button:hover,.button:hover{border-color:var(--edge-lit);background:linear-gradient(180deg,rgba(40,74,112,.9),rgba(22,40,62,.9));box-shadow:0 0 14px rgba(120,190,255,.25)}button.go{background:linear-gradient(180deg,rgba(28,90,66,.9),rgba(18,52,40,.9));border-color:#3f8e6c}input,select{padding:.6rem .7rem;border:1px solid #2f3b4d;background:#0d1219;color:#dbe2ee;font:14px ui-monospace,monospace;min-width:14rem}select{cursor:pointer}/* Starting a match is one form: which map, how many people, and who holdsthe rest. */form.start{display:block;margin:0}.maps{display:flex;gap:.6rem;flex-wrap:wrap;margin:.2rem 0 1rem}.map{cursor:pointer}.map input{position:absolute;opacity:0;width:0;height:0;min-width:0}.map .face{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .9rem;border:1px solid #2f4a68;color:#a7b6cc;min-width:9rem;background:linear-gradient(180deg,rgba(20,34,52,.8),rgba(12,20,32,.8));clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);transition:border-color .1s,box-shadow .1s,background .1s}.map .face b{color:#dbe2ee;font:600 13px Orbitron,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}.map:hover .face{border-color:var(--edge-lit)}.map input:checked+.face{border-color:#7fb4ff;color:#dbe2ee;background:linear-gradient(180deg,rgba(40,80,124,.9),rgba(22,40,62,.9));box-shadow:0 0 16px rgba(120,190,255,.25)}.map input:focus-visible+.face{outline:2px solid var(--edge-lit);outline-offset:2px}.row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.row label{color:#7f8ea6;font:600 11px Orbitron,system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}.row input{min-width:4rem;width:4.5rem;text-align:center}table{border-collapse:collapse;margin-top:.3rem;width:100%}th{text-align:left;color:#7f8ea6;font:600 11px Orbitron,system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}th,td{padding:.45rem 1rem .45rem 0;border-bottom:1px solid #18202c}ul{list-style:none;margin:.3rem 0;padding:0}li{padding:.5rem 0;border-bottom:1px solid #18202c}.legend{color:#7f8ea6;font-size:12px;margin:.2rem 0 1rem}.warn{padding:.55rem .8rem;margin:.2rem 0 1rem;color:#ffd7d2;background:rgba(60,20,20,.6);border:1px solid rgba(255,120,110,.45)}/* The door. One column, nothing else on the page, because a person whocannot get in has nothing else to do here. */body.door{display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem}body.door .sheet{max-width:24rem;width:100%}body.door form{display:flex;flex-direction:column;gap:.6rem;width:100%}body.door input{width:100%;box-sizing:border-box;min-width:0}body.door button{justify-content:center}/* The header every page inside the site wears. *//* Room for the bar above, and a little air under it. */body:has(.top){padding-top:5.2rem}/* The bar stays where it is while the page moves under it. The way toevery other part of the site is not a thing to scroll back up for. */.top{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.8rem max(1rem,calc((100vw - 60rem) / 2));border-bottom:1px solid var(--edge);background:linear-gradient(180deg,rgba(10,16,25,.97),rgba(6,10,16,.94));box-shadow:0 10px 30px rgba(0,0,0,.45)}.top .mark{display:inline-flex;align-items:center;gap:.5em;font:700 15px Orbitron,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#eaf2ff;border:0}/* The mark is a system, the fleet it really sends, and the fleet it only
   seems to send. It arrives as a mask rather than as a picture, so one
   rule serves every page and the glyph takes a colour of its own. A mask
   keeps the alpha it is given, which is what holds the feint back. */.mark::before,body.door h1::before{content:'';display:inline-block;flex:none;background-color:currentColor;-webkit-mask:url('data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22%3E%3Ccircle cx=%227.6%22 cy=%2216%22 r=%225.3%22 fill=%22%23000%22/%3E%3Cpath d=%22M13.84 12.4L22.84 7.2%22 stroke=%22%23000%22 stroke-width=%223.3%22 stroke-linecap=%22round%22/%3E%3Cpath d=%22M29.77 3.2L25.86 11.23L20.86 2.57Z%22 fill=%22%23000%22/%3E%3Cg opacity=%220.38%22%3E%3Cpath d=%22M13.84 19.6L22.84 24.8%22 stroke=%22%23000%22 stroke-width=%223.3%22 stroke-linecap=%22round%22/%3E%3Cpath d=%22M29.77 28.8L20.86 29.43L25.86 20.77Z%22 fill=%22%23000%22/%3E%3C/g%3E%3C/svg%3E') center/contain no-repeat;mask:url('data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 32 32%22%3E%3Ccircle cx=%227.6%22 cy=%2216%22 r=%225.3%22 fill=%22%23000%22/%3E%3Cpath d=%22M13.84 12.4L22.84 7.2%22 stroke=%22%23000%22 stroke-width=%223.3%22 stroke-linecap=%22round%22/%3E%3Cpath d=%22M29.77 3.2L25.86 11.23L20.86 2.57Z%22 fill=%22%23000%22/%3E%3Cg opacity=%220.38%22%3E%3Cpath d=%22M13.84 19.6L22.84 24.8%22 stroke=%22%23000%22 stroke-width=%223.3%22 stroke-linecap=%22round%22/%3E%3Cpath d=%22M29.77 28.8L20.86 29.43L25.86 20.77Z%22 fill=%22%23000%22/%3E%3C/g%3E%3C/svg%3E') center/contain no-repeat}.top .mark::before{width:1.4em;height:1.4em;color:#8fd0ff}body.door h1{display:flex;align-items:center;gap:.5em}body.door h1::before{width:1.5em;height:1.5em;color:#8fd0ff}.top nav{display:flex;gap:.2rem}.top nav a{padding:.35rem .7rem;border:1px solid transparent;color:#9fb0c8;font-size:13px}.top nav a:hover{color:#eaf2ff;border-color:var(--edge)}.top nav a.here{color:#eaf2ff;border-color:var(--edge);background:rgba(40,74,112,.35)}.top .out{display:flex;align-items:center;gap:.6rem;margin:0 0 0 auto}.top .who{color:#dbe2ee;font:600 12px Orbitron,system-ui,sans-serif;letter-spacing:.08em}.top .out button{padding:.35rem .7rem;font-size:12px}.sheet.wide{max-width:60rem;background:none;border:0;box-shadow:none;clip-path:none;padding:0}.card{padding:1.4rem 1.6rem;margin:0 0 1.4rem;background:linear-gradient(165deg,rgba(15,23,35,.96),rgba(8,12,19,.96));border:1px solid var(--edge);border-top:2px solid rgba(150,210,255,.55);box-shadow:0 18px 50px rgba(0,0,0,.5);clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}.card h2:first-child{margin-top:0}ul.matches li{padding:0;border:0;margin:.3rem 0}ul.matches a{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap;padding:.6rem .8rem;border:1px solid #1c2735;background:rgba(14,20,30,.6)}ul.matches a:hover{border-color:var(--edge-lit);background:rgba(24,38,58,.7)}ul.matches b{color:#dbe2ee;font:600 13px Orbitron,system-ui,sans-serif;letter-spacing:.06em}ul.matches.done a{opacity:.6}/* The campaign: one card, and the missions in the order they open. */ol.missions{list-style:none;margin:.6rem 0 0;padding:0;counter-reset:mission}ol.missions li{counter-increment:mission;position:relative;padding:.9rem 1rem;margin:0 0 .6rem;border:1px solid #1c2735;background:rgba(14,20,30,.6)}ol.missions li::before{content:counter(mission);position:absolute;left:-2.2rem;top:.9rem;width:1.6rem;text-align:right;color:#4f5b6d;font:600 12px Orbitron,system-ui,sans-serif}@media (max-width:52rem){ol.missions li::before{display:none}}ol.missions .head{display:flex;align-items:center;gap:.5rem}ol.missions b{color:#dbe2ee;font:600 14px Orbitron,system-ui,sans-serif;letter-spacing:.06em}ol.missions .brief{margin:.4rem 0 .3rem;color:#9fb0c8;font-size:13px;max-width:44rem}ol.missions .task{margin:.2rem 0 .6rem;color:#9fe6c8;font-size:12px;font-family:ui-monospace,monospace}ol.missions form{margin:0}ol.missions li.done{border-color:rgba(90,210,150,.35)}ol.missions li.done b{color:#9fe6c8}ol.missions li.shut{opacity:.5}ol.missions li.shut .brief{color:#5d6c80}.tag.won{border-color:#3f8e6c;color:#9fe6c8;background:rgba(28,90,66,.35)}ul.matches .tag{margin-left:auto}.tag.open{border-color:#3f8e6c;color:#9fe6c8;background:rgba(28,90,66,.35)}.tag.archiving{border-color:#8e7a3f;color:#ffd48f;background:rgba(90,72,28,.35)}.tag.archived{border-color:#3f5f8e;color:#9fc4e6;background:rgba(28,52,90,.35)}.tag.waiting{border-color:#8e7a3f;color:#ffd48f;background:rgba(90,72,28,.35)}.tag.allowed{border-color:#3f8e6c;color:#9fe6c8;background:rgba(28,90,66,.35)}.tag.blocked{border-color:#8e3f3f;color:#ffd7d2;background:rgba(90,28,28,.35)}table.rows tr.waiting td{background:rgba(90,72,28,.12)}table.rows tr.blocked td{opacity:.6}/* How many accounts are waiting, wherever the way into the panel is. */.count{margin-left:.4rem;padding:0 .32rem;color:#0b1016;background:#ffd48f;font:700 9px ui-monospace,monospace;border-radius:2px;vertical-align:.08em}/* The room: the link to send, and one row per slot. */.invite{display:flex;gap:.5rem;margin:.2rem 0 1rem}.invite input{flex:1;min-width:0;font-size:13px;color:#9fe6c8;border-color:#3f8e6c;background:rgba(10,24,18,.7)}.invite button{flex:none;min-width:5.5rem;justify-content:center}button.said{border-color:#3f8e6c;color:#9fe6c8;background:linear-gradient(180deg,rgba(28,90,66,.9),rgba(18,52,40,.9))}table.slots td{vertical-align:middle}table.slots select{min-width:0;padding:.3rem .4rem;font-size:12px}table.slots form{margin:0}table.slots tr.open td{color:#7f8ea6}table.slots tr.open b{color:#ffb86b}table.slots tr.nobody{opacity:.6}button[disabled]{opacity:.45;cursor:not-allowed}/* One line with the way on at one end and the way out at the other. */.row.ends{display:flex;align-items:center;gap:.6rem;margin-top:.4rem}.row.ends form{margin:0}.row.ends form.far{margin-left:auto}/* The way into the palette, and the palette itself. */.top .find{display:flex;align-items:center;gap:.4rem;padding:.3rem .6rem;border:1px solid var(--edge);color:#9fb0c8;font-size:13px}.top .find:hover,.top .find.here{color:#eaf2ff;background:rgba(40,74,112,.35)}.kbd{padding:.05rem .3rem;border:1px solid #2f4a68;color:#7f8ea6;font:11px ui-monospace,monospace;background:rgba(10,16,24,.7)}.away{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}form.asking{display:flex;gap:.5rem;margin:.4rem 0 1rem}/* One row of pages inside a section that has more than one. */nav.tabs{display:flex;gap:.2rem;margin:0 0 1rem}nav.tabs a{padding:.4rem .8rem;border:1px solid transparent;color:#9fb0c8;font:600 10px Orbitron,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase}nav.tabs a:hover{color:#eaf2ff;border-color:var(--edge)}nav.tabs a.here{color:#eaf2ff;border-color:var(--edge);background:rgba(40,74,112,.35)}/* The map editor: the file on the left, what it draws on the right. */.editing{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1rem;align-items:start;margin:.6rem 0 1rem}@media (max-width:60rem){.editing{grid-template-columns:1fr}}.editing form{display:block;margin:0}.editing .row{display:flex;gap:.5rem;margin-bottom:.5rem}.editing .row input{flex:1;min-width:0}.editing textarea{width:100%;box-sizing:border-box;padding:.7rem;border:1px solid #2f3b4d;background:#0a0e14;color:#dbe2ee;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}.editing textarea:focus{outline:none;border-color:var(--edge-lit)}.preview{border:1px solid #1c2735;background:rgba(6,10,16,.7);padding:.4rem;position:sticky;top:1rem}.outline{display:block;width:100%;height:auto}.outline .road{stroke:rgba(120,190,255,.35);stroke-width:3}.outline .mark{fill:#9fb0c8;font:26px system-ui,sans-serif;text-anchor:middle}/* What a map file can say, under the editor. */.reference{margin:.8rem 0 0;border-top:1px solid var(--edge);padding-top:.7rem}.reference table.rows th:last-child,.reference table.rows td:last-child{width:50%}.reference summary{cursor:pointer;color:#9fb0c8;font:600 10px Orbitron,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;margin-bottom:.4rem}.reference summary:hover{color:#eaf2ff}.reference table.rows td{font-size:12px;padding:.35rem .6rem}.reference b.key{color:#9fe6c8;font:600 12px ui-monospace,monospace}ul.plain{list-style:none;margin:.2rem 0 1rem;padding:0}ul.plain li{padding:.25rem 0;border:0;color:#9fb0c8;font-size:12px}ul.plain li::before{content:"\2022";color:#4f5b6d;margin-right:.5rem}pre.sample{margin:.2rem 0 0;padding:.7rem;overflow-x:auto;border:1px solid #1c2735;background:#0a0e14;color:#dbe2ee;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}form.asking input{flex:1}#omni{width:min(40rem,92vw);padding:0;border:1px solid var(--edge-lit);border-top:2px solid rgba(150,210,255,.7);color:#c8cdd6;background:linear-gradient(165deg,rgba(15,23,35,.99),rgba(8,12,19,.99));box-shadow:0 30px 80px rgba(0,0,0,.7);margin-top:8vh}#omni::backdrop{background:rgba(3,6,10,.72)}#omni form{display:block;margin:0}#omni input{width:100%;box-sizing:border-box;min-width:0;border:0;border-bottom:1px solid var(--edge);background:none;padding:.9rem 1rem;font:15px system-ui,sans-serif}#omni input:focus{outline:none}#omni-results{max-height:60vh;overflow:auto;padding:.3rem 0}#omni-results .legend,#search-results .legend{padding:.6rem 1rem;margin:0}.group h2{margin:.7rem 0 .2rem;padding:0 1rem}a.hit{display:flex;align-items:center;gap:.6rem;padding:.5rem 1rem;border:0;color:#c8cdd6}a.hit:hover,a.hit.on{background:rgba(40,74,112,.45);color:#eaf2ff}a.hit .what{display:flex;flex-direction:column;min-width:0}a.hit b{color:#dbe2ee;font:600 13px Orbitron,system-ui,sans-serif;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a.hit .why{margin-left:auto;color:#9fe6c8;font:11px ui-monospace,monospace;white-space:nowrap}a.more{display:block;padding:.4rem 1rem .6rem;border:0;color:#7fb4ff;font-size:12px}.omni-hint{display:flex;gap:1rem;margin:0;padding:.5rem 1rem;border-top:1px solid var(--edge);color:#5d6c80;font-size:11px}#search-results a.hit{border:1px solid transparent}#search-results a.hit:hover{border-color:var(--edge)}button[disabled]:hover{border-color:#2f4a68;box-shadow:none}/* The table of accounts, and the log under it. */table.rows{width:100%;border-collapse:collapse;margin:.4rem 0 1rem;font-size:13px}table.rows th{text-align:left;padding:.4rem .6rem;color:#7f8ea6;font:600 10px Orbitron,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid var(--edge)}table.rows td{padding:.5rem .6rem;border-bottom:1px solid #18202c;vertical-align:middle}table.rows .acts{display:flex;gap:.4rem;justify-content:flex-end}table.rows .acts form{margin:0}table.rows .acts button,table.rows .acts .button{padding:.3rem .6rem;font-size:12px;border-bottom-width:1px}table.rows .pip{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:.45rem;vertical-align:baseline}/* Anything that takes something away wears the same colour, wherever itstands. It was only dressed inside a table before, so the one on theroom page looked like any other button. */button.bad{border-color:#7a3a3a;color:#ffd7d2;background:linear-gradient(180deg,rgba(70,26,26,.85),rgba(44,18,18,.85))}button.bad:hover{border-color:#c0564e;color:#fff;background:linear-gradient(180deg,rgba(96,34,32,.95),rgba(60,22,22,.95));box-shadow:0 0 14px rgba(200,80,70,.3)}.tag{padding:.15rem .5rem;border:1px solid #2f4a68;color:#9fb0c8;font:600 10px Orbitron,system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}.tag.admin{border-color:#3f8e6c;color:#9fe6c8;background:rgba(28,90,66,.35)}table.log td{font-size:12px}table.log tr.loud td{color:#ffd7d2;background:rgba(60,20,20,.35)}