:root{--ink:#10284b;--paper:#f4f2ed;--blue:#166fc1;--bright:#54d1a8;--panel:#092c5b;--sun:#f1b84b;--red:#c84a4a;--teal:#007c73;--line:rgba(16,40,75,.28)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#dfd8c7;color:var(--ink)}body{font-family:Georgia,serif;background:var(--paper)}body:before{position:fixed;z-index:100;top:0;right:0;left:0;height:5px;background:var(--blue);content:""}button,a{font:inherit}button{color:inherit}button:focus-visible,summary:focus-visible,select:focus-visible{outline:3px solid var(--sun);outline-offset:2px;box-shadow:0 0 0 5px var(--ink)}#app{width:min(1180px,100%);margin:0 auto;padding:22px clamp(14px,3vw,38px) 18px}.masthead{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font:800 10px/1 Arial,sans-serif;letter-spacing:.1em}.wordmark{color:inherit;text-decoration:none;font-weight:500}.edition{opacity:.55}.mast-actions{display:flex;align-items:center;gap:14px}.language-switch{display:flex;border:1px solid var(--ink);background:var(--paper)}.language-switch button{min-width:44px;min-height:28px;border:0;border-right:1px solid var(--ink);padding:5px 7px;background:transparent;color:var(--ink);font:800 8px Arial,sans-serif;cursor:pointer}.language-switch button:last-child{border-right:0}.language-switch button.active{background:var(--ink);color:#fff}.language-switch button span{margin-right:3px;font-size:11px}.game-shell{position:relative;width:min(100%,calc((100vh - 105px) * 16 / 9));margin-inline:auto;aspect-ratio:16/9;background:#159fe5;overflow:hidden;box-shadow:0 18px 55px #222e263d,0 0 0 1px var(--ink),inset 0 0 0 5px var(--paper)}.game-shell[data-phase=play]:after{position:absolute;z-index:3;right:0;bottom:0;left:0;height:30%;border-top:2px solid var(--ink);background:#95d2d1;box-shadow:0 -6px #f4f2edb8;content:"";pointer-events:none}.game-shell[data-phase=reveal]{width:min(100%,1120px);height:calc(100vh - 82px);min-height:560px;aspect-ratio:auto;background:#159fe5 url(/assets/journey-isometric-map-v2.png) center center / cover no-repeat;image-rendering:pixelated}.game-shell[data-phase=reveal] #game{display:none}.game-shell[data-phase=reveal]+footer{display:none}#game{position:absolute;top:0;left:0;width:100%!important;height:auto!important;aspect-ratio:16/9;overflow:hidden}#game canvas{display:block;width:100%!important;height:auto!important;aspect-ratio:16/9;image-rendering:pixelated;image-rendering:crisp-edges}.hud{position:absolute;inset:0;pointer-events:none}.world-labels{position:absolute;top:0;right:0;left:0;z-index:2;display:none;width:100%;height:auto;aspect-ratio:16/9;pointer-events:none;font-family:Arial,sans-serif;overflow:hidden}.game-shell[data-phase=play] .world-labels{display:block}.route-caption{position:absolute;top:9%;left:2.3%;padding:4px 6px 3px;border-left:3px solid var(--blue);background:#f4f2edeb;color:var(--ink);font:800 clamp(6px,.75vw,10px)/1 Arial,sans-serif;letter-spacing:.12em}.landmark-label{position:absolute;top:49%;min-width:7.3%;padding:4px 6px;border:1px solid var(--ink);background:#f4f2edf0;color:var(--ink);text-align:center;transform:translate(-50%)}.landmark-label b,.landmark-label small{display:block;white-space:nowrap}.landmark-label b{font:800 clamp(8px,.9vw,13px)/1 Arial,sans-serif;letter-spacing:.04em}.landmark-label small{margin-top:2px;color:var(--blue);font:700 clamp(6px,.62vw,9px)/1 Arial,sans-serif;letter-spacing:.08em}.landmark-label.twente{left:17%;top:31%}.landmark-label.schiphol{left:38%;top:28%}.landmark-label.bologna{left:62%;top:51%}.landmark-label.pesaro{left:78%;top:62%}.landmark-label.urbino{left:80%;top:30%}.landmark-label.current{background:var(--bright);box-shadow:4px 4px 0 var(--ink)}.rail-corridor{position:absolute;z-index:-1;top:34%;left:11%;right:9%;height:4px;background:repeating-linear-gradient(90deg,var(--sun) 0 12px,transparent 12px 18px);filter:drop-shadow(0 2px 0 var(--ink))}.rail-corridor span{position:absolute;right:0;bottom:7px;padding:3px 5px;background:#10284be6;color:#fff;font:800 6px Arial,sans-serif;letter-spacing:.1em}.rail-label{position:absolute;top:30.5%;z-index:1;min-width:7%;padding:4px 6px;border:1px solid var(--ink);background:#f1b84bf0;text-align:center;transform:translate(-50%)}.rail-label b,.rail-label small{display:block;white-space:nowrap}.rail-label b{font:800 clamp(7px,.75vw,10px)/1 Arial,sans-serif}.rail-label small{margin-top:2px;color:var(--ink);font:800 6px Arial,sans-serif}.rail-label.germany{left:26%}.rail-label.zurich{left:44%}.rail-label.milan{left:60%}.rail-label.current{background:var(--bright);box-shadow:4px 4px 0 var(--ink)}.rail-corridor{display:none}.rail-label.germany{left:29%;top:52%}.rail-label.zurich{left:40%;top:62%}.rail-label.milan{left:55%;top:62%}.hud button,.hud summary,.hud select,.hud .mdp-graph,.hud .mdp-graph *,.hud .graphviz-viewport,.hud .graphviz-viewport *{pointer-events:auto}.panel{position:absolute;background:#f3eedff5;box-shadow:7px 7px #17373333;border:2px solid var(--ink)}.intro-panel{width:min(610px,calc(100% - 40px));left:50%;top:50%;transform:translate(-50%,-50%);padding:clamp(18px,3vw,34px)}.eyebrow{margin:0 0 8px;font:800 10px/1 Arial,sans-serif;letter-spacing:.16em;color:var(--blue)}.world-state-chip{float:right;max-width:48%;padding:4px 7px;border:1px solid currentColor;background:#fff;color:var(--teal);font-size:8px;letter-spacing:.05em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journey-totals{float:right;display:flex;gap:6px}.journey-totals b{display:grid;grid-template-columns:auto auto;align-items:baseline;gap:5px;min-width:62px;padding:5px 7px;border:1px solid var(--ink);background:#fff;color:var(--ink);font:800 11px Arial,sans-serif;letter-spacing:.02em}.journey-totals small{color:var(--blue);font:800 7px Arial,sans-serif;letter-spacing:.08em}.retry-banner{display:flex;align-items:center;gap:8px;margin:-1px 0 7px;padding:5px 7px;border-left:4px solid var(--red);background:#f5d8cf;font:9px Arial,sans-serif}.retry-banner b{color:#8c2828}.retry-banner span{opacity:.78}h1,h2{font-family:Arial,sans-serif;font-weight:800;margin:0;line-height:.92}h1{font-size:clamp(43px,6vw,74px);letter-spacing:-.05em}h1 i{color:var(--red);font-weight:400}.intro-panel h1{white-space:nowrap;font-size:clamp(38px,5.2vw,74px)}html[lang=it] .intro-panel h1{font-size:clamp(34px,4.15vw,60px);letter-spacing:-.065em}.lede{max-width:520px;margin:13px 0 18px;font-family:Georgia,serif;font-size:clamp(16px,2vw,20px);line-height:1.35}.objective-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.objective{min-height:92px;padding:10px;border:2px solid var(--line);background:var(--paper);font-family:Arial,sans-serif;text-align:left;cursor:pointer;transition:.16s}.objective:hover,.objective.selected{transform:translateY(-3px);background:var(--bright);border-color:var(--ink);box-shadow:4px 4px 0 var(--ink)}.objective .objective-icon{display:block;width:30px;height:30px}.objective-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter}.objective span,.objective small{display:block}.objective span{font:700 14px/1.15 Arial,sans-serif;margin:7px 0 4px}.objective small{font:10px/1.3 Arial,sans-serif;opacity:.78}.primary{min-height:44px;border:0;background:var(--panel);color:#fff;margin-top:17px;padding:12px 16px;font:800 10px Arial,sans-serif;cursor:pointer;letter-spacing:.08em}.primary:disabled{opacity:.42;cursor:not-allowed;box-shadow:none}.primary span{color:var(--sun);margin-left:20px}.keyboard{position:absolute;right:32px;bottom:23px;margin:0;font-size:8px;opacity:.55}kbd{border:1px solid;padding:1px 4px}.top-hud{position:absolute;z-index:5;top:14px;left:14px;right:14px;display:flex;align-items:center;gap:14px;color:var(--paper);font:800 9px Arial,sans-serif;text-shadow:1px 1px var(--ink)}.top-hud b{color:#fff}.progress{height:5px;background:#17373357;flex:1;border:1px solid rgba(243,238,223,.7)}.progress i{display:block;height:100%;background:var(--sun);transition:width .5s}.choice-panel{z-index:4;left:50%;bottom:1.5%;transform:translate(-50%);width:min(800px,calc(100% - 48px));max-height:28.5%;overflow:auto;padding:8px 11px 9px}.choice-panel h2{font-size:clamp(20px,2.25vw,30px);margin-bottom:7px;color:var(--ink)}.choices{display:grid;grid-template-columns:1fr 1fr;gap:9px}.choices:has(.choice:nth-child(3)){grid-template-columns:repeat(3,1fr)}.choices:has(.choice:nth-child(3)) .choice{gap:7px}.choices:has(.choice:nth-child(3)) .choice b{font-size:clamp(12px,1.35vw,16px);line-height:1.05}.choice{display:flex;align-items:center;gap:9px;border:1px solid var(--ink);background:#f7f1e3;padding:7px 8px;text-align:left;cursor:pointer;min-height:48px}.choice:hover,.choice:focus-visible{background:var(--sun);box-shadow:3px 3px 0 var(--ink);transform:translate(-2px,-2px);outline:none}.choice .key{display:grid;place-items:center;width:28px;height:28px;flex:none;border:1px solid;font-size:11px}.choice b,.choice small{display:block}.choice b{font-family:Georgia,serif;font-size:20px}.choice small{font:10px/1.25 Arial,sans-serif;margin-top:3px;opacity:.86}.choice .arrow{margin-left:auto}.consequence{position:absolute;z-index:5;top:47px;left:50%;transform:translate(-50%);background:var(--panel);color:#fff;padding:9px 14px;border:2px solid transparent;font-family:Georgia,serif;font-size:15px;animation:consequence-in .24s both;white-space:nowrap;max-width:90%;overflow:hidden;text-overflow:ellipsis}.consequence b,.consequence span{display:block}.consequence b{color:var(--bright);font:800 10px/1.2 Arial,sans-serif;letter-spacing:.04em}.consequence span{margin-top:3px}.consequence.success{background:var(--panel)}.consequence.disruption{background:#9f3030;border-color:#f2a19a;white-space:normal;text-align:left;box-shadow:5px 5px #430f0f4d}.consequence.disruption b{color:#fff}.consequence em{display:block;margin-top:5px;color:#ffe08a;font:800 9px Arial,sans-serif;font-style:normal;letter-spacing:.06em}@keyframes fade{0%{opacity:0;transform:translate(-50%,-8px)}12%,72%{opacity:1;transform:translate(-50%)}to{opacity:0}}@keyframes consequence-in{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}@keyframes consequence-in-landscape{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.reveal{inset:14px;min-height:0;padding:clamp(17px,2.5vw,28px) clamp(17px,2.5vw,28px) 48px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-color:var(--blue) rgba(16,40,75,.12);scrollbar-width:thin;pointer-events:auto}.reveal:after{display:block;height:1px;margin-top:28px;content:""}.arrival-copy h2{font-size:clamp(32px,5vw,58px)}.arrival-copy p:last-child{font-family:Georgia,serif;font-size:16px;margin:5px 0 13px}.score-row{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line);padding:12px 0}.score-row div{border-right:1px solid var(--line);padding-left:13px}.score-row div:first-child{padding-left:0}.score-row div:last-child{border:0}.score-row strong,.score-row span{display:block}.score-row strong{font-family:Georgia,serif;font-size:clamp(20px,3vw,29px)}.score-row span{font:800 7px Arial,sans-serif;letter-spacing:.15em}.mdp-reveal{margin-top:14px;background:var(--panel);color:#fff;padding:14px 16px}.mdp-title{display:flex;justify-content:space-between;font-size:8px;letter-spacing:.14em}.mdp-title b{color:var(--sun)}.mdp-strip{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:14px 0}.mdp-strip div{display:grid;grid-template-columns:28px 1fr;flex:1;align-items:center}.mdp-strip i{grid-row:1/3;display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--bright);color:var(--bright);font-family:Georgia,serif;font-size:17px}.mdp-strip b{font:800 10px Arial,sans-serif}.mdp-strip small{font-size:7px;opacity:.58}.mdp-strip>span{color:var(--bright)}.policy{display:flex;align-items:center;gap:5px;font:700 7px Arial,sans-serif;opacity:.8}.policy i{width:12px;height:5px;background:var(--red)}.policy i.match{background:var(--bright)}.policy span:last-child{margin-left:auto}.checker{margin-top:14px;border:2px solid var(--ink);background:var(--paper)}.checker summary{display:flex;align-items:center;gap:18px;padding:16px 20px;cursor:pointer;list-style:none;font:800 15px Arial,sans-serif}.checker summary span{color:var(--blue);letter-spacing:.12em}.checker summary b{font-weight:800}.checker summary i{margin-left:auto;font:28px Georgia,serif}.checker[open] summary i{transform:rotate(45deg)}.checker-body{padding:0 20px 20px;border-top:1px solid var(--line)}.checker-status{display:flex;align-items:center;gap:12px;padding:16px 0;font:800 14px Arial,sans-serif}.checker-status code{margin-left:auto;font:14px/1.35 monospace;color:var(--blue);overflow-wrap:anywhere}.pulse{width:11px;height:11px;background:var(--bright);box-shadow:0 0 0 4px #54d1a838}.checker dl{display:grid;grid-template-columns:repeat(4,1fr);margin:0;border-block:1px solid var(--line)}.checker dl div{padding:13px 14px;border-right:1px solid var(--line)}.checker dt{font:700 10px Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.checker dd{margin:5px 0 0;font:700 16px/1.15 Georgia,serif}.policy-comparison{margin-top:18px}.policy-comparison h3{margin:0 0 8px;font:800 13px Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase}.policy-comparison>p{max-width:76ch;margin:0 0 10px;color:#425879;font:15px/1.4 Georgia,serif}.computed-policy{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:0;padding:0;list-style:none;background:var(--line)}.computed-policy li{min-height:88px;padding:12px 14px;background:var(--paper)}.computed-policy span,.computed-policy b,.computed-policy small{display:block}.computed-policy span{margin-bottom:5px;font:700 10px Arial,sans-serif;color:var(--blue)}.policy-option{margin-top:5px;padding-left:8px;border-left:3px solid var(--line)}.policy-option b{font-size:14px;line-height:1.12}.policy-option.chosen-optimal,.policy-option.recommended{border-left-color:var(--teal)}.policy-option.chosen-suboptimal{border-left-color:var(--red)}.computed-policy small{width:max-content;margin-top:4px;padding:3px 6px;font:800 9px Arial,sans-serif;letter-spacing:.04em}.computed-policy small.is-optimal,.computed-policy small.optimal-alternative{background:#d3f2e4;color:#006b52}.computed-policy small.is-suboptimal{background:#f6d4d0;color:#982c2c}.policy-counterfactual{padding-top:14px;border-top:1px solid var(--line)}.model-browser{margin-top:10px;border:2px solid var(--ink);background:var(--paper)}.model-browser summary{display:flex;align-items:center;gap:12px;padding:10px 12px;cursor:pointer;list-style:none;font:800 10px Arial,sans-serif}.model-browser summary span{color:var(--blue);letter-spacing:.12em}.model-browser summary i{margin-left:auto;font:22px Georgia,serif}.model-browser[open] summary i{transform:rotate(45deg)}.model-browser-body{padding:12px;border-top:1px solid var(--line)}.model-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}.model-controls label{font:800 8px Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase}.model-controls select{display:block;width:100%;margin-top:4px;border:1px solid var(--ink);border-radius:0;background:#fff;padding:8px;color:var(--ink);font:12px Georgia,serif}.state-id{display:flex;align-items:center;gap:10px;margin:12px 0 8px}.state-id code{background:var(--panel);color:var(--bright);padding:5px 7px}.state-id span{font:700 12px Georgia,serif}.action-inspector{display:grid;grid-template-columns:1fr 1fr;gap:10px}.model-action{border:1px solid var(--ink);padding:9px;background:#fff}.model-action.optimal{box-shadow:4px 4px 0 var(--bright)}.model-action header{display:flex;align-items:center;gap:7px}.model-action header>span{display:grid;place-items:center;width:24px;height:24px;background:var(--ink);color:#fff;font:800 9px Arial,sans-serif}.model-action header b{font:700 12px Georgia,serif}.model-action header em{margin-left:auto;color:var(--teal);font:800 7px Arial,sans-serif}.reward-vector{display:flex;gap:8px;margin:8px 0;padding:6px;background:#eef0e8;font:700 8px Arial,sans-serif}.transitions>div{display:grid;grid-template-columns:minmax(90px,1fr) 1fr 30px 60px;align-items:center;gap:6px;margin-top:5px;font:8px Arial,sans-serif}.transitions i{height:5px;background:#d8ddda}.transitions i b{display:block;height:100%;background:var(--blue)}.transitions strong{text-align:right}.transitions small{font:7px monospace;opacity:.65}.overview-caption{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:7px}.overview-caption b{color:var(--blue);font:800 9px Arial,sans-serif;letter-spacing:.1em}.overview-caption span{font:8px Georgia,serif;opacity:.7}.model-overview{position:relative;display:grid;grid-template-columns:minmax(65px,1.6fr) repeat(10,minmax(23px,1fr));align-items:center;gap:4px;margin-bottom:12px;padding:8px;border:1px solid var(--ink);background:#fff}.model-overview>b{text-align:center;font:800 7px Arial,sans-serif;color:var(--blue)}.model-overview em{overflow:hidden;font:700 7px/1 Arial,sans-serif;text-overflow:ellipsis;white-space:nowrap}.model-overview button,.model-overview i{display:grid;place-items:center;width:22px;height:22px;margin:auto;border-radius:50%;font:800 6px Arial,sans-serif;font-style:normal}.model-overview button{border:1px solid var(--ink);background:var(--paper);cursor:pointer}.model-overview button:hover,.model-overview button:focus-visible{background:var(--sun);outline:2px solid var(--blue)}.model-overview button.current{background:var(--panel);color:#fff;box-shadow:0 0 0 3px var(--sun)}.model-overview i{border:2px double var(--teal);background:#d8f1e8;color:var(--teal)}.graph-help{margin:10px 0 7px;font:9px/1.35 Arial,sans-serif;color:#10284bb8}.graph-actions{display:flex;gap:7px;overflow:auto;padding:1px 3px 9px}.graph-actions button{display:flex;align-items:center;gap:8px;min-width:max-content;border:1px solid var(--ink);background:#fff;padding:7px 10px;cursor:pointer;font:700 10px Georgia,serif}.graph-actions button span{display:grid;place-items:center;width:22px;height:22px;background:var(--ink);color:#fff;font:800 8px Arial,sans-serif}.graph-actions button.selected{background:var(--sun);box-shadow:3px 3px 0 var(--ink)}.mdp-graph-wrap{overflow:hidden;border:1px solid var(--ink);background:linear-gradient(#fbfaf5,#eeeadd)}.mdp-graph{display:block;width:100%;height:auto;aspect-ratio:720/330}.graph-heading{fill:var(--blue);font:800 9px Arial,sans-serif;letter-spacing:.08em}.current-state-node rect{fill:var(--panel);stroke:var(--ink);stroke-width:2}.current-state-node text{fill:var(--bright);font:800 12px Arial,sans-serif}.current-state-node .state-name{fill:#fff;font:700 13px Georgia,serif}.current-state-node .state-meta{fill:#fff;font:9px Arial,sans-serif;opacity:.68}.action-node rect{fill:var(--sun);stroke:var(--ink);stroke-width:2}.action-node text{fill:var(--ink);font:800 11px Arial,sans-serif}.action-node .action-name{font:700 11px Georgia,serif}.choice-edge{fill:none;stroke:var(--ink);stroke-width:3}.graph-edge path:not(.graph-arrow){fill:none;stroke:var(--blue);stroke-linecap:round;opacity:.6}.graph-edge text{fill:var(--ink);font:800 9px Arial,sans-serif;text-anchor:middle;paint-order:stroke;stroke:#f7f5ef;stroke-width:4px}.graph-edge .graph-arrow{fill:var(--blue);stroke:none}.successor-node{cursor:pointer;outline:none}.successor-node rect{fill:#fff;stroke:var(--ink);stroke-width:1}.successor-node text{fill:var(--ink);font:700 11px Georgia,serif}.successor-node .node-id{fill:var(--blue);font:800 8px Arial,sans-serif}.successor-node:hover rect,.successor-node:focus rect{fill:var(--bright);stroke-width:3}.successor-node.terminal{cursor:default}.successor-node.terminal rect{fill:#d8f1e8;stroke:var(--teal)}.model-action.focused{max-width:100%;box-shadow:none}.model-action.focused.optimal{box-shadow:4px 4px 0 var(--bright)}.mdp-definition{display:flex;align-items:stretch;gap:7px;margin-bottom:13px;padding:9px;background:var(--panel);color:#fff}.mdp-definition>div{display:grid;grid-template-columns:30px 1fr;align-items:center;min-width:0;flex:1}.mdp-definition i{grid-row:1/3;display:grid;place-items:center;width:26px;height:26px;border:1px solid var(--bright);color:var(--bright);font:italic 14px Georgia,serif}.mdp-definition b{font:800 9px Arial,sans-serif}.mdp-definition span{overflow:hidden;font:7px/1.2 Arial,sans-serif;opacity:.68;text-overflow:ellipsis}.mdp-definition>strong{align-self:center;color:var(--sun);font-size:12px}.graphviz-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px;font:8px Arial,sans-serif}.graphviz-toolbar>span{opacity:.72}.graphviz-toolbar>div{display:flex;border:1px solid var(--ink)}.graphviz-toolbar button{min-width:31px;border:0;border-right:1px solid var(--ink);background:#fff;padding:6px 8px;cursor:pointer;font:800 8px Arial,sans-serif}.graphviz-toolbar button:last-child{border-right:0}.graphviz-toolbar button:hover{background:var(--sun)}.graphviz-viewport{position:relative;height:clamp(360px,62vh,650px);overflow:hidden;border:1px solid var(--ink);background:#fbfaf5;cursor:grab;touch-action:none}.graphviz-viewport.dragging{cursor:grabbing}.graphviz-canvas{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.graphviz-canvas svg{display:block;max-width:none}.graphviz-canvas .inspectable{cursor:pointer}.graphviz-canvas .inspectable:hover ellipse,.graphviz-canvas .inspectable:hover polygon{stroke:#166fc1;stroke-width:3}.graphviz-loading{display:block;padding:18px;font:italic 12px Georgia,serif}.graphviz-legend{display:flex;gap:14px;flex-wrap:wrap;margin:7px 0;font:8px Arial,sans-serif}.graphviz-legend span{display:flex;align-items:center;gap:5px}.graphviz-legend i{width:10px;height:10px;border:1px solid var(--ink);border-radius:50%;background:var(--paper)}.graphviz-legend i.delay{background:#f8e7b8}.graphviz-legend i.disruption{background:#f3c6c2}.graphviz-legend i.policy{border:0;border-radius:0;background:var(--teal);height:3px}.graphviz-detail{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:9px;border:1px solid var(--ink);background:#fff}.graphviz-detail code{flex:none;background:var(--panel);color:var(--bright);padding:5px 7px}.graphviz-detail>span{display:flex;flex-wrap:wrap;gap:5px 9px;font-size:10px}.graphviz-detail b{width:100%;font-size:12px}.graphviz-detail small{padding:5px 7px;border:1px solid var(--line);background:var(--paper);font:8px Arial,sans-serif}.graphviz-detail small em{display:block;margin-top:3px;color:#596a80;font: 7px Arial,sans-serif}.graphviz-detail small.optimal{border-color:var(--teal);color:var(--teal);font-weight:800}.model-browser summary{padding:15px 16px;font-size:14px}.model-browser summary span{font-size:13px}.model-browser summary i{font-size:26px}.model-browser-body{padding:16px}.mdp-definition{gap:12px;padding:13px}.mdp-definition>div{grid-template-columns:42px 1fr}.mdp-definition i{width:36px;height:36px;font-size:21px}.mdp-definition b{font-size:13px}.mdp-definition span{font-size:11px;line-height:1.3}.mdp-definition>strong{font-size:18px}.graphviz-toolbar{margin:14px 0 10px;font-size:13px}.graphviz-toolbar button{min-width:52px;padding:10px 13px;font-size:12px}.graphviz-legend{gap:18px;margin:12px 0;font-size:13px}.graphviz-legend i{width:14px;height:14px}.graphviz-detail{min-height:62px;padding:14px}.graphviz-detail>span{font-size:16px;line-height:1.35}.graphviz-detail b{font-size:17px}.graphviz-detail small{font-size:12px}.graph-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.graph-actions:has(button:nth-child(3)){grid-template-columns:repeat(3,minmax(0,1fr))}.graph-actions button{min-width:0;padding:7px 8px;font-size:9px;line-height:1.15;text-align:left}.graph-actions button span{flex:none}.result-gate{z-index:7;left:50%;top:50%;transform:translate(-50%,-50%);width:min(760px,calc(100% - 36px));padding:clamp(24px,5vw,52px);pointer-events:auto;overflow:hidden;border-width:3px}.result-gate.is-optimal{box-shadow:10px 10px 0 var(--bright)}.result-gate.not-optimal{box-shadow:10px 10px 0 var(--sun)}.result-gate h2{max-width:680px;margin:8px 0 12px;font-size:clamp(31px,5vw,56px);line-height:1.02}.result-gate>p:last-of-type{max-width:620px;font-size:clamp(15px,2vw,19px);line-height:1.4}.result-gate-actions{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:9px;margin-top:24px}.result-gate-actions button{min-height:44px;border:1px solid var(--ink);background:var(--paper);padding:11px 14px;cursor:pointer;font:800 10px Arial,sans-serif;letter-spacing:.05em}.result-gate-actions .primary{margin:0;background:var(--panel);color:#fff}.result-gate-actions .show-analysis:hover,.result-gate-actions .change-objective:hover{background:var(--sun)}.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.confetti i{position:absolute;top:-18px;left:var(--x);width:9px;height:16px;background:var(--bright);animation:confetti-fall 2.8s var(--delay) ease-in infinite;transform:rotate(calc(var(--turn)*18deg))}.confetti i:nth-child(3n){background:var(--sun)}.confetti i:nth-child(4n){background:var(--blue)}.confetti i:nth-child(5n){background:var(--red)}@keyframes confetti-fall{to{transform:translate(calc(var(--turn)*22px),620px) rotate(540deg)}}.reveal-actions{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:9px}.reveal-actions>div{display:flex;gap:7px}.restart,.retry-analysis{border:1px solid var(--ink);background:transparent;padding:9px 11px;cursor:pointer}.restart:hover,.retry-analysis:hover{background:var(--sun)}footer{height:27px;display:flex;align-items:end;gap:10px;font-size:8px;letter-spacing:.13em;opacity:.62}.route-line{height:1px;background:var(--ink);flex:1;margin-bottom:4px}@media(max-width:650px){#app{padding:8px}.masthead{margin-bottom:7px}.game-shell{aspect-ratio:3/4;max-height:calc(100vh - 64px)}.objective-grid{grid-template-columns:1fr 1fr}.intro-panel{padding:14px;max-height:calc(100% - 18px);overflow:auto}.intro-panel h1{font-size:38px}.intro-panel .lede{font-size:14px;margin:8px 0 10px}.objective{min-height:64px;padding:7px}.objective .objective-icon{width:23px;height:23px}.objective small{display:none}.primary{margin-top:9px}.keyboard{display:none}.choice-panel{bottom:8px;padding:10px 12px}.choice-panel h2{font-size:21px;margin-bottom:8px}.choices{grid-template-columns:1fr}.choice{min-height:46px;padding:7px}.choice small{display:none}.score-row{grid-template-columns:1fr 1fr;row-gap:9px}.mdp-strip{display:grid;grid-template-columns:1fr 1fr}.mdp-strip>span{display:none}.reveal{inset:8px}.consequence{top:34px}.top-hud{top:7px}.mdp-strip div{min-height:36px}.checker dl,.computed-policy{grid-template-columns:1fr 1fr}.checker-status{align-items:flex-start;flex-wrap:wrap}.checker-status code{width:100%}}@media(max-width:650px){.game-shell[data-phase=intro]{aspect-ratio:1/1}}@media(max-width:650px){.objective-grid{grid-template-columns:1fr}}@media(max-width:650px){.result-gate{width:calc(100% - 18px);max-height:calc(100% - 18px);padding:20px;overflow-y:auto}.result-gate h2{font-size:30px}.result-gate-actions{display:grid}.result-gate-actions button{width:100%;text-align:left}.confetti i{animation-iteration-count:2}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.mdp-explainer{display:grid;gap:4px;margin:14px 0 4px;padding:11px 13px;border-left:4px solid var(--blue);background:#e8eef4;color:var(--ink)}.mdp-explainer strong{font:800 12px Arial,sans-serif;letter-spacing:.04em}.mdp-explainer span{font:13px/1.35 Georgia,serif}@media(max-width:650px){.edition{display:none}.mast-actions{gap:6px}.language-switch button{padding:4px 6px}}@media(max-width:650px)and (orientation:portrait){#app{padding:10px 10px 12px}.masthead{position:relative;min-height:30px;padding-right:94px;margin-bottom:8px;font-size:9px}.mast-actions{position:absolute;right:0;top:-3px}.language-switch{box-shadow:2px 2px #10284b2e}.language-switch button{min-width:40px;min-height:26px;padding:4px 5px;font-size:8px}.language-switch button span{font-size:10px}.game-shell,.game-shell[data-phase=intro]{width:100%;height:calc(100svh - 112px);min-height:540px;max-height:none;aspect-ratio:auto}.game-shell[data-phase=intro] .intro-panel{max-height:calc(100% - 20px);overflow:auto}.game-shell[data-phase=reveal]{height:calc(100svh - 70px);min-height:560px}footer{height:24px;font-size:7px}}@media(max-aspect-ratio:4/5)and (max-width:900px){#app{padding:10px 12px 12px}.masthead{position:relative;min-height:32px;padding-right:104px;margin-bottom:9px}.mast-actions{position:absolute;right:0;top:-2px;gap:6px}.language-switch{box-shadow:2px 2px #10284b2e}.language-switch button{min-width:42px;min-height:28px;padding:5px 6px;font-size:9px}.language-switch button span{font-size:11px}.game-shell{width:100%;height:calc(100svh - 116px);min-height:560px;max-height:none;aspect-ratio:auto}.game-shell[data-phase=intro]{height:calc(100svh - 116px);min-height:560px;aspect-ratio:auto}.game-shell[data-phase=intro] .intro-panel{max-height:calc(100% - 24px);overflow:auto}.game-shell[data-phase=intro] .intro-panel h1{font-size:clamp(34px,6vw,58px);line-height:.98}html[lang=it] .game-shell[data-phase=intro] .intro-panel h1{font-size:clamp(30px,5.25vw,50px)}.game-shell[data-phase=intro] .intro-panel .lede{font-size:clamp(15px,2.2vw,20px);line-height:1.24}.game-shell[data-phase=play]:after{height:55%}.game-shell[data-phase=play] #game{height:auto!important;aspect-ratio:16/9}.game-shell[data-phase=play] .choice-panel{top:52%;bottom:auto;max-height:47%;padding:12px 14px}.game-shell[data-phase=play] .choice-panel h2{font-size:clamp(20px,3vw,28px)}.game-shell[data-phase=play] .choices{grid-template-columns:1fr}.game-shell[data-phase=play] .choice{min-height:48px;padding:8px 10px}.game-shell[data-phase=play] .choice b{font-size:clamp(15px,2.2vw,21px)}.game-shell[data-phase=play] .choice small{display:block;font-size:clamp(9px,1.3vw,12px)}.game-shell[data-phase=play] .consequence{top:34px;left:8px;right:8px;transform:none;max-width:none;white-space:normal;overflow:visible;text-overflow:clip;font-size:clamp(13px,1.8vw,17px);line-height:1.2;text-align:left}.game-shell[data-phase=reveal]{height:calc(100svh - 74px);min-height:600px}.result-gate{width:calc(100% - 24px);max-height:calc(100% - 24px);padding:clamp(20px,4vw,38px);overflow-y:auto}.result-gate h2{font-size:clamp(32px,6vw,52px)}footer{height:25px}}@media(max-width:650px){.game-shell[data-phase=play]:after{height:55%}.game-shell[data-phase=play] #game{height:auto!important;aspect-ratio:16/9}.game-shell[data-phase=play] .world-labels{bottom:auto}.game-shell[data-phase=play] .choice-panel{top:52%;bottom:auto;max-height:47%}.game-shell[data-phase=play] .choice-panel h2{font-size:19px}.game-shell[data-phase=play] .choice{min-height:40px;padding:5px 7px}.objective span{font-size:12px;margin:4px 0 2px}.objective small{display:block;font-size:8px;line-height:1.2}.choice small{display:block;font-size:8px}.choice b{font-size:14px}.choices:has(.choice:nth-child(3)){grid-template-columns:1fr}.choices:has(.choice:nth-child(3)) .choice{gap:5px}.choices:has(.choice:nth-child(3)) .choice .key{width:20px;height:24px}.landmark-label{top:45%}.model-controls,.action-inspector{grid-template-columns:1fr}.transitions>div{grid-template-columns:minmax(80px,1fr) 1fr 28px}.transitions small{display:none}}@media(min-width:651px)and (max-height:900px){.game-shell[data-phase=play]:after{height:38%}.game-shell[data-phase=play] .choice-panel{top:63%;bottom:1.2%;display:flex;flex-direction:column;width:min(900px,calc(100% - 36px));height:auto;max-height:none;padding:7px 10px}.game-shell[data-phase=play] .choice-panel h2{font-size:clamp(21px,2.2vw,27px);line-height:.98;margin-bottom:7px}.game-shell[data-phase=play] .choices{flex:1;min-height:0}.game-shell[data-phase=play] .choice{height:100%;min-height:0;padding:8px}.game-shell[data-phase=play] .choice b{font-size:clamp(14px,1.4vw,18px);line-height:1.08}.game-shell[data-phase=play] .choice small{font-size:10px;line-height:1.25}.game-shell[data-phase=play] .consequence{top:44px;max-width:84%;font-size:13px}.game-shell[data-phase=play] .retry-banner{margin-bottom:5px}}@media(min-width:651px)and (max-width:850px){.game-shell[data-phase=play]{height:calc(100vh - 94px);min-height:580px;aspect-ratio:auto}.game-shell[data-phase=play]:after{height:48%}.game-shell[data-phase=play] .choice-panel{top:53%;bottom:1.5%;max-height:none}.game-shell[data-phase=play] .choices,.game-shell[data-phase=play] .choices:has(.choice:nth-child(3)){grid-template-columns:1fr;grid-template-rows:repeat(3,minmax(0,1fr))}.game-shell[data-phase=play] .choice{min-height:0}.game-shell[data-phase=play] .choices:has(.choice:nth-child(3)) .choice b{font-size:15px}.game-shell[data-phase=play] .choice small{font-size:9px}.game-shell[data-phase=play] .journey-totals b{min-width:62px;padding:4px 5px;font-size:11px}.game-shell[data-phase=play] .journey-totals small{font-size:6px}}@media(min-width:901px)and (max-aspect-ratio:5/3){.game-shell[data-phase=play]{width:100%;height:calc(100svh - 106px);min-height:690px;max-height:none;aspect-ratio:auto}.game-shell[data-phase=play] #game{height:65%!important;aspect-ratio:auto;overflow:hidden}.game-shell[data-phase=play] #game canvas{position:absolute;top:0;left:0;width:100%!important;height:auto!important;margin:0!important;transform:none}.game-shell[data-phase=play] .world-labels{width:100%;height:auto;aspect-ratio:16/9}.game-shell[data-phase=play]:after{top:65%;bottom:0;height:35%}.game-shell[data-phase=play] .choice-panel{top:auto;bottom:2%;max-height:31%;padding:11px 14px}.game-shell[data-phase=play] .choice-panel h2{font-size:clamp(23px,2vw,31px)}.game-shell[data-phase=play] .choice{min-height:64px;padding:10px}.game-shell[data-phase=play] .choice b{font-size:clamp(16px,1.45vw,21px)}.game-shell[data-phase=play] .choice small{font-size:11px}}@media(max-width:1000px)and (orientation:landscape)and (max-height:650px){#app{width:100%;max-width:none;padding:8px 10px 7px}.masthead{min-height:24px;margin-bottom:6px;font-size:8px}.mast-actions{gap:6px}.edition{display:none}.language-switch button{min-width:38px;min-height:24px;padding:4px 5px;font-size:8px}.game-shell,.game-shell[data-phase=play]{width:100%;height:calc(100svh - 58px);min-height:340px;max-height:none;aspect-ratio:auto}.game-shell[data-phase=play] #game{top:0;bottom:0;left:0;width:66%!important;height:100%!important;aspect-ratio:auto;overflow:hidden}.game-shell[data-phase=play] #game canvas{position:absolute;top:0;left:50%;width:auto!important;height:100%!important;max-width:none;margin:0!important;aspect-ratio:16/9;transform:translate(-50%)}.game-shell[data-phase=play] .world-labels{top:0;left:0;right:auto;width:66%!important;height:100%;aspect-ratio:auto;transform:none;overflow:hidden}.game-shell[data-phase=play]:after{inset:0 0 0 66%;height:auto;border-top:0;border-left:2px solid var(--ink);box-shadow:-5px 0 #f4f2edb8}.game-shell[data-phase=play] .top-hud{top:7px;right:35%;left:8px;gap:7px;font-size:8px}.game-shell[data-phase=play] .top-hud .progress{height:4px}.game-shell[data-phase=play] .route-caption{font-size:7px}.game-shell[data-phase=play] .landmark-label{padding:3px 4px}.game-shell[data-phase=play] .landmark-label b{font-size:9px}.game-shell[data-phase=play] .landmark-label small{font-size:7px}.game-shell[data-phase=play] .consequence{top:32px;right:35%;left:8px;width:auto;max-width:none;padding:7px 9px;font-size:12px;line-height:1.2;transform:none;animation-name:consequence-in-landscape}.game-shell[data-phase=play] .consequence b{font-size:9px}.game-shell[data-phase=play] .consequence em{font-size:8px}.game-shell[data-phase=play] .choice-panel{top:8px;right:8px;bottom:8px;left:calc(66% + 8px);width:auto;height:auto;max-height:none;padding:10px;transform:none;overflow:auto}.game-shell[data-phase=play] .choice-panel .eyebrow{font-size:8px}.game-shell[data-phase=play] .journey-totals{float:none;display:flex;gap:4px;margin:5px 0}.game-shell[data-phase=play] .journey-totals b{min-width:0;flex:1;padding:4px 5px;font-size:10px}.game-shell[data-phase=play] .journey-totals small{font-size:6px}.game-shell[data-phase=play] .retry-banner{display:block;margin:4px 0;padding:5px;font-size:8px;line-height:1.15}.game-shell[data-phase=play] .retry-banner span{display:block;margin:3px 0 0}.game-shell[data-phase=play] .choice-panel h2{font-size:clamp(17px,2.7vw,22px);line-height:1.02;margin:5px 0 7px}.game-shell[data-phase=play] .choices,.game-shell[data-phase=play] .choices:has(.choice:nth-child(3)){grid-template-columns:1fr;gap:6px}.game-shell[data-phase=play] .choice{min-height:46px;padding:6px 7px;gap:7px}.game-shell[data-phase=play] .choice b{font-size:clamp(13px,2vw,16px);line-height:1.05}.game-shell[data-phase=play] .choice small{display:block;font-size:9px;line-height:1.18}.game-shell[data-phase=play] .choice .key{width:24px;height:24px;font-size:10px}.game-shell[data-phase=reveal]{width:100%;height:calc(100svh - 58px);min-height:340px;max-height:none}.game-shell[data-phase=reveal] .reveal{inset:8px;padding:14px}.game-shell[data-phase=reveal] .result-gate{width:calc(100% - 28px);max-height:calc(100% - 28px);padding:20px}.game-shell[data-phase=reveal] .result-gate h2{font-size:clamp(28px,4vw,45px)}footer{display:none}}@media(max-aspect-ratio:4/5)and (max-width:900px){.game-shell[data-phase=intro]{height:min(780px,calc(100svh - 128px));min-height:680px;background:#159fe5 url(/assets/journey-isometric-map-v2.png) center/cover no-repeat}.game-shell[data-phase=intro] #game{height:100%!important;aspect-ratio:auto;overflow:hidden}.game-shell[data-phase=intro] #game canvas{position:absolute;left:50%;width:auto!important;height:100%!important;max-width:none;aspect-ratio:16/9;transform:translate(-50%)}.game-shell[data-phase=intro] .intro-panel{width:calc(100% - 28px);padding:20px;max-height:calc(100% - 24px)}.game-shell[data-phase=play]{height:min(790px,calc(100svh - 128px));min-height:680px;aspect-ratio:auto}.game-shell[data-phase=play] #game{height:64%!important;aspect-ratio:auto;overflow:hidden}.game-shell[data-phase=play] #game canvas{position:absolute;left:var(--mobile-map-left,50%);width:auto!important;height:100%!important;max-width:none;margin:0!important;aspect-ratio:16/9;transform:none}.game-shell[data-phase=play] .world-labels{top:0;left:var(--mobile-map-left,50%);right:auto;width:auto;height:64%;aspect-ratio:16/9;transform:none}.game-shell[data-phase=play]:after{top:64%;bottom:0;height:36%}.game-shell[data-phase=play] .choice-panel{top:auto;bottom:2%;height:auto;max-height:none;overflow:visible}.game-shell[data-phase=play] .journey-totals{float:none;display:flex;justify-content:flex-end;margin-top:7px}.game-shell[data-phase=play] .retry-banner{clear:both;display:block;width:100%;margin-top:7px;padding:7px 9px;font-size:10px;line-height:1.2}.game-shell[data-phase=play] .retry-banner b,.game-shell[data-phase=play] .retry-banner span{display:inline}.game-shell[data-phase=play] .retry-banner span{margin-left:6px}.game-shell[data-phase=play] .consequence{top:42px;left:10px;right:10px;transform:none;width:auto;max-width:none;padding:8px 10px;white-space:normal;overflow:visible;text-overflow:clip;font-size:clamp(13px,3.4vw,16px);line-height:1.24;animation-name:consequence-in-mobile}.game-shell[data-phase=play] .consequence b{font-size:clamp(9px,2.45vw,11px);line-height:1.2}.game-shell[data-phase=play] .consequence em{font-size:clamp(8px,2.2vw,10px);line-height:1.2}}@keyframes consequence-in-mobile{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:760px){.game-shell[data-phase=reveal]{height:calc(100svh - 62px);min-height:0}.reveal{inset:8px;padding:12px;max-height:none}.reveal .arrival-copy h2{font-size:clamp(28px,7vw,44px);line-height:.98}.score-row{grid-template-columns:repeat(2,1fr);gap:8px}.score-row div{padding:8px 10px}.score-row strong{font-size:clamp(21px,5vw,30px)}.mdp-reveal{margin-top:10px;padding:10px}.mdp-strip{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mdp-strip>span{display:none}.mdp-strip div{min-height:48px}.checker summary{gap:10px;padding:13px 14px;font-size:13px}.checker summary span{font-size:11px}.checker summary i{font-size:24px}.checker-body{padding:0 12px 16px}.checker-status{gap:9px;padding:12px 0;font-size:12px}.checker-status code{font-size:11px}.checker dl{grid-template-columns:1fr 1fr}.checker dl div{padding:10px}.checker dt{font-size:9px}.checker dd{font-size:17px}.computed-policy{grid-template-columns:1fr}.computed-policy li{min-height:0;padding:12px}.computed-policy span{font-size:10px}.policy-option b{font-size:16px}.computed-policy small{font-size:10px}.mdp-explainer{padding:12px}.mdp-explainer strong{font-size:14px}.mdp-explainer span{font-size:14px;line-height:1.42}.model-browser summary{padding:12px;font-size:12px}.model-browser-body{padding:11px}.model-controls label{font-size:10px}.model-controls select{padding:10px;font-size:15px}.mdp-definition{display:grid;grid-template-columns:1fr;gap:8px}.mdp-definition>strong{display:none}.mdp-definition>div{grid-template-columns:48px 1fr;gap:10px}.mdp-definition i{width:42px;height:42px;font-size:24px}.mdp-definition b{font-size:15px}.mdp-definition span{font-size:12px;overflow:visible;text-overflow:clip}.state-id{gap:8px;margin:13px 0 10px}.state-id code{padding:6px 8px;font-size:14px}.state-id span{font-size:16px}.action-inspector{grid-template-columns:1fr}.model-action{padding:11px}.model-action header>span{width:28px;height:28px;font-size:10px}.model-action header b{font-size:16px}.model-action header em{font-size:9px}.reward-vector{gap:9px;padding:8px;font-size:11px}.transitions>div{grid-template-columns:minmax(105px,1fr) 1fr 36px;gap:7px;font-size:10px}.transitions small{display:none}.transitions i{height:7px}.graph-help{font-size:11px;line-height:1.4}.graph-actions{grid-template-columns:1fr!important}.graph-actions button{padding:10px;font-size:12px}.graph-actions button span{width:28px;height:28px;font-size:10px}.graphviz-toolbar{font-size:10px}.graphviz-toolbar button{min-width:38px;padding:8px 10px;font-size:10px}.graphviz-viewport{height:58svh;min-height:340px}.graphviz-legend{font-size:10px}.graphviz-detail{font-size:12px}.graphviz-detail b{font-size:14px}.graphviz-detail small{font-size:10px}}
