:root{color-scheme:dark;--bg:#102b31;--ink:#f5f0de;--muted:#b1c8c5;--jade:#8ee0c2;--gold:#f7c877;--line:#3d5d61;--panel:#18383e;--red:#ffc4af;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 60% 10%,#274750 0,transparent 57%),var(--bg);color:var(--ink);min-height:100svh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button,a{outline-offset:4px}button:focus-visible,a:focus-visible{outline:3px solid var(--gold)}button:disabled{opacity:.45;cursor:default}button{border:1px solid var(--line);background:transparent;border-radius:12px;min-height:44px}a{color:inherit;text-underline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:500}button:hover{border-color:var(--jade)}.skip{position:fixed;left:10px;top:-100px;z-index:100}.skip:focus{top:10px;background:var(--bg);padding:12px}.sitebar{max-width:1100px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:12px 24px;gap:15px;font-size:12px;color:var(--muted)}.sitebar>a{text-decoration:none}.sitebar>span{letter-spacing:2px;font-size:10px}.sitebar b{letter-spacing:0;border:1px solid var(--line);padding:4px 6px;border-radius:5px;margin-left:8px}.sitebar button{font-size:11px;padding:0 12px;min-height:36px}.game{max-width:880px;margin:auto;padding:8px 24px 16px}.heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.eyebrow{font-size:10px;letter-spacing:1.9px;font-weight:700;color:var(--jade);line-height:1.5}.heading h1{font-family:Georgia,serif;font-size:clamp(25px,4vw,38px);letter-spacing:-1px;margin-top:3px}.heading h1 em{font-style:normal;color:var(--gold)}.score{border:0;display:flex;flex-direction:column;align-items:center;gap:0;padding:0 5px;color:var(--gold);white-space:nowrap}.score>span:first-child{font-size:25px;font-family:Georgia,serif}.score>span:last-child{font-size:10px;letter-spacing:1px}.city{height:75px;display:flex;justify-content:space-between;align-items:flex-end;gap:8px;margin:0 0 8px;border-bottom:1px solid #4a6463;background:radial-gradient(ellipse at bottom,#51756b33,transparent 65%)}.district{border:0;border-radius:0;position:relative;width:16%;height:72px;padding:0 4px;color:#668984;opacity:.55;min-height:44px}.district svg{height:48px;width:100%;display:block}.district span{font-size:9px;white-space:nowrap;color:var(--muted)}.district.lit{color:var(--gold);opacity:1}.district.current{color:var(--jade);opacity:1}.district.current:after{content:'';position:absolute;bottom:-2px;left:20%;right:20%;height:3px;background:var(--jade)}.workbench{background:linear-gradient(150deg,#1e4147,#17343a);border:1px solid #50716d;border-radius:20px;overflow:hidden;box-shadow:0 16px 60px #071a1d55}.missionbar{padding:15px 22px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.missionbar .eyebrow{font-size:9px;color:var(--muted);letter-spacing:1.5px}.missionbar h2{font-family:Georgia,serif;font-size:24px;line-height:1.2;margin-top:3px}.missionbar button{border-radius:50%;width:36px;min-height:36px;flex-shrink:0;font-family:Georgia,serif;color:var(--gold);font-size:20px}.board{position:relative;max-width:680px;margin:auto;width:100%;aspect-ratio:700/400;background-image:radial-gradient(#8abca326 1px,transparent 1px);background-size:20px 20px}.circuit-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.wire{stroke:#71918d;stroke-width:4;fill:none;stroke-linecap:round;stroke-linejoin:round}.powered .wire{stroke:#bde3c2}.shorted .wire{stroke:#c49484}.socket{position:absolute;display:flex;align-items:center;justify-content:center;width:12.5%;height:22%;transform:translate(-50%,-50%);border:1px solid #5c7b78;border-radius:15px;background:#1b3e44;padding:8px;color:#c8ddd3;min-height:44px}.socket svg{width:100%;height:100%;overflow:visible}.socket.fixed{border:0;background:#1b3c42}.socket.selected{border:2px solid var(--gold);box-shadow:0 0 0 4px #f7c8771c;color:#fff2c8}.socket.active{color:#ffdc91;background:#5b533c;box-shadow:0 0 28px #f4c76b35}.socket.dim{color:#ddc591;background:#414638;box-shadow:0 0 12px #f4c76b20}.socket.gap{border-style:dashed}.socket .slot-number{position:absolute;top:-17px;font-size:10px;color:#b2c9c6;line-height:1}.socket.bypass{width:11.5%}.socket.bypass .slot-number{top:auto;bottom:-22px;font-size:9px}.source-label{position:absolute;left:3%;top:76%;font-size:9px;letter-spacing:1px;color:var(--muted)}.board-caption{position:absolute;top:2%;left:0;right:0;text-align:center;font-size:10px;color:var(--muted)}.live-row{display:flex;align-items:center;justify-content:center;gap:7px;margin:0 10px 8px;min-height:18px;color:var(--muted);font-size:11px}.status-dot{width:5px;height:5px;background:var(--jade);border-radius:100%;flex-shrink:0}.controls{padding:10px 20px;background:#102a3055;border-top:1px solid #31545a}.controls>p{font-size:11px;color:var(--muted);margin-bottom:7px;min-height:16px}.palette{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:6px}.piece{display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 8px;min-height:48px;border-radius:10px;background:#23464a;font-size:11px;line-height:1.2}.piece svg{width:33px;height:27px;flex-shrink:0}.piece.current{border-color:var(--jade);background:#315852}.feedback{min-height:40px;padding:9px 20px 0;font-size:12px;line-height:1.45;color:var(--muted)}.feedback.bad{color:var(--red)}.feedback.good{color:var(--jade)}.actions{display:flex;align-items:center;gap:8px;padding:12px 20px 18px}.primary{background:var(--gold);color:#20393b;border-color:var(--gold);font-weight:750;padding:11px 20px;box-shadow:0 3px 0 #ab8146;display:flex;gap:16px;align-items:center;justify-content:center}.primary:hover{background:#ffda96;border-color:#ffda96}.actions .primary{margin-left:auto;flex-grow:1;max-width:380px}.icon-action{padding:6px 10px;color:var(--muted);border-color:transparent;font-size:18px}.icon-action span{font-size:11px;display:block}.game-footer{display:flex;gap:10px;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted);padding-top:6px}.game-footer button{border:0;padding:8px;font-size:11px}.game-footer>span{text-align:center}.symbols-board{display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;height:100%}.seal{width:100px;height:125px;background:#23474b;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;gap:8px;border-radius:16px}.seal.selected{border:2px solid var(--gold)}.seal svg{width:70px;height:55px}.seal span{font-size:10px;min-height:24px;display:grid;place-items:center}.seal .seal-num{color:var(--muted);font-size:10px}.contact-svg{width:100%;height:100%}.contact-control{position:absolute;bottom:6%;width:40%;left:8%;font-size:12px;background:#284c50;padding:7px;min-height:48px}.contact-control.second{left:52%}.contact-control.selected{border-color:var(--gold);box-shadow:0 0 0 2px #f7c87722}.contact-control strong{color:var(--gold)}
dialog{color:var(--ink);border:1px solid #6d8880;border-radius:22px;background:linear-gradient(140deg,#24474b,#16343a);padding:28px;width:min(530px,calc(100vw - 28px));max-height:calc(100svh - 32px);overflow:auto;box-shadow:0 25px 120px #0008}dialog::backdrop{background:#05191dbf;backdrop-filter:blur(5px)}dialog h2{font-family:Georgia,serif;font-size:30px;margin:10px 24px 14px 0;line-height:1.1}dialog p{font-size:14px;line-height:1.65;color:#d3dfd5;margin:12px 0}.close{position:absolute;right:13px;top:13px;width:36px;min-height:36px;border:0;font-size:23px}.dialog-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.dialog-actions>button,.dialog-actions>a{flex:1;padding:12px;text-align:center;text-decoration:none}.note{font-size:11px!important;color:var(--muted)!important}.ribbon{color:var(--gold);font-size:11px;letter-spacing:2px;font-weight:700}.objectives{border-left:2px solid var(--jade);padding:3px 0 3px 16px;margin:18px 0;font-size:14px;line-height:1.6}.answers{display:grid;gap:10px;margin-top:18px}.answer{text-align:left;padding:14px;background:#285052;font-size:14px;line-height:1.45}.answer.wrong{background:#673e35;border-color:var(--red)}.answer.correct{background:#346454;border-color:var(--jade)}.explanation{padding:12px 15px;background:#122e34;border-radius:12px;font-size:13px;line-height:1.65;margin-top:15px}.stars{color:var(--gold);font-size:40px;letter-spacing:8px;margin:10px 0}.map-chapter{margin:19px 0}.map-chapter h3{font-size:15px;color:var(--jade);margin-bottom:8px}.map-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.map-level{display:flex;flex-direction:column;align-items:center;gap:3px;background:#24474b;padding:10px 0}.map-level.current{border-color:var(--gold)}.map-level small{color:var(--gold);font-size:10px;min-height:14px}.book-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.book-symbol{display:flex;align-items:center;gap:7px;font-size:11px;border-bottom:1px solid var(--line);padding:8px 0}.book-symbol svg{width:48px;height:36px;flex-shrink:0}details{border-top:1px solid var(--line);padding:14px 0;font-size:13px}summary{cursor:pointer;color:var(--jade);line-height:1.5}.history-row{border-bottom:1px solid var(--line);padding:10px 0;display:flex;align-items:center;gap:12px}.history-row>div{flex:1}.history-row strong{font-size:13px}.history-row small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.history-row button{min-height:36px;font-size:11px;padding:6px}.history-row .stars{font-size:14px;letter-spacing:1px}.incident{border-left:2px solid var(--red);padding-left:12px;margin:15px 0}.incident p{font-size:12px;margin:5px 0}.complete-lantern{width:75px;height:90px;color:var(--gold);margin:5px auto;display:block}
@media(min-width:1000px) and (min-height:850px){.game{padding-top:24px}.city{height:94px;margin-bottom:18px}.district{height:85px}.district svg{height:60px}.board{max-width:650px}.missionbar{padding-top:20px}}
@media(max-width:600px){.sitebar{padding:6px 14px;font-size:11px}.sitebar>span{display:none}.sitebar button{min-height:32px}.game{padding:5px 10px 8px}.heading{padding:0 5px}.heading .eyebrow{font-size:8px;letter-spacing:1.3px}.heading h1{font-size:27px;letter-spacing:-.7px}.city{height:58px;margin-bottom:6px}.district{height:56px;padding:0 1px}.district svg{height:37px}.district span{font-size:7px}.workbench{border-radius:16px}.missionbar{padding:12px 14px 7px}.missionbar h2{font-size:20px}.missionbar .eyebrow{font-size:8px;letter-spacing:1px}.board{aspect-ratio:700/410}.socket{border-radius:10px;padding:4px}.socket .slot-number{font-size:9px;top:-14px}.socket.bypass .slot-number{bottom:-17px;font-size:7px}.board-caption{font-size:8px}.source-label{font-size:7px;left:4%}.live-row{font-size:10px;min-height:24px;margin:0 12px 4px;text-align:center}.controls{padding:9px 12px}.palette{grid-template-columns:repeat(3,1fr);gap:5px}.piece{min-height:43px;font-size:10px;padding:5px;gap:3px}.piece svg{width:29px;height:24px}.controls>p{font-size:10px;margin-bottom:6px}.feedback{font-size:11px;padding:8px 12px 0;min-height:38px}.actions{padding:9px 10px 13px;gap:3px}.actions .primary{font-size:13px;padding:11px 10px;gap:8px}.icon-action{padding:5px 6px;min-width:45px}.icon-action span{font-size:9px}.game-footer{font-size:8px;gap:4px}.game-footer button{font-size:10px;padding:6px}.symbols-board{gap:5px;padding:15px 8px}.seal{height:100px;min-width:0;width:20%;padding:4px;gap:4px}.seal svg{width:100%;height:40px}.seal span{font-size:8px}.contact-control{bottom:3%;font-size:10px;left:7%;width:41%;padding:4px}.contact-control.second{left:52%}dialog{padding:24px 20px}dialog h2{font-size:27px}dialog p{font-size:13px}.objectives{font-size:13px}.answer{padding:12px;font-size:13px}}
@media(max-height:730px) and (max-width:600px){.city{height:36px}.district{height:34px}.district svg{height:25px}.district span{display:none}.heading h1{font-size:24px}.board{aspect-ratio:700/380}.missionbar{padding-top:8px}.missionbar h2{font-size:18px}.actions{padding-bottom:9px}.feedback{min-height:32px}.game-footer{padding:0}.heading{margin-bottom:4px}}
@media(prefers-reduced-motion:no-preference){.socket.active{animation:glow 2.5s ease-in-out infinite}.answer,.piece,.primary{transition:background .15s,border-color .15s}@keyframes glow{50%{box-shadow:0 0 36px #f4c76b55}}}
.socket.position-right>svg,.socket.bypass>svg{transform:rotate(90deg)}.wide{grid-column:1/-1}.name-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.name-choices button{padding:10px;font-size:12px;min-height:48px;background:#285052}.symbol-preview{width:110px;height:90px;margin:10px auto;color:var(--gold)}.symbol-preview svg{width:100%;height:100%}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
