:root{font-family:Trebuchet MS,Arial,sans-serif;color:#203e42;background:#f3eedf;font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden;overscroll-behavior:none;user-select:none;-webkit-user-select:none}button{font:inherit;cursor:pointer;border:0;color:inherit;touch-action:manipulation}button:focus-visible{outline:3px solid #e49245;outline-offset:3px}button:disabled{opacity:.42;cursor:default}#app{height:100dvh;max-width:1600px;margin:auto;display:flex;flex-direction:column;padding:0 32px}header{height:90px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d9d8c9}.brand{background:none;display:flex;align-items:center;gap:12px;font-weight:bold;font-size:25px;letter-spacing:-1px}.brand-icon{display:grid;place-items:center;background:#214a4d;color:#f8efd4;border-radius:50%;width:44px;height:44px;font-size:38px}.trip{display:flex;gap:14px;align-items:center}.trip>span,.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:bold}.trip>span{color:#84908a}.trip strong{font-size:17px}.header-actions{display:flex;gap:8px}.icon{width:38px;height:38px;border:1px solid #d5d9ca;border-radius:50%;background:transparent;font-weight:bold;font-size:18px}.journey{height:52px;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#627877}.journey>span:first-child{width:180px}#progress{display:flex;gap:7px}#progress i{width:30px;height:4px;border-radius:5px;background:#d4d9cb}#progress i.done{background:#d68b4d}#timer{font-variant-numeric:tabular-nums;width:180px;text-align:right}.play{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:28px}.scene{position:relative;overflow:hidden;background:#a9d3c9;border-radius:20px;isolation:isolate;display:flex;align-items:center;flex-direction:column;justify-content:center;padding:60px 26px 22px}.scene-top{position:absolute;top:24px;left:26px;right:26px;display:flex;justify-content:space-between;align-items:center;color:#366968}.weather{font-size:12px}.weather:first-letter{color:#e4b25c}.ripples{position:absolute;inset:0;z-index:-2;opacity:.4;background:repeating-linear-gradient(172deg,transparent 0 57px,#d7eee2 58px 60px,transparent 61px 100px);transform:rotate(-3deg)}.island{position:absolute;z-index:-1;background:#729d80;border-radius:50%;box-shadow:0 9px 0 #d1d7aa}.island-one{width:180px;height:100px;top:-64px;left:120px}.island-two{width:230px;height:100px;right:-110px;bottom:25px}.boat-area{width:100%;position:relative;max-width:740px;margin:20px 0 30px}.boat{position:relative;display:flex;align-items:center;background:#f7e8c4;border:8px solid #fdf5dc;outline:2px solid #9bbaaa;border-radius:24px 46% 46% 24px / 24px 50% 50% 24px;padding:26px 14% 26px 8%;box-shadow:0 14px 0 #577f73,0 21px 0 #639e91;background-image:repeating-linear-gradient(0deg,transparent 0 32px,#ddcfac 33px 34px)}#seats{width:100%;display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:13px 12px}.seat{position:relative;aspect-ratio:1;min-height:44px;border:2px solid #7faaa0;background:#89b5a6;border-radius:12px 12px 17px 17px;box-shadow:0 5px 0 #669586;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .15s,background .15s}.seat.empty:after{content:attr(data-number);color:#d6e6d0;font-size:12px}.seat:hover{transform:translateY(-3px);background:#95c3ad}.seat.selected{outline:3px solid #dc964f;outline-offset:3px}.seat.bad{border-color:#b65348}.seat.good{border-color:#f5dd8c}.seat svg{width:82%;height:82%;overflow:visible}.stern{position:absolute;left:1%;font-size:38px;color:#b4a984}.bow{position:absolute;right:4%;font-size:40px;color:#b6ac86}.buoy{position:absolute;bottom:-30px;right:8%;color:#fff0d8;font-size:28px;text-shadow:0 3px #568e84}.dock{width:76%;height:35px;border-bottom:3px solid #749486;display:flex;justify-content:space-between;font-size:11px;font-weight:bold;letter-spacing:1px;color:#46766e}.selected-card{margin-top:20px;background:#f8f3df;border-radius:14px;padding:16px 20px;max-width:560px;width:100%;display:flex;align-items:center;gap:16px;box-shadow:0 6px 0 #679e8e33;min-height:98px}.selected-card svg{width:56px;height:56px;flex-shrink:0}.selected-card strong{display:block;font-size:17px;margin-bottom:6px}.selected-card p{font-size:13px;line-height:1.4;margin:0}.selected-card small{color:#768780;font-size:11px}aside{min-height:0;display:flex;flex-direction:column;padding:16px 0}.aside-heading{display:flex;align-items:center;justify-content:space-between}.eyebrow{color:#7b8d80}h1{font-size:25px;letter-spacing:-.7px;margin:8px 0}.ticket{color:#bd8a56;font-size:48px}aside>p{font-size:12px;line-height:1.5;color:#7a8780;margin:0 0 18px}#passengers{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start}.passenger{display:flex;text-align:left;align-items:center;gap:8px;padding:10px 8px;border:1px solid #dbdece;background:#faf6e8;border-radius:12px;position:relative;min-width:0}.passenger svg{width:40px;height:40px;flex-shrink:0}.passenger strong{font-size:13px}.passenger small{display:block;font-size:10px;color:#899080;margin-top:4px}.passenger.active{border:2px solid #d28b4d;background:#fff6dc;padding:9px 7px}.passenger.aboard{background:#e3eadb}.passenger .dot{position:absolute;right:5px;top:4px;font-size:10px;color:#648976}.legend{font-size:11px;line-height:1.6;color:#7b897f;margin-top:auto;padding-top:15px}footer{height:94px;flex-shrink:0;display:flex;align-items:center;gap:18px}.tools{display:flex;gap:8px;flex-shrink:0}.tools button{background:transparent;border:1px solid #d0d6c6;border-radius:9px;padding:11px 13px;font-size:12px}#message{flex:1;font-size:12px;color:#617d73;line-height:1.4}.primary{background:#cf7848;color:#fff8e9;border-radius:12px;padding:16px 24px;font-weight:bold;box-shadow:0 4px 0 #ad5e38;white-space:nowrap}.primary:hover{background:#bc693d}dialog{border:0;border-radius:22px;background:#faf4e5;color:#24474a;padding:30px;max-width:520px;width:calc(100% - 30px);box-shadow:0 20px 100px #123c4166}dialog::backdrop{background:#153d43aa;backdrop-filter:blur(5px)}dialog h2{font-size:29px;margin:8px 0 16px}dialog p{line-height:1.6;font-size:14px}dialog .buttons{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}dialog button{border-radius:10px;padding:13px 16px;background:#e2e8d9}dialog .primary{background:#cf7848}dialog .route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}dialog .route-grid button{min-height:65px}.celebrate{font-size:50px;color:#d8914c}.muted{color:#7a8c80;font-size:12px!important}body.paused .scene{filter:blur(5px)}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
#seats,.seat{min-width:0}.bow,.stern,.buoy,.scene-top,.dock{pointer-events:none}
.scene{padding-top:44px}.boat-area{margin-top:12px;margin-bottom:24px}.boat{padding-top:18px;padding-bottom:18px}.selected-card{min-height:82px;padding:12px 18px;margin-top:14px}.dock{height:26px}
@media(max-width:1050px){#app{padding:0 18px}.play{grid-template-columns:minmax(0,1fr) 260px;gap:18px}.scene{padding:55px 16px 20px}#seats{gap:10px}.boat{padding-top:20px;padding-bottom:20px}.passenger{gap:4px}.passenger svg{width:32px;height:32px}.trip{gap:8px}.tools button{padding:10px}.selected-card{padding:12px}footer{gap:12px}}
@media(max-width:720px){#app{padding:0 12px}header{height:60px}.brand{font-size:19px;gap:7px}.brand-icon{width:32px;height:32px;font-size:28px}.trip{display:none}.icon{width:32px;height:32px}.header-actions{gap:5px}.journey{height:35px}.journey>span:first-child{width:auto;font-size:10px}#timer{width:auto}#progress i{width:16px}.play{display:flex;flex-direction:column;gap:10px}.scene{flex:1;min-height:230px;padding:36px 16px 10px;border-radius:14px}.scene-top{top:12px;left:16px;right:16px}.scene-top .eyebrow{font-size:9px}.weather{font-size:10px}.boat-area{max-width:390px;margin:6px 0 12px}.boat{padding-top:10px;padding-bottom:13px;border-width:5px}#seats{gap:7px 9px}.seat{border-radius:8px;min-height:29px;max-height:56px}.seat svg{width:75%;height:75%}.bow{font-size:25px}.stern{font-size:25px}.buoy{bottom:-18px;font-size:18px}.dock{height:19px;font-size:8px;width:84%}.selected-card{margin-top:8px;padding:7px 10px;min-height:54px;gap:10px;max-width:460px}.selected-card svg{width:36px;height:36px}.selected-card strong{font-size:13px;margin-bottom:2px}.selected-card p{font-size:11px}.selected-card small{display:none}aside{padding:0;flex-shrink:0}.aside-heading{display:none}aside>p{font-size:10px;margin:0 0 5px}#passengers{grid-template-columns:repeat(4,1fr);gap:6px}.passenger{flex-direction:column;gap:2px;text-align:center;padding:5px 2px;min-height:65px;border-radius:9px}.passenger.active{padding:4px 1px}.passenger svg{width:29px;height:29px}.passenger strong{font-size:11px}.passenger small{font-size:9px;margin-top:2px}.legend{display:none}footer{height:106px;position:relative;gap:8px;padding-bottom:27px;justify-content:space-between}.tools{gap:5px}.tools button{padding:10px 8px;font-size:10px}.primary{font-size:12px;padding:13px 14px}#message{position:absolute;left:0;right:0;bottom:7px;font-size:10px;text-align:center}.selected-card{box-shadow:none}}
@media(max-height:690px) and (min-width:721px){header{height:65px}.journey{height:35px}footer{height:75px}.scene{padding-top:38px}.boat-area{max-width:560px;margin:10px 0 20px}.selected-card{min-height:72px;margin-top:12px}.passenger{padding-top:7px;padding-bottom:7px}.passenger.active{padding-top:6px;padding-bottom:6px}aside>p{margin-bottom:10px}.legend{padding-top:8px}}
@media(max-height:680px) and (max-width:720px){header{height:48px}.journey{height:28px}.scene{min-height:190px}.scene-top{top:8px}.weather{display:none}.selected-card svg{display:none}.selected-card{min-height:40px;padding:5px 8px}.boat-area{max-width:290px}.seat{min-height:24px}.passenger{min-height:52px}.passenger svg{width:22px;height:22px}footer{height:85px}.scene{padding-top:25px}.dock{display:none}}
@media(max-height:500px) and (min-width:721px){#app{padding:0 12px}header{height:43px}.brand{font-size:18px}.brand-icon{width:30px;height:30px;font-size:26px}.icon{width:30px;height:30px}.trip strong{font-size:13px}.journey{height:27px}.play{grid-template-columns:55% 1fr;gap:14px}.scene{padding:25px 12px 8px}.scene-top{top:9px;left:14px;right:14px}.scene-top .eyebrow{font-size:8px}.weather{font-size:9px}.boat-area{max-width:290px;margin:5px 0 10px}.boat{padding-top:10px;padding-bottom:10px;border-width:5px}#seats{gap:7px}.seat{min-height:24px;border-radius:7px}.bow,.stern{font-size:22px}.buoy,.dock{display:none}.selected-card{min-height:40px;margin-top:4px;padding:7px 10px;gap:8px}.selected-card svg{width:30px;height:30px}.selected-card strong{font-size:12px;margin-bottom:2px}.selected-card p{font-size:10px}.selected-card small{display:none}aside{padding:0}.aside-heading,.legend{display:none}aside>p{font-size:10px;line-height:1.3;margin:0 0 6px}#passengers{grid-template-columns:repeat(4,1fr);gap:5px}.passenger{flex-direction:column;text-align:center;gap:2px;padding:5px 1px;min-height:62px}.passenger.active{padding:4px 0}.passenger svg{width:27px;height:27px}.passenger strong{font-size:10px}.passenger small{font-size:8px;margin-top:2px}footer{height:55px;gap:10px}.tools button{font-size:10px;padding:9px}.primary{font-size:12px;padding:11px 14px}#message{font-size:10px}dialog{padding:18px;max-height:92dvh}dialog h2{font-size:22px;margin:5px 0 9px}dialog p{font-size:12px;line-height:1.4;margin:9px 0}dialog .buttons{margin-top:10px}}

.ripples{inset:-100px;animation:water-drift 14s linear infinite;will-change:transform}.ripples:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(12deg,transparent 0 80px,#eef9e75c 81px 83px,transparent 84px 150px);animation:water-shimmer 7s ease-in-out infinite alternate}.buoy{animation:buoy-bob 3.5s ease-in-out infinite}.effects-paused .ripples,.effects-paused .ripples:after,.effects-paused .buoy{animation-play-state:paused}.boat-area.sailing{z-index:3}.boat-area.sailing:after{content:'';position:absolute;left:-65%;top:45%;width:66%;height:20%;border-top:3px solid #f4f9e499;border-bottom:3px solid #f4f9e470;border-radius:50%;pointer-events:none}.passenger,.seat{touch-action:none}.passenger:not(:disabled),.seat:not(:disabled){cursor:grab}.dragging,.dragging *{cursor:grabbing!important}.drag-source{opacity:.35}.drag-ghost{position:fixed;left:0;top:0;width:68px;height:80px;z-index:1000;pointer-events:none;filter:drop-shadow(0 9px 5px #173f4055)}.drag-ghost svg{width:100%;height:100%}.drop-target{outline:3px dashed #db8843!important;outline-offset:4px;background-color:#f4d995!important}.dock{pointer-events:auto}.rating-stars{display:flex;justify-content:center;gap:12px;margin:14px 0;font-size:52px;color:#d7c9a9}.rating-stars .earned{color:#df9f35;text-shadow:0 3px #a66b2422}.score{text-align:center;font-size:42px;font-weight:bold;letter-spacing:-2px;color:#255859}.score small{font-size:18px;letter-spacing:0;color:#7b8c80}.result-list{list-style:none;padding:0;margin:12px 0;max-height:135px;overflow:auto;overscroll-behavior:contain}.result-list li{font-size:12px;line-height:1.4;padding:6px 0;border-bottom:1px solid #dedfcf}.result-list .unhappy{color:#9e5345}.route-score{display:block;color:#aa742f;font-size:12px;margin-top:5px}.result-heading{text-align:center}.result-heading h2{margin-bottom:5px}.result-summary{text-align:center;margin:8px 0!important}
@keyframes water-drift{from{transform:translate(-20px,-12px) rotate(-3deg)}to{transform:translate(55px,25px) rotate(-3deg)}}@keyframes water-shimmer{from{opacity:.3;transform:translateX(-15px)}to{opacity:.8;transform:translateX(15px)}}@keyframes buoy-bob{0%,100%{transform:translateY(-2px) rotate(-4deg)}50%{transform:translateY(3px) rotate(4deg)}}
@media(max-height:500px){.rating-stars{font-size:32px;margin:5px 0}.score{font-size:30px}.result-list{max-height:65px}}
@media(prefers-reduced-motion:reduce){.ripples,.ripples:after,.buoy{animation:none!important}}
.aisle{display:flex;align-items:center;justify-content:center;border-left:1px dashed #b6aa85;border-right:1px dashed #b6aa85;pointer-events:none;min-width:0}.aisle span{writing-mode:vertical-rl;font-size:7px;letter-spacing:2px;color:#968a68}.results-modal .buttons{justify-content:center}.results-modal .buttons button{flex:0 1 auto}.rating-stars > span{position:relative;display:inline-block;line-height:1.2;--fill:0%}.rating-stars .earned{color:#d7c9a9;text-shadow:none}.rating-stars > span:after{content:'★';position:absolute;left:0;top:0;width:var(--fill);overflow:hidden;color:#df9f35;white-space:nowrap}.rating-stars .charged{animation:star-charge .3s ease-out}.score-value{display:inline-block;min-width:2ch;font-variant-numeric:tabular-nums}.score{font-variant-numeric:tabular-nums}
.header-actions{flex-shrink:0}
@keyframes star-charge{0%{transform:scale(.92)}55%{transform:scale(1.2)}100%{transform:scale(1)}}
@media(max-width:720px){.aisle span{font-size:6px;letter-spacing:1px}.header-actions{gap:4px}.header-actions .icon{width:30px;height:30px}}
@media(prefers-reduced-motion:reduce){.rating-stars .charged{animation:none}}
.aisle{border:0;border-top:1px dashed #b6aa85;border-bottom:1px dashed #b6aa85;background:#efe0b6;border-radius:3px}.aisle span{writing-mode:horizontal-tb;font-size:8px;letter-spacing:3px}.dock{height:42px;flex-shrink:0;background:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjgwIiB2aWV3Qm94PSIwIDAgMTAwMCA4MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CjxkZWZzPjxwYXR0ZXJuIGlkPSJwbGFua3MiIHdpZHRoPSIxMDAiIGhlaWdodD0iODAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iODAiIGZpbGw9IiNiODhhNTgiLz48cmVjdCB4PSIyIiB5PSIzIiB3aWR0aD0iOTYiIGhlaWdodD0iNjUiIHJ4PSIzIiBmaWxsPSIjY2JhNDczIi8+PHBhdGggZD0iTTEyIDhRMjUgMjkgMTUgNTdNMjcgM1ExOSAzMiAzMyA2N003MCA1UTYyIDI2IDc0IDY1TTg0IDhROTYgMzYgODYgNjMiIHN0cm9rZT0iI2FkODA0ZiIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIG9wYWNpdHk9Ii41NSIvPjxlbGxpcHNlIGN4PSI1MyIgY3k9IjQwIiByeD0iOCIgcnk9IjEzIiBmaWxsPSJub25lIiBzdHJva2U9IiNhZTgyNTQiIHN0cm9rZS13aWR0aD0iMiIvPjxlbGxpcHNlIGN4PSI1MyIgY3k9IjQwIiByeD0iMyIgcnk9IjYiIGZpbGw9IiNiODhjNWIiLz48cGF0aCBkPSJNMiA0SDk4IiBzdHJva2U9IiNlM2M2OTgiIHN0cm9rZS13aWR0aD0iMyIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTIiIHI9IjIuMyIgZmlsbD0iIzgwNmU1NiIvPjxjaXJjbGUgY3g9IjkwIiBjeT0iMTIiIHI9IjIuMyIgZmlsbD0iIzgwNmU1NiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iNTgiIHI9IjIuMyIgZmlsbD0iIzgwNmU1NiIvPjxjaXJjbGUgY3g9IjkwIiBjeT0iNTgiIHI9IjIuMyIgZmlsbD0iIzgwNmU1NiIvPjwvcGF0dGVybj48L2RlZnM+CjxyZWN0IHg9IjAiIHk9IjkiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjY5IiByeD0iOCIgZmlsbD0iIzY1N2Q2NyIgb3BhY2l0eT0iLjMiLz48cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSI3MiIgcng9IjciIGZpbGw9InVybCgjcGxhbmtzKSIvPjxwYXRoIGQ9Ik00IDcwSDk5NiIgc3Ryb2tlPSIjOTM2YzQzIiBzdHJva2Utd2lkdGg9IjciLz48cGF0aCBkPSJNNCA0SDk5NiIgc3Ryb2tlPSIjZWFkMmE2IiBzdHJva2Utd2lkdGg9IjMiLz4KPC9zdmc+Cg==') center/100% 100%;border:0;border-radius:5px;padding:0 16px;align-items:center;color:#4a4e3d;text-shadow:0 1px #ebd2ac;font-size:10px;box-shadow:0 4px 0 #7a8d6b33}
.route-grid{max-height:45dvh;overflow:auto}
@media(max-width:720px){.dock{height:30px;padding:0 10px;font-size:8px}.aisle span{font-size:7px;letter-spacing:2px}
}
@media(max-height:680px) and (max-width:720px){.dock{display:flex;height:24px}
}
@media(max-height:500px) and (min-width:721px){.dock{display:flex;height:24px;font-size:8px}
}
@media(max-width:720px){#progress{gap:4px}#progress i{width:10px}.journey>span:first-child{max-width:125px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-height:500px) and (min-width:721px){.scene{padding:20px 12px 6px}.boat-area{margin:2px 0 8px}.dock{height:20px}.selected-card{padding:5px 10px;margin-top:3px}}
@media(max-width:720px){.results-modal{padding:22px 20px}.results-modal h2{font-size:26px}.results-modal .rating-stars{font-size:44px;margin:10px 0}.results-modal .score{font-size:36px}}
.animal-ear{transform-box:view-box;animation:ear-flick 8s ease-in-out infinite;animation-delay:var(--idle-time,0s)}.ear-left{transform-origin:19px 25px}.ear-right{transform-origin:47px 25px;animation-name:ear-flick-right;animation-duration:10.7s}.animal-rabbit .ear-left{transform-origin:22px 26px}.animal-rabbit .ear-right{transform-origin:44px 26px}.animal-eyes{transform-box:view-box;transform-origin:33px 34px;animation:animal-blink 6.3s linear infinite;animation-delay:var(--idle-time,0s)}.effects-paused .animal-ear,.effects-paused .animal-eyes{animation-play-state:paused}.species-name{font-size:11px;font-weight:normal;color:#7a897c;margin-left:5px}
@keyframes ear-flick{0%,83%,100%{transform:rotate(0)}86%{transform:rotate(-9deg)}89%{transform:rotate(3deg)}92%{transform:rotate(-5deg)}95%{transform:rotate(0)}}@keyframes ear-flick-right{0%,87%,100%{transform:rotate(0)}90%{transform:rotate(9deg)}93%{transform:rotate(-3deg)}96%{transform:rotate(0)}}@keyframes animal-blink{0%,43%,47%,80%,84%,100%{transform:scaleY(1)}45%,82%{transform:scaleY(.08)}}
@media(max-width:720px){.species-name{font-size:10px}}
@media(prefers-reduced-motion:reduce){.animal-ear,.animal-eyes{animation:none!important}}
.journey{display:grid;grid-template-columns:minmax(80px,1fr) minmax(0,2fr) auto;gap:20px;height:72px;flex-shrink:0}.journey>span:first-child{width:auto;max-width:180px}.voyage-progress{min-width:0}.progress-caption{display:flex;justify-content:space-between;gap:10px;font-size:10px;margin-bottom:10px;white-space:nowrap}.progress-caption>span:first-child{font-weight:bold;color:#385e5b}#progress{display:flex;gap:7px;width:100%;padding:2px}#progress i{display:block;flex:1;min-width:0;width:auto;height:8px;border-radius:5px;background:#d7dfd1}#progress i.done{background:#689385}#progress i.current{background:#d7854d;outline:2px solid #b96538;outline-offset:2px}#progress i.locked{background:#dce2d5}.run-stats{display:flex;gap:8px}.run-stat{background:#faf5e6;border:1px solid #d9decd;border-radius:11px;min-width:86px;padding:7px 10px;display:flex;flex-direction:column;gap:2px;text-align:center}.run-stat>span{font-size:9px;letter-spacing:1.5px;color:#7b8c80}.run-stat strong{font-size:25px;line-height:1.05;font-variant-numeric:tabular-nums;font-weight:bold;color:#264e50}#timer{width:auto;text-align:center}.seat.empty:after{font-family:Trebuchet MS,Arial,sans-serif;font-size:clamp(18px,2.1vw,28px);font-weight:bold;color:#294f49;text-shadow:0 1px #c4dfca}.run-summary{color:#6a8277;font-size:12px!important}
@media(max-width:1050px){.journey{gap:12px;grid-template-columns:minmax(80px,.8fr) minmax(0,1.8fr) auto}.run-stat{min-width:78px;padding:6px 8px}.run-stat strong{font-size:23px}}
@media(max-width:720px){.journey{height:66px;grid-template-columns:minmax(0,1fr) auto;gap:12px}.journey>span:first-child{display:none}.progress-caption{font-size:9px;gap:6px;margin-bottom:9px}#progress{gap:4px}#progress i{width:auto;height:6px}.run-stats{gap:6px}.run-stat{min-width:64px;padding:6px 7px;border-radius:9px}.run-stat>span{font-size:8px;letter-spacing:1px}.run-stat strong{font-size:21px}.seat.empty:after{font-size:18px}}
@media(max-height:500px) and (min-width:721px){.journey{height:45px;gap:12px}.run-stat{min-width:70px;padding:3px 7px;border-radius:8px}.run-stat strong{font-size:20px}.run-stat>span{font-size:7px}.progress-caption{font-size:9px;margin-bottom:8px}.seat.empty:after{font-size:16px}}

#app{isolation:isolate}.pier-path{pointer-events:none;background-color:#cba473;background-image:url('data:image/svg+xml;base64,PHN2ZyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCAzMjAgOTYiPjxyZWN0IHdpZHRoPSIzMjAiIGhlaWdodD0iOTYiIGZpbGw9IiNjYmE0NzMiLz48cGF0aCBkPSJNMCAxSDMyME0wIDI1SDMyME0wIDQ5SDMyME0wIDczSDMyMCIgc3Ryb2tlPSIjZWFkMmE2IiBzdHJva2Utd2lkdGg9IjIiLz48cGF0aCBkPSJNMCAyM0gzMjBNMCA0N0gzMjBNMCA3MUgzMjBNMCA5NUgzMjAiIHN0cm9rZT0iI2E0N2I0ZiIgc3Ryb2tlLXdpZHRoPSIyIi8+PGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYjU4YzVkIiBvcGFjaXR5PSIuNjUiPjxwYXRoIGQ9Ik0yMCA3UTgwIDMgMTQwIDhUMzAwIDdNMTAgMTVRODAgMTkgMTM1IDE0VDMwNSAxNU0xNCAzM1E5MCAyOCAxNzAgMzRUMzA2IDMyTTEwIDQwUTExMCA0NCAyMTAgMzlUMzEwIDQxTTEyIDU4UTg1IDUzIDE0MCA1OFQzMDAgNThNMTUgNjVRMTAwIDY5IDE3NSA2NFQzMDAgNjVNMTMgODFRMTAwIDc4IDE3NSA4M1QzMDAgODFNMTIgODlRMTAwIDkyIDE5MCA4N1QzMTAgODkiLz48ZWxsaXBzZSBjeD0iMjA1IiBjeT0iMTIiIHJ4PSIxMiIgcnk9IjQiLz48ZWxsaXBzZSBjeD0iNzUiIGN5PSI2MCIgcng9IjEwIiByeT0iNCIvPjwvZz48ZyBmaWxsPSIjODA2ZTU2Ij48Y2lyY2xlIGN4PSIxMCIgY3k9IjEyIiByPSIxLjUiLz48Y2lyY2xlIGN4PSIzMTAiIGN5PSIxMiIgcj0iMS41Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSIzNiIgcj0iMS41Ii8+PGNpcmNsZSBjeD0iMzEwIiBjeT0iMzYiIHI9IjEuNSIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iNjAiIHI9IjEuNSIvPjxjaXJjbGUgY3g9IjMxMCIgY3k9IjYwIiByPSIxLjUiLz48Y2lyY2xlIGN4PSIxMCIgY3k9Ijg0IiByPSIxLjUiLz48Y2lyY2xlIGN4PSIzMTAiIGN5PSI4NCIgcj0iMS41Ii8+PC9nPjwvc3ZnPg==');background-size:100% 96px;background-repeat:repeat-y;border-left:4px solid #a47d51;border-right:4px solid #a47d51;box-shadow:6px 0 0 #395f4d1a}.pier-path{position:absolute;left:50%;transform:translateX(-50%);bottom:0;z-index:-1;pointer-events:auto}.dock{position:relative;z-index:0}.selected-card{position:relative;z-index:1}#message{background:none;padding:6px 8px;text-shadow:0 1px 2px #faf4e5,0 -1px 2px #faf4e5}.seat.mood-happy{border-color:#dfc77d}.seat.mood-unhappy{border-color:#c89180}.passenger .mood-dot-happy{color:#9e7c24}.passenger .mood-dot-unhappy{color:#b56a58}.wish-status{font-size:10px;font-weight:normal;display:inline-block;padding:2px 5px;border-radius:5px;margin-left:5px;vertical-align:middle;background:#e8eddf;color:#718473}.wish-happy{background:#ede3b9;color:#6b6d3b}.wish-unhappy{background:#f0ddcf;color:#965a4e}.mood-effect{transform-box:fill-box;transform-origin:center;animation-delay:var(--idle-time,0s)}.mood-sparkles{animation:mood-sparkle 2.8s ease-in-out infinite;animation-delay:var(--idle-time,0s)}.mood-anger{animation:mood-frown 3.7s ease-in-out infinite;animation-delay:var(--idle-time,0s)}.effects-paused .mood-effect{animation-play-state:paused}
@keyframes mood-sparkle{0%,100%{opacity:.65;scale:.85}45%{opacity:1;scale:1.12}}@keyframes mood-frown{0%,76%,100%{rotate:0deg}80%{rotate:-8deg}84%{rotate:7deg}88%{rotate:-4deg}92%{rotate:0deg}}
@media(max-width:720px){.wish-status{font-size:9px;padding:1px 4px;margin-left:3px}.pier-path{border-width:3px;background-size:100% 72px}}@media(prefers-reduced-motion:reduce){.mood-effect{animation:none!important}}
.animal-eyes{transform-box:fill-box;transform-origin:center}.animal-fox .ear-left,.animal-fox .ear-right{transform-box:fill-box;transform-origin:50% 100%}
.character-jewel{transform-box:fill-box;transform-origin:50% 0%;animation:jewel-sway 5.7s ease-in-out infinite;animation-delay:var(--idle-time,0s)}.effects-paused .character-jewel{animation-play-state:paused}@keyframes jewel-sway{0%,80%,100%{rotate:0deg}86%{rotate:5deg}93%{rotate:-4deg}}@media(prefers-reduced-motion:reduce){.character-jewel{animation:none!important}}

/* The hull follows the measured seat grid, including its half-seat aisle. */
.boat-area{flex-shrink:0}.seat{width:var(--seat-size);height:var(--seat-size);min-height:0;max-height:none;min-width:0;max-width:none;aspect-ratio:1}.bow,.stern{font-size:var(--boat-symbol-size,28px)}
@media(max-height:680px) and (max-width:720px){.boat-area{margin-top:0}.selected-card{margin-top:6px}}
/* A fixed wish panel keeps seating geometry stable as passengers change. */
.selected-card{height:104px;min-height:104px;max-height:104px;flex-shrink:0;z-index:5}
.selected-card>div{min-width:0}.selected-card p{overflow-wrap:anywhere}.pier-path:after{content:'';position:absolute;left:0;right:0;bottom:0;height:4px;background:#936c43}
.final-details{margin:12px 0;color:#647d70;font-size:12px}.final-details summary{cursor:pointer}.final-details .result-list{color:#24474a}.results-modal #modalContent:focus{outline:none}
.results-modal:has(.coming-soon) .buttons button{flex:1;min-width:0;padding:11px 8px;font-size:12px;white-space:normal}
.coming-soon{margin:14px 0;padding:16px;border:1px solid #cbd7bd;border-radius:14px;background:#e9efdf;text-align:center}.coming-soon h3{font-size:20px;margin:6px 0}.coming-soon p{font-size:13px;line-height:1.45;margin:8px 0}.coming-soon .primary{padding:11px 22px}.coming-soon .interest-thanks{min-height:16px;margin:8px 0 0;color:#59766a;font-size:12px}.coming-soon button:disabled{opacity:1;background:#d9e4ce;color:#3d6557;box-shadow:none}.results-modal:has(.coming-soon){max-height:calc(100dvh - 28px)}.results-modal:has(.coming-soon) .result-list{max-height:72px}
@media(max-width:720px){.selected-card{height:84px;min-height:84px;max-height:84px;padding:8px 12px}.selected-card p{line-height:1.35}.coming-soon{padding:12px;margin:10px 0}.coming-soon h3{font-size:18px}}
@media(max-height:680px) and (max-width:720px){.boat{padding-top:8px;padding-bottom:8px}.boat-area{margin-top:4px;margin-bottom:6px}.selected-card{height:64px;min-height:64px;max-height:64px;padding:5px 8px}}
@media(max-height:500px) and (min-width:721px){.scene{padding-top:18px}.boat{padding-top:8px;padding-bottom:8px}.boat-area{margin-bottom:6px}.selected-card{height:52px;min-height:52px;max-height:52px}.selected-card svg{display:none}.coming-soon{padding:10px;margin:8px 0}}

/* Compact volume control, independent of the seating layout. */
.sound-controls{position:relative;display:flex;align-items:center;gap:4px}.sound-controls .icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.volume-panel{position:absolute;right:0;top:calc(100% + 10px);z-index:30;width:236px;max-width:calc(100vw - 24px);padding:15px;border:1px solid #ccd4c4;border-radius:14px;background:#fff9e9;box-shadow:0 9px 24px #234b492b}.volume-panel[hidden]{display:none}.volume-panel label{font-size:13px;font-weight:bold}.volume-row{display:flex;align-items:center;gap:10px;margin-top:12px}.volume-row input{flex:1;min-width:0;accent-color:#b86c40;cursor:pointer;touch-action:pan-x}.volume-row output{width:38px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums}@media(max-width:720px){.sound-controls{gap:3px}.sound-controls .icon svg{width:18px;height:18px}}

/* Compact layout reserves useful touch space before sizing the ferry. */
.selected-card>div{flex:1;min-width:0}.selected-card #unseatPassenger{flex:0 0 64px;min-width:64px;min-height:44px;padding:4px;border-radius:9px;background:#e2e8d9;font-size:11px;line-height:1.15}
@media(hover:none),(pointer:coarse){.seat:hover{transform:none}}
@media(max-width:720px) and (max-height:800px){
 header{height:44px}.brand{font-size:18px;gap:6px}.brand-icon{width:30px;height:30px;font-size:26px}.header-actions{gap:3px}.header-actions .icon{width:30px;height:30px}
 .journey{height:44px;gap:8px}.run-stats{gap:4px}.run-stat{min-width:55px;padding:3px 5px}.run-stat>span{font-size:7px;letter-spacing:.8px}.run-stat strong{font-size:18px}.progress-caption{margin-bottom:6px;font-size:8px}#progress{gap:3px}#progress i{height:5px}
 .play{gap:6px}.scene{padding:20px 16px 6px;min-height:0}.scene-top{top:7px}.scene-top .eyebrow{font-size:8px}.weather{display:none}.boat-area{margin-top:2px;margin-bottom:23px}.dock{height:24px;padding:0 8px;font-size:8px}
 .selected-card{height:64px;min-height:64px;max-height:64px;margin-top:4px;padding:5px 8px;gap:6px}.selected-card svg{display:none}.selected-card strong{font-size:12px;line-height:1.15;margin-bottom:3px}.selected-card p{font-size:11px;line-height:1.2}.selected-card small{display:none}
 aside{padding:0}aside>p{font-size:10px;line-height:1.15;margin:0 0 4px}#passengers{gap:4px}.passenger{min-height:52px;padding:3px 2px;gap:2px}.passenger.active{padding:2px 1px}.passenger svg{width:22px;height:22px}.passenger strong{font-size:11px;line-height:1.05}.passenger small{font-size:8px;line-height:1;margin-top:1px}
 footer{height:64px;padding-bottom:17px;gap:6px}.tools{gap:4px}.tools button{min-height:44px;padding:8px 6px;font-size:10px}footer>.primary{min-height:44px;padding:10px 12px}.game-notices{bottom:2px}.game-notices #message{padding:0;font-size:9px;line-height:1.2}#saveStatus{font-size:9px;line-height:1.2}.game-notices:has(#message:not(:empty)) #saveStatus{display:none}
}
@media(min-width:721px) and (max-height:500px){
 header{height:38px}.brand{font-size:18px}.brand-icon{width:28px;height:28px;font-size:25px}.header-actions .icon{width:30px;height:30px}
 .journey{height:38px}.run-stat{padding:2px 6px}.run-stat strong{font-size:18px}.progress-caption{margin-bottom:5px}
 .scene{padding:18px 12px 6px}.boat-area{margin-top:2px;margin-bottom:23px}.dock{height:20px}
 aside>.selected-card{width:100%;max-width:none;height:64px;min-height:64px;max-height:64px;padding:5px 8px;margin:0 0 6px;gap:6px;box-shadow:none}.selected-card small,.selected-card svg{display:none}.selected-card strong{font-size:12px;line-height:1.15;margin-bottom:3px}.selected-card p{font-size:11px;line-height:1.2}
 footer{height:48px;padding-bottom:0}.tools button{min-height:44px;padding:8px 9px}footer>.primary{min-height:44px;padding:10px 14px}.game-notices #message{padding:0;font-size:10px;line-height:1.2}#saveStatus{font-size:10px;line-height:1.2}.game-notices:has(#message:not(:empty)) #saveStatus{display:none}
}
@media(min-width:721px) and (max-height:360px){
 #app{position:relative}header{width:56%;height:34px;min-height:34px}.trip{display:none}.journey{position:absolute;top:0;right:12px;width:calc(44% - 18px);height:34px;grid-template-columns:minmax(0,1fr) auto;gap:8px}.journey>span:first-child{display:none}.journey .progress-caption{font-size:8px;margin-bottom:4px}.run-stat{min-width:52px;padding:1px 4px}.run-stat strong{font-size:16px}.run-stat>span{font-size:7px}
 .scene{padding:8px 12px 4px}.scene-top{display:none}.boat-area{margin-top:0}.dock{height:14px;font-size:7px}footer{height:44px}.tools button,footer>.primary{min-height:40px;padding-top:8px;padding-bottom:8px}
 #passengers{gap:4px}.passenger{min-height:52px;padding:3px 2px;gap:2px}.passenger.active{padding:2px 1px}.passenger svg{width:22px;height:22px}.passenger strong{font-size:11px;line-height:1.05}.passenger small{font-size:8px;line-height:1;margin-top:1px}
}

.game-notices{flex:1;min-width:0;display:grid;gap:3px}#saveStatus{font-size:11px;line-height:1.4;color:#617d73}#saveStatus[data-state="unavailable"],#saveStatus[data-state="conflict"]{color:#a14d3e}.resume-summary{background:#e7ecdc;border-radius:12px;padding:14px 16px}.resume-summary strong{display:inline-block;margin-top:5px}
@media(max-width:720px){.game-notices{position:absolute;left:0;right:0;bottom:5px;text-align:center;gap:2px}.game-notices #message{position:static;font-size:10px}.game-notices #message:empty{display:none}#saveStatus{font-size:10px}}

.noisy-badge{display:inline-block;padding:1px 5px;border-radius:5px;background:#eddfb3;color:#65522d;font-size:10px;line-height:1.35;white-space:nowrap;font-weight:bold}.selected-card>div{flex:1}#unseatPassenger{flex-shrink:0;min-width:66px;min-height:44px;border:1px solid #b9c9b5;background:#e4ebd9;border-radius:9px;padding:7px 8px;font-size:11px}.rules-details{margin:12px 0}.rules-details summary{cursor:pointer;font-size:14px;font-weight:bold;padding:8px 0}.rules-details p{font-size:13px}.quick-start{padding-left:22px;line-height:1.5;font-size:14px}.quick-start li+li{margin-top:8px}#reset{border-color:#b2bca6;background:#e7ebdb;font-weight:bold}
@media(max-width:720px){.noisy-badge{font-size:9px}.selected-card{gap:7px}#unseatPassenger{min-width:61px;font-size:10px;padding:6px}.selected-card strong .noisy-badge{vertical-align:middle}}

header:has(.release-about-button){min-height:44px}.release-about-button{min-width:44px;min-height:44px;font-family:Georgia,serif;font-size:20px;font-weight:bold;flex:0 0 44px}.release-test-badge{font:10px/1.2 Arial,sans-serif;letter-spacing:.3px;padding:4px 6px;border-radius:6px;background:#ead8b5;color:#6c5838;white-space:nowrap}.release-details{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 15px;font-size:13px}.release-details dt{color:#71847a}.release-details dd{margin:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.release-recovery{margin-top:20px;border-top:1px solid #d8dcc9;padding-top:14px}.release-recovery summary{cursor:pointer;font-size:14px;font-weight:bold;min-height:34px}.release-recovery p{font-size:12px;line-height:1.45}.release-checkpoints{display:grid;gap:7px;max-height:180px;overflow:auto}.release-checkpoints button{min-height:44px;text-align:left;padding:8px 12px}.release-checkpoints small{display:block;color:#6e8076;font-size:10px;margin-top:3px}#releaseStatus{min-height:16px;overflow-wrap:anywhere}.release-recovery .buttons button{min-height:44px;white-space:normal}.release-about-button:focus-visible{outline-offset:1px}
@media(max-width:720px){.header-actions .release-about-button{width:44px;height:44px;min-width:44px;min-height:44px}.release-test-badge{position:absolute;left:0;top:100%;padding:2px 4px;font-size:8px}.brand:has(.release-test-badge){position:relative}.release-details{font-size:12px;gap:6px 10px}.release-recovery{margin-top:14px}}
@media(max-width:480px){header .brand-icon{display:none}.header-actions{gap:2px}.header-actions .sound-controls{gap:2px}.brand{gap:0}.brand #brandName{font-size:17px}.release-test-badge{top:auto;bottom:-8px}}
@media(max-width:360px){footer .tools{flex:1;min-width:0;gap:3px}footer .tools button{flex:1;min-width:44px;padding:6px 4px;white-space:normal;line-height:1.15}footer>.primary{flex:0 0 auto;padding-left:9px;padding-right:9px}}
