:root{--navy:#0b1c30;--ink:#183047;--teal:#15b89a;--teal-dark:#0a8e7e;--soft:#eff8f7;--border:#dce8e9;--white:#fff;--muted:#657d90;--blue:#516ce5;--red:#d65b65;--radius:18px;--shadow:0 18px 60px rgba(13,40,69,.12)}
*{box-sizing:border-box}html{min-height:100%}body{margin:0;font:15px/1.5 'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--ink);background:#f4f9fb}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,.logo strong{font-family:'Space Grotesk','DM Sans',sans-serif;line-height:1.13;letter-spacing:-.035em}h1{font-size:clamp(33px,5vw,62px)}h2{font-size:clamp(26px,3vw,36px)}h3{font-size:20px}p{color:var(--muted)}hr{border:0;border-top:1px solid var(--border);margin:22px 0}.wrap{max-width:1280px;margin:auto;padding:0 30px}.btn{border:1px solid var(--border);border-radius:12px;padding:12px 19px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#fff;color:var(--ink);transition:transform .2s,background .2s,border-color .2s}.btn:hover{transform:translateY(-1px);border-color:#9bc9be}.btn:focus-visible,.nav-link:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #78d8cf;outline-offset:2px}.btn.primary{border-color:#119e89;background:var(--teal);color:white}.btn.primary:hover{background:var(--teal-dark)}.btn.dark{background:#102940;color:white;border-color:#102940}.btn.ghost{background:transparent;border-color:rgba(255,255,255,.25);color:white}.btn.small{padding:7px 12px;font-size:12px}.btn:disabled{opacity:.56;cursor:not-allowed;transform:none}.logo{display:flex;align-items:center;gap:12px;font-family:'Space Grotesk';font-weight:700;letter-spacing:-.04em;font-size:21px}.logo-mark{display:grid;place-items:center;width:40px;height:40px;color:#052f30;background:linear-gradient(135deg,#aaffdb,#36d4ba);border-radius:12px;box-shadow:0 7px 18px rgba(28,195,170,.28);font-size:22px}.eyebrow{text-transform:uppercase;font-size:11px;font-weight:800;letter-spacing:.19em;color:var(--teal-dark)}.tag{display:inline-flex;font-size:12px;font-weight:800;border-radius:999px;padding:7px 12px;background:#def7ed;color:#157b65;letter-spacing:.03em}.muted{color:var(--muted)}.smallprint{font-size:12px;color:#8094a2}.notice{padding:13px 15px;border-radius:12px;background:#fff9ea;border:1px solid #efdaa7;color:#766036;font-size:13px;margin:12px 0}.notice.error{background:#fff0f1;border-color:#f2d1d6;color:#a53447}.notice.success{background:#e8f9f3;border-color:#b8e8d8;color:#1c7d68}.hidden{display:none!important}code,kbd{background:#e8f1f3;border-radius:6px;padding:2px 6px;font-family:ui-monospace,monospace;font-size:.87em}input,textarea,select{border:1px solid #cedee3;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);width:100%;min-width:0}textarea{resize:vertical}label{display:grid;gap:6px;font-size:13px;font-weight:700;color:#355468}.field-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.panel{padding:23px;border:1px solid #e1ecee;border-radius:20px;background:white;box-shadow:0 3px 18px rgba(24,48,71,.035)}
/* Landing */
.landing{overflow-x:hidden;background:#f4fafa}.site-nav{height:88px;display:flex;align-items:center;justify-content:space-between;gap:20px}.site-nav nav{display:flex;gap:30px;align-items:center}.site-nav nav a{color:#5c7283;font-weight:700;font-size:13px}.site-nav nav a:hover{color:var(--teal-dark)}.hero{position:relative;min-height:555px;display:grid;grid-template-columns:1fr 1.05fr;gap:28px;align-items:center;padding-top:35px;padding-bottom:70px}.hero:before{position:absolute;content:'';z-index:0;inset:-20px -20vw auto auto;width:67%;height:570px;background:radial-gradient(ellipse at 50% 40%,#c8faf0,transparent 70%);pointer-events:none}.hero-copy{position:relative;z-index:2}.hero h1{margin:20px 0;line-height:1.04}.hero h1 em{font-style:normal;background:linear-gradient(115deg,#0dba9b,#238fbc);color:transparent;background-clip:text}.hero .sub{max-width:520px;font-size:17px;line-height:1.8}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.hero-info{display:flex;gap:28px;margin-top:32px;flex-wrap:wrap}.hero-info div{border-left:3px solid #11bfa5;padding-left:12px}.hero-info strong{display:block;font:700 23px 'Space Grotesk'}.hero-info span{color:#7b91a0;font-size:12px}.campus-visual{height:430px;position:relative;border-radius:35px;background:radial-gradient(circle at 30% 25%,#ddfff3 5%,#b7e7e7 42%,#9bbfd5 100%);overflow:hidden;box-shadow:0 40px 70px rgba(38,97,111,.17);transform:rotate(-1deg)}.campus-visual:after{content:'';position:absolute;inset:auto -25px -50px;background:linear-gradient(180deg,transparent,#0b405735);height:120px}.visual-world{position:absolute;inset:0;transform:scale(.85) rotate(-4deg)}.v-ground{position:absolute;left:6%;top:35%;width:88%;height:56%;background:#7fcbb1;transform:skewY(-14deg) rotate(-6deg);border-radius:12px;box-shadow:0 28px 0 #59ab9e,0 47px 60px #287d7880}.v-path{position:absolute;left:16%;top:58%;width:68%;height:20%;background:#e7ecdd;transform:rotate(-12deg) skewX(-34deg);border-radius:8px}.v-building{position:absolute;box-shadow:12px 15px 0 #317b8c3d;border-radius:6px;transform:skewY(-12deg)}.v-building:before{content:'';position:absolute;left:-10%;right:-1%;height:30%;top:-25%;transform:skewX(32deg);background:#c9e2ed;border-radius:5px}.v-building:after{content:'▤  ▤  ▤';position:absolute;inset:40% 0 auto;color:#fff9;text-align:center;font-size:27px}.v-lab{width:31%;height:35%;top:28%;right:9%;background:#317d97}.v-center{width:27%;height:31%;top:20%;left:11%;background:#3a8899}.v-mini{width:20%;height:23%;left:38%;bottom:11%;background:#c4a66e}.v-tree{position:absolute;z-index:3;width:38px;height:38px;background:#3c9b74;border-radius:50%;box-shadow:8px 9px 0 #246b5945,0 0 0 7px #6ccaa5}.v-t1{left:12%;bottom:22%}.v-t2{right:7%;bottom:22%}.v-t3{left:55%;top:15%}.visual-float{position:absolute;z-index:5;background:#fffefa;padding:11px 15px;border-radius:14px;box-shadow:0 12px 40px #29536d38;font-weight:800;font-size:12px;color:#24445e}.float-a{top:12%;right:4%}.float-b{bottom:9%;left:4%}.features{padding:35px 0 95px}.section-head{text-align:center;margin:0 auto 36px;max-width:660px}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.feature{padding:28px;background:white;border-radius:20px;border:1px solid #e2eeee;box-shadow:0 10px 30px #295e6910}.feature .symbol{font-size:30px;margin-bottom:20px}.feature h3{margin-bottom:8px}.footer{padding:23px 0;border-top:1px solid #dce9e8;color:#78919a;font-size:12px}.footer .wrap{display:flex;justify-content:space-between;gap:15px}.modal-backdrop{position:fixed;z-index:90;inset:0;background:rgba(4,22,39,.67);display:grid;place-items:center;padding:18px;backdrop-filter:blur(6px)}.login-card{width:min(425px,100%);border-radius:24px;background:white;padding:30px;box-shadow:var(--shadow);position:relative}.login-card label{margin:14px 0}.login-card .btn{width:100%}.close-btn{background:#eaf2f3;border:0;border-radius:9px;width:34px;height:34px;display:grid;place-items:center;font-size:21px;color:#3c5c70}.login-card .close-btn{position:absolute;right:18px;top:18px}
/* Setup */
.setup-page{background:linear-gradient(135deg,#d9f4eb,#eef6ff);min-height:100vh;display:grid;place-items:center;padding:35px 15px}.setup-card{width:min(730px,100%);padding:36px;background:white;border-radius:24px;box-shadow:var(--shadow)}.setup-card p{line-height:1.8}.setup-form{display:grid;gap:14px}.setup-form .btn{margin-top:16px}
/* Dashboard */
.dash-page{display:grid;grid-template-columns:238px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:var(--navy);color:white;padding:27px 17px;display:flex;flex-direction:column;gap:24px}.sidebar .logo{font-size:17px}.sidebar .logo-mark{width:36px;height:36px;font-size:19px}.side-links{display:grid;gap:9px}.nav-link{border:0;background:transparent;color:#acc3d0;display:flex;text-align:left;align-items:center;gap:12px;width:100%;font-weight:700;font-size:13px;border-radius:12px;padding:12px}.nav-link:hover,.nav-link.active{background:#203c54;color:white}.side-bottom{margin-top:auto;color:#9cb3bf;font-size:12px}.dash-content{min-width:0;padding:29px clamp(20px,3vw,48px)}.dash-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:32px}.dash-title{margin:0 0 8px;font-size:32px}.dash-top-actions{display:flex;align-items:center;gap:10px}.user-chip{display:flex;align-items:center;gap:11px;border-radius:50px;background:#fff;padding:6px 15px 6px 6px;font-size:12px;font-weight:800}.user-avatar{display:grid;place-items:center;background:#e1f7ef;color:#087f71;width:33px;height:33px;border-radius:50%}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.metric{padding:21px;background:#fff;border:1px solid #e1ecee;border-radius:17px;position:relative}.metric-label{color:var(--muted);font-size:12px;font-weight:700}.metric strong{display:block;font:700 34px/1.4 'Space Grotesk';color:var(--navy)}.metric small{font-size:11px;color:#76a29d}.dash-grid{display:grid;grid-template-columns:1.3fr .9fr;gap:18px}.mini-list{display:grid;gap:10px}.mini-row{display:flex;justify-content:space-between;gap:10px;align-items:center;border-radius:11px;padding:12px;background:#f6f9fb;font-size:13px}.table-wrap{overflow:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:12px 11px;text-align:left;border-bottom:1px solid #e9f0f1;white-space:nowrap}th{color:#637b8a;background:#f5f9fa;font-size:11px;letter-spacing:.04em;text-transform:uppercase}td{font-weight:600}tr:hover td{background:#f8fcfc}.pill{border-radius:100px;background:#e2f7ed;color:#18775a;padding:5px 9px;font-size:11px;font-weight:800;display:inline-block}.pill.pending{background:#fff4df;color:#a16b20}.form-stack{display:grid;gap:14px}.section{display:none}.section.active{display:block}.section-head-dash{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.input-group{display:flex;gap:9px;align-items:center}.input-group select{min-width:250px}.hint{font-size:12px;color:#778f9f}.dash-two{display:grid;grid-template-columns:1fr 1fr;gap:17px}.credential-box{max-height:250px;overflow:auto;padding:12px;background:#10263b;color:#e4fff7;border-radius:12px;font-size:12px;white-space:pre-wrap;word-break:break-word}.spinner{display:inline-block;animation:spin 1.5s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
/* Game */
.game-page{overflow:hidden;background:#072c41;color:white;font-size:14px}.game-shell{position:relative;width:100vw;height:100vh;height:100dvh;overflow:hidden}.world-canvas{width:100%;height:100%;display:block;background:linear-gradient(#a2dded,#e5f9f1)}.game-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(7,31,49,.45),transparent 24%,transparent 75%,rgba(4,24,36,.36))}.game-top{position:absolute;top:19px;left:23px;right:23px;display:flex;justify-content:space-between;align-items:flex-start;gap:15px;pointer-events:none}.game-top>*{pointer-events:auto}.game-brand{display:flex;align-items:center;gap:12px;background:rgba(7,36,55,.75);border:1px solid rgba(255,255,255,.15);border-radius:17px;padding:10px 15px;backdrop-filter:blur(13px)}.game-brand .logo-mark{width:39px;height:39px}.game-brand strong{display:block;font:700 17px 'Space Grotesk';letter-spacing:-.02em}.game-brand small{font-size:11px;color:#b4d9dc}.game-quick{display:flex;gap:8px}.gbtn{padding:11px 14px;color:white;border:1px solid #ffffff44;background:#0b2f49c9;backdrop-filter:blur(12px);border-radius:12px;font-weight:800;font-size:12px;min-height:40px}.gbtn:hover{background:#155876}.game-bottom{pointer-events:none;position:absolute;bottom:24px;left:24px;right:24px;display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.game-bottom>*{pointer-events:auto}.quest-card{background:#092d45d9;border:1px solid #ffffff2a;border-radius:16px;padding:17px;min-width:280px;max-width:380px;box-shadow:0 16px 35px #041e3655;backdrop-filter:blur(16px)}.quest-card .qtitle{font-weight:800;font-size:15px;margin:5px 0}.quest-card .smallprint{color:#b4d5de}.quest-dot{width:7px;height:7px;background:#35e8b2;display:inline-block;border-radius:100%;margin-right:5px}.controls-hint{font-size:11px;color:#e7fbfb;background:#092d45bb;border:1px solid #ffffff22;padding:11px 16px;border-radius:12px;line-height:1.9;backdrop-filter:blur(12px)}.controls-hint kbd{background:#ffffff25;color:white;border:1px solid #ffffff33}.interaction-prompt{position:absolute;z-index:15;left:50%;top:67%;transform:translate(-50%,-50%);border:1px solid #e2fff57a;border-radius:16px;padding:12px 19px;background:#0d455cdd;box-shadow:0 15px 35px #08273780;white-space:nowrap;color:#fff;display:flex;gap:12px;align-items:center;font-weight:800;backdrop-filter:blur(10px)}.interaction-prompt b{display:grid;place-items:center;background:#a7f7e1;color:#0c5d57;border-radius:7px;width:31px;height:31px}.game-labels{position:absolute;inset:0;pointer-events:none}.world-label{position:absolute;transform:translate(-50%,-50%);padding:7px 11px;background:#0a354bbd;border:1px solid #fff4;border-radius:9px;backdrop-filter:blur(6px);color:#ecfff9;font-weight:800;font-size:11px;white-space:nowrap;box-shadow:0 7px 15px #08273733}.world-label.live{background:#0c746fda;border:1px solid #b7fff0}.minimap-box{position:absolute;right:24px;top:89px;background:#082b43d6;border:1px solid #ffffff30;border-radius:15px;padding:9px;width:179px;backdrop-filter:blur(14px)}.minimap-header{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:800;letter-spacing:.09em;color:#d9eeef;padding:0 4px 6px}.minimap-box canvas{display:block;width:160px;height:119px;border-radius:9px;background:#a4c6ac}.game-modal-layer{position:absolute;inset:0;z-index:40;background:#061d30b8;backdrop-filter:blur(8px);display:grid;place-items:center;padding:20px;overflow:auto}.game-modal{width:min(590px,100%);max-height:calc(100dvh - 36px);overflow:auto;border-radius:21px;background:#f8fcfc;color:var(--ink);box-shadow:0 35px 90px #001c32aa;padding:27px}.game-modal h2{font-size:28px;margin:9px 0 12px}.game-modal p{line-height:1.75}.game-modal .eyebrow{color:var(--teal-dark)}.game-modal .btn{margin:4px 7px 4px 0}.game-modal .flex-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:20px}.message{border-left:3px solid #10a791;padding:10px 13px;background:#effbf6;border-radius:5px;margin:12px 0}.choice-group{padding:12px 0;border-top:1px solid var(--border)}.choice-group strong{display:block;margin-bottom:10px}.choice{display:flex;align-items:flex-start;gap:8px;padding:10px 11px;border:1px solid #d9e7e9;border-radius:10px;margin:7px 0;background:white;font-size:13px;color:#314c5c;cursor:pointer}.choice:hover{border-color:#42bdac}.choice input{width:auto;margin:3px 0 0;accent-color:#12a88e}.mission-panel{position:absolute;z-index:30;right:21px;top:85px;bottom:20px;display:flex;flex-direction:column;width:min(420px,calc(100vw - 40px));background:#fff;color:var(--ink);box-shadow:0 25px 65px #0b263ea0;border-radius:20px;overflow:hidden;border:1px solid #d5e5e8}.mission-head{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#102f45;color:#fff;padding:16px 18px}.mission-head strong{display:block}.mission-head small{color:#bce6e4}.mission-body{overflow:auto;flex:1;padding:20px}.mission-body p{font-size:13px}.mission-body h3{font-size:17px}.mission-panel .close-btn{background:#2b5269;color:#fff}.sim-bars{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.sim-bars button{padding:12px 5px;font-size:11px;border:1px solid #dce9ea;background:#f2f8f8;border-radius:10px;font-weight:800;color:#486677}.sim-bars button.active,.sim-bars button:hover{background:#e1f9f1;border-color:#39b8a0;color:#007e6a}.sim-bars button.done:before{content:'✓ ';color:#0d9981}.sim-bars button:disabled{opacity:.6;cursor:not-allowed}.data-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:16px 0}.data-item{padding:9px 7px;text-align:center;background:#eff7f8;border-radius:9px;font-size:11px;color:#628097}.data-item strong{display:block;color:#15364b;font:700 19px 'Space Grotesk'}.chart-canvas{width:100%;height:145px;display:block;margin:6px 0 17px;border:1px solid #e2ebee;border-radius:10px;background:#fbfeff}.study-steps{display:flex;flex-direction:column;gap:9px;margin:12px 0}.study-step{display:flex;gap:12px;align-items:center;font-size:12px;color:#546d80}.study-step i{font-style:normal;display:grid;place-items:center;background:#e8f0f1;color:#617c8a;border-radius:100px;width:24px;height:24px;font-weight:800;flex-shrink:0}.study-step.done i{background:#1eaf93;color:white}.study-step.done{color:#188874}.sim-disclaimer{padding:11px;border-radius:9px;background:#fff5de;border:1px solid #eedcb7;color:#93713a;font-size:11px}.mobile-controls{display:none}.move-pad{position:absolute;bottom:24px;left:18px;width:132px;height:132px;background:#0b2f49aa;border:1px solid #fff5;border-radius:50%;touch-action:none;box-shadow:0 0 0 7px #ffffff12}.joystick{position:absolute;left:43px;top:43px;width:46px;height:46px;border-radius:50%;background:#7debd3cc;border:2px solid #ecfff9;box-shadow:0 5px 20px #04253466;pointer-events:none}.mobile-interact{position:absolute;bottom:50px;right:22px;border:1px solid #fff8;border-radius:100%;background:#0f9f89dd;color:white;width:78px;height:78px;display:grid;place-items:center;font-weight:800;touch-action:manipulation}.mobile-camera-hint{position:absolute;bottom:145px;right:17px;padding:7px 9px;font-size:10px;border-radius:8px;background:#09334888;color:#e6fffa}.mobile-top-ctrl{display:none}
@media(max-width:1050px){.hero{grid-template-columns:1fr 1fr}.campus-visual{height:350px}.metric-grid{grid-template-columns:repeat(2,1fr)}.dash-grid{grid-template-columns:1fr}.sidebar{width:210px}.dash-page{grid-template-columns:210px 1fr}}
@media(max-width:760px){.wrap{padding-left:18px;padding-right:18px}.site-nav{height:72px}.site-nav nav{display:none}.hero{grid-template-columns:1fr;padding:35px 18px 45px}.hero h1{font-size:40px}.hero .sub{font-size:15px}.campus-visual{height:285px}.feature-grid{grid-template-columns:1fr}.features{padding-bottom:55px}.footer .wrap{flex-direction:column}.dash-page{grid-template-columns:1fr}.sidebar{position:relative;height:auto;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px 16px}.sidebar .logo{font-size:14px}.sidebar .logo-mark{width:33px;height:33px}.side-links{display:flex;gap:2px}.nav-link{font-size:0;width:auto;padding:8px}.nav-link::first-letter{font-size:16px}.side-bottom{display:none}.dash-content{padding:20px 16px}.dash-top{align-items:flex-start;gap:15px}.dash-title{font-size:26px}.dash-top-actions .btn{font-size:11px}.metric-grid{gap:9px}.metric{padding:14px}.metric strong{font-size:26px}.dash-two{grid-template-columns:1fr}.field-grid{grid-template-columns:1fr}.input-group{flex-wrap:wrap}.input-group select{min-width:170px}.game-top{top:11px;left:10px;right:10px}.game-brand{padding:8px 10px;gap:8px}.game-brand .logo-mark{width:32px;height:32px;font-size:17px}.game-brand strong{font-size:12px}.game-brand small{font-size:9px}.game-quick .gbtn{padding:8px;font-size:11px}.game-quick .desktop-only{display:none}.minimap-box{right:11px;top:69px;width:135px;padding:6px}.minimap-box canvas{width:121px;height:95px}.game-bottom{bottom:11px;left:10px;right:10px;justify-content:center}.quest-card{min-width:0;max-width:calc(100vw - 165px);width:230px;padding:11px;font-size:11px;align-self:flex-end;margin-left:auto;margin-right:auto}.quest-card .qtitle{font-size:12px}.controls-hint{display:none}.mobile-controls{display:block}.interaction-prompt{top:auto;bottom:28%;padding:8px 10px;font-size:11px}.interaction-prompt b{width:25px;height:25px}.mission-panel{top:62px;right:9px;bottom:10px;width:min(420px,calc(100vw - 18px))}.game-modal{padding:20px}.game-modal h2{font-size:24px}.world-label{font-size:9px}.mobile-top-ctrl{display:block}}
@media(max-width:420px){.game-top .game-brand small{display:none}.game-brand strong{font-size:10px}.game-quick .gbtn{font-size:10px;padding:8px}.quest-card{width:170px;padding:10px}.quest-card .smallprint{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}}
/* Touch HUD: move mission card above joystick instead of overlaying controls. */
@media(max-width:760px){
 .game-bottom{bottom:0;left:0;right:0;display:block}
 .game-bottom .quest-card{position:absolute;bottom:174px;left:12px;margin:0;min-width:0;width:min(220px,calc(100vw - 150px));max-width:none;padding:11px 12px}
 .mobile-camera-hint{bottom:151px}
}
