@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./assets/font-0.ttf) format('truetype');
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(./assets/font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(./assets/font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(./assets/font-3.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(./assets/font-4.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(./assets/font-5.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(./assets/font-6.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(./assets/font-7.ttf) format('truetype');
}

:root{-webkit-text-size-adjust:100%;text-size-adjust:100%;--ink:#121c1b;--paper:#e5e4d5;--muted:#9eaaa2;--gold:#d8b779;--line:#ffffff22;--green:#a7c7b3;--danger:#d39a85;--surface:#172322;--font:'IBM Plex Sans',sans-serif;--mono:'IBM Plex Mono',monospace;--display:'Barlow Condensed',Impact,sans-serif;color-scheme:dark;font-family:var(--font);background:#101a1a;color:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input{ -webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button{border:0}a{color:var(--gold)}button.primary{background:var(--gold);color:#17211c;padding:16px 27px;font-weight:600;letter-spacing:.02em;min-height:50px;transition:background .15s,transform .15s}button.primary:hover{background:#ead09a;transform:translateY(-1px)}button.secondary{background:#e4ead70b;border:1px solid var(--line);padding:14px 22px;min-height:48px}button.secondary:hover{background:#ffffff0e}.eyebrow{font:500 10px/1.6 var(--mono);letter-spacing:.19em;text-transform:uppercase;color:var(--gold)}.muted{color:var(--muted)}.hidden{display:none!important}#world{position:fixed;inset:0;transition:filter .4s}#world canvas{display:block;width:100%;height:100%;touch-action:none}#world-shade{position:fixed;inset:0;pointer-events:none;background:linear-gradient(180deg,#09131255,transparent 25%,transparent 65%,#081212aa)}body.title-mode #world{left:20%}body.title-mode #world-shade{background:linear-gradient(90deg,#0d1818 5%,#0d1818ee 24%,#0d181866 51%,transparent 76%),linear-gradient(0deg,#0d1818 0%,transparent 28%)}#app{position:relative;width:100%;height:100dvh;pointer-events:none}#app button,#app a,#app input,#app .scrollable{pointer-events:auto}.title-screen{height:100%;display:flex;flex-direction:column;padding:38px 5vw;justify-content:space-between}.brand-row{display:flex;justify-content:space-between;align-items:center;font:11px var(--mono);letter-spacing:.16em;text-transform:uppercase}.brand-mark{display:inline-block;width:22px;height:22px;border:1px solid var(--gold);position:relative;vertical-align:middle;margin-right:14px}.brand-mark:after{content:'N';position:absolute;inset:1px;text-align:center;color:var(--gold);font:17px var(--display)}.title-content{max-width:510px;margin-top:20px}.title-content h1{font:600 clamp(84px,12vw,172px)/.78 var(--display);letter-spacing:-.035em;margin:26px 0 29px;text-transform:uppercase}.title-content h1 span{display:block;color:var(--gold)}.title-description{max-width:350px;font-size:16px;line-height:1.65;color:#b5c0b8;margin:20px 0 29px}.title-actions{display:flex;gap:12px;flex-wrap:wrap}.title-note{font:10px/1.8 var(--mono);color:#91a299;margin-top:20px;max-width:350px}.title-footer{display:flex;justify-content:space-between;gap:20px;align-items:end;font:10px/1.7 var(--mono);color:#90a096}.text-button{padding:8px 0;background:none;border-bottom:1px solid #9da99655;font:11px var(--mono);min-height:40px}.scene-caption{position:absolute;right:6%;bottom:26%;font:10px/1.8 var(--mono);letter-spacing:.1em;color:#b8c7bb;text-align:right}.scene-caption:before{content:'';display:block;width:65px;border-top:1px solid var(--gold);margin:0 0 12px auto}.hud{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:start;padding:26px 32px;gap:12px;background:linear-gradient(#0a1414b8,transparent)}.hud-brand{font:600 24px/.9 var(--display);letter-spacing:.04em}.hud-brand small{display:block;font:9px var(--mono);color:var(--muted);margin-top:8px;letter-spacing:.12em}.hud-buttons{display:flex;gap:8px}.icon-button{width:42px;height:42px;border:1px solid #ffffff25;background:#10201ed9;display:grid;place-items:center;font:14px var(--mono)}.location-tag{position:absolute;top:110px;left:32px;padding-left:13px;border-left:2px solid var(--gold)}.location-tag h2{font:500 29px var(--display);text-transform:uppercase;margin:4px 0}.objective{position:absolute;left:32px;bottom:96px;max-width:315px;padding:16px 19px;background:#101e1dec;border:1px solid var(--line);box-shadow:0 10px 35px #0004;pointer-events:auto}.objective p{font-size:14px;line-height:1.5;margin:7px 0 0}.objective .sub{font:10px/1.7 var(--mono);color:var(--muted);margin-top:8px}.world-nav{position:absolute;bottom:24px;left:32px;right:32px;display:flex;gap:8px;align-items:center}.world-nav button{background:#15221fec;border:1px solid #ffffff26;padding:13px 17px;min-height:45px;font-size:12px}.world-nav button.active{border-color:#d8b77999;color:var(--gold)}.world-nav .nav-tip{margin-left:auto;font:10px/1.5 var(--mono);color:#b1bdb4}.world-labels{position:absolute;inset:0;pointer-events:none}.world-label{position:absolute;white-space:nowrap;background:#10201ee6;backdrop-filter:blur(5px);border:1px solid #c7d1b344;font-size:11px;padding:9px 11px;min-height:38px;display:flex;align-items:center;gap:8px;pointer-events:auto;box-shadow:0 6px 16px #0004}.world-label:hover{border-color:var(--gold);color:var(--gold)}.marker-dot{width:5px;height:5px;border:1px solid var(--gold);border-radius:50%}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:28px;background:#081210a8;backdrop-filter:blur(8px);pointer-events:auto}.panel{background:#14211f;border:1px solid #84958a55;box-shadow:0 30px 120px #0008;max-width:760px;width:100%;max-height:calc(100dvh - 56px);display:flex;flex-direction:column;animation:enter .25s ease-out;overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:20px 25px;border-bottom:1px solid var(--line);gap:15px}.panel-head h2{font:500 28px var(--display);margin:0}.panel-body{padding:26px;overflow:auto;overscroll-behavior:contain;line-height:1.7;pointer-events:auto}.panel-body p{font-size:15px;color:#ced7cc}.panel-footer{padding:18px 25px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px}.story-panel{max-width:760px}.story-meta{display:flex;align-items:center;gap:12px}.chapter-number{font:500 12px var(--mono);border:1px solid #d7b57255;width:36px;height:36px;display:grid;place-items:center;color:var(--gold)}.story-title{font:500 clamp(32px,5vw,51px)/1.1 var(--display);margin:0 0 22px}.story-body{max-width:610px;font-size:16px;line-height:1.75;color:#c8d0c7}.story-body p{margin:0 0 17px}.story-body em{color:#e2c48c;font-style:normal}.story-message{padding:17px 20px;border-left:2px solid #7eaa96;background:#ffffff06;margin:22px 0}.story-message .speaker{font:10px var(--mono);letter-spacing:.1em;color:var(--green);margin-bottom:8px}.story-message p{margin:0}.choices{display:grid;gap:9px;margin-top:24px}.choice{position:relative;display:flex;align-items:center;gap:16px;text-align:left;width:100%;background:#ffffff04;border:1px solid #a9b5a331;padding:15px 18px;font-size:14px;line-height:1.5;min-height:54px}.choice:hover{background:#d8b77910;border-color:#d8b77988}.choice-index{font:11px var(--mono);color:var(--gold);flex:0 0 18px}.choice small{display:block;font:10px/1.7 var(--mono);color:#96a69a;margin-top:4px}.choice.locked{border-style:dashed}.avatar{width:44px;height:44px;border-radius:50%;background-image:url('./assets/portraits.webp');background-size:200% 200%;flex-shrink:0;border:1px solid #c0c8b044;background-color:#516256}.avatar.kai{background-position:0 0}.avatar.ravi{background-position:100% 0}.avatar.daniel{background-position:0 100%}.avatar.mara{background-position:100% 100%}.avatar.boss,.avatar.mum{background-image:none;display:grid;place-items:center;font:16px var(--display);background:#536458}.workstation{position:absolute;inset:22px;display:flex;flex-direction:column;pointer-events:auto;background:#132220;border:1px solid #98aa9655;box-shadow:0 20px 100px #0008;animation:enter .25s ease-out;overflow:hidden}.work-titlebar{display:flex;justify-content:space-between;align-items:center;padding:15px 21px;background:#20332c;border-bottom:1px solid #90a68d44}.company{font:500 13px var(--mono);letter-spacing:.12em}.company small{font:9px var(--mono);letter-spacing:.02em;color:#a6b7a3;display:block;margin-top:5px}.work-titlebar .session{font:10px var(--mono);color:#bac6b5}.work-grid{display:grid;grid-template-columns:215px minmax(280px,1fr) 292px;flex:1;min-height:0}.work-sidebar{border-right:1px solid var(--line);padding:21px 12px;display:flex;flex-direction:column;gap:7px}.sidebar-label{font:9px var(--mono);letter-spacing:.13em;color:#809a8b;text-transform:uppercase;margin:0 10px 12px}.contact{display:flex;gap:11px;align-items:center;background:none;text-align:left;padding:12px 9px;width:100%;border:1px solid transparent}.contact.active{background:#8abca01a;border:1px solid #8abca036}.contact-name{font-size:13px;font-weight:500}.contact-preview{font:9px/1.4 var(--mono);color:#92a699;display:block;margin-top:6px}.contact .avatar{width:37px;height:37px}.badge{font:9px var(--mono);padding:3px 5px;background:#d8b77922;color:var(--gold);margin-left:auto}.sidebar-bottom{margin-top:auto;padding:15px 9px;color:#899f91;font:10px/1.7 var(--mono)}.chat-area{display:flex;flex-direction:column;min-height:0;min-width:0}.chat-heading{padding:17px 23px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}.chat-heading h2{font-size:16px;margin:0}.chat-heading p{font:10px var(--mono);color:#93a99a;margin:6px 0 0}.chat-log{flex:1;padding:20px 24px;overflow:auto;overscroll-behavior:contain;scroll-behavior:smooth}.chat-date{text-align:center;font:9px var(--mono);letter-spacing:.09em;color:#759281;margin:8px 0 20px}.message{margin:0 0 16px;max-width:89%}.message p{background:#24382f;padding:13px 16px;line-height:1.65;font-size:14px;margin:0;white-space:pre-line}.message .message-meta{font:9px var(--mono);color:#819f8d;margin:6px 2px}.message.sent{margin-left:auto}.message.sent p{background:#364a37;color:#e4e8d5}.message.system{max-width:100%;border-left:2px solid #c4a576;padding:10px 14px;background:#c4a5760b}.message.system p{background:none;font:11px/1.6 var(--mono);padding:0;color:#b9bea7}.message .message-meta .read{color:#b8ccb5}.response-area{padding:15px 20px 19px;border-top:1px solid var(--line);background:#10231c;max-height:49%;overflow:auto;overscroll-behavior:contain}.response-area .choices{margin-top:10px;gap:7px}.response-area .choice{font-size:13px;padding:12px 14px;min-height:49px}.response-heading{display:flex;justify-content:space-between;gap:10px;align-items:center}.response-heading span{font:9px var(--mono);color:#b1c2ad;letter-spacing:.08em}.handbook-link{background:none;color:var(--gold);font:10px var(--mono);padding:6px 0;border-bottom:1px solid #d8b77966}.work-right{border-left:1px solid var(--line);background:#1b2b23;display:flex;flex-direction:column;min-height:0}.supervisor-card{padding:20px;border-bottom:1px solid var(--line)}.supervisor-card .eyebrow{font-size:9px}.supervisor-card p{font-size:12px;line-height:1.7;color:#c5cdbb;margin:11px 0 0}.quota-card{padding:20px;border-bottom:1px solid var(--line)}.quota-row{display:flex;justify-content:space-between;font:10px var(--mono);color:#a6b6a0}.quota-value{font:500 30px var(--display);margin:9px 0}.quota-track{height:4px;background:#ffffff13;margin-top:13px}.quota-track div{height:100%;background:var(--gold)}.dossier{padding:20px;overflow:auto}.dossier h3{font:500 10px var(--mono);letter-spacing:.12em;color:var(--gold);margin:0 0 15px}.dossier p{font-size:12px;line-height:1.7;color:#b5c3af}.dossier .fact{padding:10px 0;border-bottom:1px solid #ffffff0d}.dossier .fact span{font:9px var(--mono);color:#819b88;display:block;margin-bottom:6px}.work-bottom{display:flex;justify-content:space-between;gap:15px;padding:11px 20px;background:#20332b;border-top:1px solid var(--line);font:9px var(--mono);color:#91aa96}.mobile-work-tabs{display:none}.handbook-panel{background:#e1e0ca;color:#283b32;max-width:780px;max-height:90dvh}.handbook-panel .panel-head{border-color:#314b352c}.handbook-panel .eyebrow{color:#587357}.handbook-panel .icon-button{color:#334c3b;background:transparent;border-color:#314b3544}.book-layout{display:grid;grid-template-columns:185px 1fr;min-height:0;overflow:hidden}.book-tabs{padding:18px 12px;border-right:1px solid #314b3530}.book-tabs button{display:block;width:100%;background:none;color:#405c43;font:11px/1.5 var(--mono);padding:12px 10px;text-align:left}.book-tabs button.active{background:#314b3514;border-left:2px solid #52704a}.book-page{padding:28px;overflow:auto}.book-page h3{font:600 38px/.98 var(--display);text-transform:uppercase;margin:12px 0 20px}.book-page p{font-size:14px;line-height:1.8;color:#435344}.book-page .rule{padding:16px 0;border-top:1px solid #324a322a}.book-page .rule b{font:600 11px var(--mono);display:block;margin-bottom:8px}.pencil-note{font:italic 16px/1.65 Georgia,serif;color:#705c3c;padding:14px 0 8px;transform:rotate(-1deg)}.book-stamp{font:10px var(--mono);letter-spacing:.12em;border:1px solid #6b735177;display:inline-block;padding:6px 9px;color:#627653}.book-footer{padding:13px 25px;border-top:1px solid #314b352c;display:flex;justify-content:space-between;gap:10px;font:9px var(--mono);color:#6b7d61}.book-footer button{color:#31482e;background:none;font:inherit;text-decoration:underline}.status-strip{display:flex;gap:15px;flex-wrap:wrap;margin-bottom:24px}.status-strip span{font:10px var(--mono);border:1px solid var(--line);padding:9px 11px;color:var(--gold)}.ending-title{font:500 56px/.95 var(--display);text-transform:uppercase;margin:15px 0 25px}.ending-people{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin:25px 0}.ending-person{border:1px solid var(--line);padding:18px}.ending-person .person-row{display:flex;gap:12px;align-items:center}.ending-person h3{font-size:14px}.ending-person p{font-size:13px;line-height:1.65}.learning-card{border-top:1px solid var(--line);padding:18px 0}.learning-card h3{font-size:15px;color:var(--gold);margin:0 0 9px}.learning-card p{font-size:13px;margin:0;line-height:1.7}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:17px 0;border-bottom:1px solid var(--line);gap:20px}.settings-row p{margin:0;font-size:13px}.settings-row small{font-size:11px;color:var(--muted)}#toast{position:fixed;left:50%;bottom:90px;transform:translate(-50%,15px);opacity:0;pointer-events:none;padding:13px 19px;max-width:min(90vw,520px);background:#d6ddc8;color:#1c3327;font-size:12px;line-height:1.5;box-shadow:0 6px 25px #0005;transition:opacity .2s,transform .2s;z-index:20}#toast.visible{opacity:1;transform:translate(-50%,0)}.scene-unavailable{position:absolute;inset:0;display:grid;place-items:center;padding:25px;color:#b4c2b1;background:#172722}.no-script{padding:30px}.shortcut-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.shortcut-actions button{font:10px var(--mono);background:none;border:1px solid #d8b77955;padding:8px;color:var(--gold)}@keyframes enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.workstation{inset:5vh 6vw}.work-grid{grid-template-columns:240px minmax(340px,1fr) 320px}.chat-log{padding:25px 40px}.response-area{padding:18px 35px}}@media(max-width:1000px){.work-grid{grid-template-columns:176px minmax(260px,1fr)}.work-right{display:none}.workstation{inset:12px}.company{font-size:11px}.scene-caption{right:4%;bottom:24%}.title-content{max-width:420px}}@media(max-width:650px){body.title-mode #world{left:0;bottom:34%}body.title-mode #world-shade{background:linear-gradient(0deg,#0d1818 24%,#0d1818ee 36%,#0d181830 72%,#0d181810)}.title-screen{padding:24px;justify-content:initial}.brand-row{font-size:9px}.brand-mark{width:18px;height:18px;margin-right:8px}.brand-mark:after{font-size:14px}.title-content{margin-top:auto;max-width:100%;padding-top:18vh}.title-content h1{font-size:88px;line-height:.78;letter-spacing:-.02em;margin:18px 0}.title-content h1 span{display:inline;margin-left:10px}.title-content h1{white-space:nowrap}.title-description{font-size:13px;line-height:1.6;max-width:300px;margin:18px 0}.title-note{font-size:9px;margin-top:14px}.title-footer{font-size:8px;margin-top:20px;align-items:center}.title-actions button{padding:14px 19px;font-size:13px;min-height:48px}.scene-caption{display:none}.hud{padding:18px 17px}.hud-brand{font-size:23px}.hud-brand small{font-size:8px}.hud-buttons{gap:6px}.icon-button{width:39px;height:39px}.location-tag{top:90px;left:19px}.location-tag h2{font-size:25px}.location-tag .eyebrow{font-size:8px}.objective{left:16px;right:16px;bottom:91px;max-width:none;padding:13px 15px}.objective p{font-size:12px}.objective .sub{font-size:9px}.world-nav{left:16px;right:16px;bottom:max(21px,env(safe-area-inset-bottom));gap:7px}.world-nav button{padding:12px;font-size:11px;flex:1}.world-nav .nav-tip{display:none}.world-label{font-size:9px;padding:9px 8px;min-height:37px;gap:5px}.overlay{padding:12px;background:#0a1612b8}.panel{max-height:calc(100dvh - 24px)}.panel-head{padding:15px 17px}.panel-head h2{font-size:25px}.panel-body{padding:21px 19px}.story-title{font-size:36px;margin-bottom:18px}.story-body{font-size:14px;line-height:1.7}.story-body p{font-size:14px}.story-message{padding:14px 15px;margin:18px 0}.choices{gap:8px;margin-top:20px}.choice{font-size:13px;padding:13px 12px;gap:9px}.choice small{font-size:9px}.panel-footer{padding:14px 18px}.workstation{inset:0;border:0;padding-top:env(safe-area-inset-top)}.work-titlebar{padding:12px 15px;min-height:62px}.company{font-size:10px}.company small{font-size:8px}.work-titlebar .session{display:none}.work-grid{display:flex;flex-direction:column;position:relative}.work-sidebar{padding:8px 10px;flex-direction:row;gap:7px;border-right:0;border-bottom:1px solid var(--line)}.work-sidebar .sidebar-label,.sidebar-bottom{display:none}.contact{padding:8px;gap:8px;flex:1}.contact-name{font-size:12px}.contact .avatar{width:31px;height:31px}.contact-preview{font-size:8px;margin-top:4px}.chat-area{flex:1;overflow:hidden}.chat-heading{padding:12px 16px;gap:10px}.chat-heading h2{font-size:14px}.chat-heading p{font-size:9px}.chat-heading .avatar{width:35px;height:35px}.chat-log{padding:14px 16px;min-height:90px}.message{max-width:94%;margin-bottom:13px}.message p{font-size:13px;padding:11px 13px;line-height:1.6}.message.system p{font-size:10px}.message-meta{font-size:8px!important}.chat-date{font-size:8px;margin:3px 0 15px}.response-area{padding:11px 12px 12px;max-height:47%;flex-shrink:0}.response-area .choice{font-size:12px;padding:11px 10px;line-height:1.45;min-height:48px}.response-area .choice small{font-size:8px}.response-heading span{font-size:8px}.response-heading .handbook-link{font-size:9px}.work-bottom{padding:10px 13px calc(10px + env(safe-area-inset-bottom));font-size:8px}.mobile-work-tabs{display:flex;gap:5px;margin-left:auto}.mobile-work-tabs button{background:none;padding:9px 7px;border:1px solid #ffffff26;font:9px var(--mono);color:var(--gold)}.book-layout{display:flex;flex-direction:column}.book-tabs{display:flex;gap:5px;border-right:0;border-bottom:1px solid #314b3530;padding:9px;overflow:auto;flex-shrink:0}.book-tabs button{width:auto;white-space:nowrap;padding:8px 10px;font-size:9px}.book-tabs button.active{border-left:0;border-bottom:2px solid #52704a}.book-page{padding:22px}.book-page h3{font-size:34px}.book-page p{font-size:13px}.book-footer{font-size:8px;padding:12px 16px}.ending-title{font-size:45px}.ending-people{grid-template-columns:1fr}.ending-person{padding:14px}.status-strip{gap:7px}.status-strip span{font-size:9px;padding:8px}.world-labels{z-index:1}}@media(max-width:370px){.title-content h1{font-size:73px}.title-screen{padding:20px}.title-description{font-size:12px}.contact-preview{display:none}.response-area .choice{font-size:11px}.work-titlebar{padding:9px 11px}.story-title{font-size:31px}}@media(max-height:620px) and (min-width:651px){.title-content h1{font-size:95px}.title-description{font-size:13px;margin:14px 0}.title-screen{padding-top:22px;padding-bottom:20px}.title-note{margin-top:12px}.title-content{margin-top:10px}.workstation{inset:0}.response-area{max-height:53%}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important;transition:none!important}}
/* The assignment and its reaction remain visible on every screen size. */
.supervisor-inline{flex-shrink:0;padding:11px 22px;background:#2d3426;border-bottom:1px solid #d8b77940;display:flex;gap:13px;align-items:baseline}
.supervisor-inline>span{font:500 10px/1.6 var(--mono);color:var(--gold);white-space:nowrap}
.supervisor-inline p{margin:0;font-size:12px;line-height:1.6;color:#e0ddc9}
.supervisor-inline.reaction{background:#3c3027;border-color:#d39a8560}
.quota-note{font-size:12px;line-height:1.6;color:#b5c3af;margin:17px 0 0}
.draft blockquote{margin:12px 0 16px;padding:14px 16px;border-left:2px solid var(--gold);background:#ffffff07;font-size:15px;line-height:1.65}
.draft-actions{display:flex;justify-content:space-between;gap:10px}
.draft-actions button{padding:12px 16px;font-size:12px;min-height:44px}
.handbook-link{min-height:44px}
.world-label.objective-target{border:2px solid var(--gold);background:#27372a}
.world-label.objective-target .marker-dot{background:var(--gold)}
.world-label,.shortcut-actions button,.book-tabs button,.book-footer button{min-height:44px}
.book-footer{align-items:center;padding-top:7px;padding-bottom:7px}
.book-footer button{padding:8px}
.chat-log:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}
@media(max-width:1000px){
 .work-titlebar .session{display:none}
 .mobile-work-tabs{display:flex;gap:5px;margin-left:auto}
 .mobile-work-tabs button{background:none;border:1px solid #ffffff26;font:11px var(--mono);color:var(--gold);min-width:44px;min-height:44px;padding:8px}
 .work-titlebar>.icon-button{min-width:44px;min-height:44px;margin-left:5px}
 .company small{max-width:160px;line-height:1.5}
}
@media(max-width:650px){
 .supervisor-inline{padding:9px 15px;gap:10px;max-height:125px;overflow:auto}
 .supervisor-inline p{font-size:12px;line-height:1.5}
 .supervisor-inline>span{font-size:9px}
 .draft blockquote{font-size:14px;padding:10px 12px;margin:10px 0}
 .draft-actions button{font-size:11px;padding:10px 12px}
 .work-titlebar{padding:8px 12px;gap:3px}
 .response-area .choice{font-size:13px}
 .response-area .choice small{font-size:10px}
 .response-area .choices{margin-top:5px}
 .response-area{max-height:47%}
 .chat-log{min-height:85px}
}
/* Keep every workstation pane inside the viewport, including short landscape screens. */
.work-grid{grid-template-rows:minmax(0,1fr)}
.work-sidebar{min-height:0;overflow:auto}
.chat-log{min-height:0}
@media(max-height:500px) and (min-width:651px){
 .work-titlebar{padding:8px 15px}.work-titlebar .icon-button{width:32px;height:32px}
 .chat-heading{padding:8px 16px}.chat-heading .avatar{width:32px;height:32px}
 .chat-heading h2{font-size:13px}.chat-heading p{font-size:9px;margin-top:4px}
 .chat-log{padding:10px 16px}.response-area{padding:8px 13px;max-height:55%;flex-shrink:0}
 .response-area .choices{gap:5px;margin-top:6px}.response-area .choice{padding:8px 10px;min-height:40px;font-size:12px}
 .response-area .primary{padding:10px 16px;min-height:40px}.sidebar-bottom{display:none}
 .work-sidebar{padding:12px 9px}.work-bottom{padding:8px 14px}
 .chat-area{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,1fr);grid-template-rows:auto auto minmax(0,1fr)}
 .chat-heading,.supervisor-inline{grid-column:1 / -1}
 .chat-log{grid-column:1;grid-row:3;min-height:0}
 .response-area{grid-column:2;grid-row:3;max-height:none;border-top:0;border-left:1px solid var(--line)}
 .draft blockquote{font-size:13px;padding:9px 10px;margin:7px 0}
 .draft-actions button{font-size:11px;padding:8px 10px}
}
/* Supervision: a darker edge while Tan is watching, stronger while he is at the desk. The text always says what is happening. */
.workstation.watched::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:5;box-shadow:inset 0 0 70px 12px #000b}
.workstation.check-active::after{box-shadow:inset 0 0 130px 34px #2b0b07e8;animation:tan-near 2.4s ease-in-out infinite alternate}
@keyframes tan-near{from{opacity:.75}to{opacity:1}}
.tan-check{border:1px solid var(--danger);background:#2a1a16;padding:14px 16px}
.tan-check h3{font:600 21px var(--display);letter-spacing:.02em;color:var(--danger);margin:0 0 8px}
.tan-check h3:focus{outline:none}
.tan-check p{font-size:13px;line-height:1.6;margin:0 0 8px;color:#eadbd0}
.tan-check .choices{margin-top:10px}
.shift-clock{font-variant-numeric:tabular-nums}
.shift-clock.critical{color:var(--danger)}
.draft-note{font:10px var(--mono);color:var(--muted);margin:9px 0 0}
.typing-note{font:11px var(--mono);color:var(--muted);margin:8px 0}
.typing-bubble p{color:var(--muted);letter-spacing:.25em}
/* Media room output: the title carries a slight colour split, a hint that the call or clip is not live. */
.message.media{margin-left:auto}
.message.media p{background:#1c2a31;border:1px dashed #8fb3c966;color:#d2e1e6;font-size:13px}
.message.media p b{font:500 10px var(--mono);letter-spacing:.12em;color:#9cc0d2;text-shadow:1px 0 #d39a8570,-1px 0 #8fb3c970}
.sign-list{margin:10px 0 0;padding-left:20px;display:grid;gap:10px;font-size:13px;line-height:1.6}
.sign-list small{display:block;font:10px/1.5 var(--mono);color:var(--muted);margin-top:3px}
/* Review fixes: status stays readable on phones, drafts explain deletion, checks fit small screens, and the pulse respects reduced motion. */
.work-status{font:10px var(--mono);letter-spacing:.06em;color:#bac6b5;white-space:nowrap}
.draft-note{margin:0 0 9px;font-size:12px}
@media (prefers-reduced-motion:reduce){.workstation.check-active::after{animation:none}}
@media (max-width:650px),(max-height:500px){.workstation.check-active .response-area{max-height:none;flex:1 1 auto}.workstation.check-active .chat-log{flex:0 0 90px}.workstation.check-active .handbook-link{display:none}.workstation.check-active::after{box-shadow:inset 0 0 40px 6px #2b0b07b0}.workstation.watched::after{box-shadow:inset 0 0 30px 4px #0008}}
@media (max-width:650px){.work-status{white-space:normal;font-size:9px;line-height:1.4;min-width:0}.work-titlebar .company small{display:none}}
@media (max-width:650px){.work-bottom{font-size:11px}}
/* Phones: give the chat room. The client's name is already on the active tab and the monitoring status is in the title bar,
   so those repeats are hidden, and small labels stay at 10px or more. */
@media (max-width:650px){.work-titlebar{min-height:0;padding:8px 12px;gap:10px}.work-titlebar .company{display:none}.work-status{font-size:10px;line-height:1.35}.work-sidebar{padding:6px 8px;gap:6px}.contact{padding:6px 8px}.contact .avatar{width:28px;height:28px}.contact-preview{font-size:10px}.chat-heading{padding:6px 14px}.chat-heading .avatar,.chat-heading h2{display:none}.chat-heading p{font-size:10px;line-height:1.4;margin:0}.message .message-meta{font-size:10px!important}.chat-date,.message.system p,.response-heading span{font-size:10px}.work-bottom>span:first-child{display:none}.work-bottom{padding:7px 13px calc(7px + env(safe-area-inset-bottom))}.icon-button{width:44px;height:44px}.shortcut-actions button{font-size:12px;min-height:44px;padding:10px 12px}.hud-brand small{font-size:10px}.title-footer,.brand-row{font-size:10px}}
@media (max-width:650px) and (max-height:700px){.response-area{max-height:44%}}
/* Phone landscape: keep the whole title screen, including the 16+ note and the sound button, on screen. */
@media (max-height:430px) and (orientation:landscape){.title-screen{padding:14px 24px 12px;justify-content:space-between;overflow-y:auto}.title-content{margin-top:0;padding-top:0}.title-content h1{font-size:60px;line-height:.85;margin:6px 0 12px;white-space:nowrap}.title-content h1 span{display:inline;margin-left:10px}.title-note{margin-top:8px}.title-actions button{min-height:46px;padding:11px 22px}.title-footer{margin-top:10px;font-size:10px}}
/* Readability: the workstation's secondary text is larger and brighter (about 7:1 on its panels), so costs, labels and meta lines scan easily. */
.chat-date,.message .message-meta,.contact-preview,.chat-heading p,.choice small,.sidebar-label,.dossier .fact span,.work-bottom,.sidebar-bottom{color:#b3c4b6}
.chat-date,.contact-preview,.dossier .fact span,.work-bottom,.choice small,.chat-heading p,.quota-row{font-size:11px}
.message .message-meta,.sidebar-label{font-size:10px}
/* A rise in debt or a change in supervision is marked in the status line until the next message. */
.work-status .changed{color:#fff;background:#6e2b1f;padding:1px 4px;border-radius:3px}
.work-status .debt b{color:#ffd8cc;font-weight:600}
/* The 3D fallback notice belongs to the rooms only; it never shows behind chats, story panels or the ending. */
.scene-unavailable{display:none}
body.explore-mode .scene-unavailable{display:grid}
/* Larger text, from the pause menu: the main reading text grows and the layout reflows; choices stay reachable by scrolling. */
.text-large .message p,.text-large .phone-message p{font-size:16px}
.text-large .choice,.text-large .response-area .choice,.text-large .phone-reply-option{font-size:16px}
.text-large .choice small{font-size:12px}
.text-large .supervisor-inline p,.text-large .panel-body p,.text-large .learning-card p,.text-large .tan-check p{font-size:15px}
.text-large .story-body,.text-large .panel-body .story-body p{font-size:18px}
.text-large .draft blockquote{font-size:17px}
.text-large .book-page p{font-size:16px}
.text-large .work-status{font-size:13px}
/* Phone landscape has little height: Larger text stays a step smaller there, so a second choice is never pushed off screen. */
@media(max-height:500px) and (min-width:651px){.text-large .response-area .choice{font-size:14px;padding:6px 10px}.text-large .supervisor-inline p{font-size:13px}.text-large .supervisor-inline{max-height:64px}.text-large .message p{font-size:15px}}
/* The ending can hold three buttons; they wrap on narrow screens. */
.ending-panel .panel-footer{flex-wrap:wrap}
/* Ending: outcomes first, a clear CheckMate action, and the full account behind "Why it went this way". */
.kai-card .status-strip{margin:12px 0 0}
.checkmate-card{display:grid;gap:8px;justify-items:start}
.checkmate-cta{display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;border:1px solid var(--gold);color:var(--gold);text-decoration:none;font-weight:600}
.checkmate-cta:hover{background:#d8b77914}
.checkmate-card small{color:var(--muted);font-size:12px}
.checkmate-card .next-game{margin:4px 0 0;color:var(--muted);font-size:13px}
.ending-more{border-top:1px solid var(--line);margin-top:6px}
.ending-more>summary{cursor:pointer;list-style:none;display:flex;align-items:center;min-height:48px;font-weight:600;color:var(--gold)}
.ending-more>summary::-webkit-details-marker{display:none}
.ending-more>summary::before{content:'+';font:500 16px var(--mono);width:22px}
.ending-more[open]>summary::before{content:'−'}
.safety-note{font-size:12px;color:var(--muted)}
/* The payslip reads as a printed document: one line per deduction, totals in bold. */
.payslip{margin:18px 0;padding:16px 18px;background:#e6e2cf;color:#1f2a25;font:12px/1.5 var(--mono);max-width:430px}
.payslip figcaption{font-size:11px;letter-spacing:.08em;color:#55644f;margin-bottom:10px}
.payslip dl{margin:0;display:grid;gap:5px}
.payslip dl>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dotted #1f2a2533;padding-bottom:4px}
.payslip dt{margin:0}.payslip dd{margin:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.payslip .total{font-weight:600;border-bottom:1px solid #1f2a2566}
.payslip-note{margin:10px 0 0!important;font-size:12px!important;color:#6b4a2a!important}
.text-large .payslip{font-size:14px}
/* Secondary workstation text stays at least 11px on phones. */
.work-status{font-size:12px}
.response-area .choice small{font-size:11px}
@media (max-width:650px){.work-status{font-size:11px}}
/* On phones the ending's buttons share rows, so the outcomes keep most of the screen. */
@media (max-width:650px){.ending-panel .panel-footer{gap:8px}.ending-panel .panel-footer button{flex:1 1 40%;min-height:44px;padding:10px 12px}.ending-panel .panel-footer [data-action="replay-shift"]{flex-basis:100%;order:-1}}
.text-large .response-area .choice small{font-size:12px}
/* A line said on a live video call: marked by its label and a gold edge. */
.message.call p{border-left:3px solid #c4a576}
#app.steady .workstation,#app.steady .panel{animation:none}
/* Compact objective: a short line over the room. The controls hint shows on the first nights only, until the player first moves. */
.objective{bottom:84px;max-width:min(360px,calc(100vw - 64px));padding:10px 14px;box-shadow:0 6px 20px #0004}
.objective .eyebrow{font-size:9px;letter-spacing:.16em}
.objective p{font-size:13px;line-height:1.45;margin-top:3px}
.objective .sub{margin-top:5px}
.objective .shortcut-actions{margin-top:8px}
.has-moved .objective .controls-hint{display:none}
@media(max-width:650px){.objective{bottom:80px;padding:9px 12px;max-width:none}.objective p{font-size:12px}}
.text-large .objective p{font-size:15px}
.chapter-three-note{margin-top:14px}
.ending-footer{flex-wrap:wrap}
.ending-chapter3{flex-basis:100%}
.panel-footer.ending-footer .ending-chapter3{order:-2;flex:1 1 100%;width:100%;max-width:none}
/* Phone held sideways: the panel scrolls as one piece, so a short screen is not mostly header and footer. The buttons stay in view. */
@media(orientation:landscape) and (max-height:500px){.overlay{padding:10px max(14px,env(safe-area-inset-right)) 10px max(14px,env(safe-area-inset-left))}.panel{max-height:calc(100dvh - 20px);overflow:auto;overscroll-behavior:contain}.panel-head{padding:8px 16px}.panel-body{padding:14px 18px;overflow:visible}.panel-footer{position:sticky;bottom:0;padding:8px 16px;background:#14211f}.panel-footer button{min-height:44px;padding:8px 16px}.ending-title{font-size:38px;margin:6px 0 14px}}
/* Sheets and menus open above everything else, including the desk and the pause button. In Safari they were drawn behind the desk. */
.modal-layer{z-index:10}
/* The preview notice sits above the title screen, which takes the rest of the height. */
.title-wrap{height:100%;display:flex;flex-direction:column}.title-wrap .title-screen{flex:1;min-height:0;height:auto}
.preview-banner{margin:0;padding:8px max(5vw,env(safe-area-inset-right)) 8px max(5vw,env(safe-area-inset-left));background:var(--gold);color:#17211c;font:500 13px/1.45 var(--font);pointer-events:auto}
@media(max-width:650px){.preview-banner{padding:calc(env(safe-area-inset-top) + 7px) 24px 7px;font-size:12px}}
/* The name is three words. On an upright phone, or a narrow window, it takes two lines: NO GOOD, then CHOICES. */
@media(max-width:650px) and (orientation:portrait),(max-width:560px) and (min-height:431px){.title-content h1{white-space:normal}.title-content h1 span{display:block;margin-left:0}}
