/* 破土 · 原画云海城堡。The supplied painting now is the main world, not a fallback. */
.world{
  min-height:calc(100vh - 126px);
  background:#a9cce9;
  isolation:isolate;
}
.world .scene-wrap{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  max-width:none;
  margin:0;
  aspect-ratio:auto;
  z-index:0;
}
.world .world3d.is-3d{
  background:linear-gradient(180deg,#c8e2f03b,#e5edf32e),
             url("cloud-castle-original.png") left center / auto 132% no-repeat;
}
.world.is-night .world3d.is-3d{background:#283e5d}
.world .world3d.is-3d canvas{background:transparent}
.world .world-copy{z-index:5;top:34px;left:4.3%;filter:drop-shadow(0 1px 14px #ffffff50)}
.world .world-copy h1{color:#325769;font-size:clamp(28px,2.7vw,42px);letter-spacing:.12em;text-shadow:0 1px 8px #ffffff68}
.world .world-copy h1 em{color:#b87950}
.world .world-copy p{color:#607c87}
.world .eyebrow{color:#8b8f80}
.world .weather{z-index:5;top:33px;color:#536c7c;text-shadow:0 1px 8px #ffffffb3}
.world .weather b{color:#3f6880}
.world .world-bottom{z-index:6;bottom:21px}
.world .world-nav{background:#ffffffe5;border:1px solid #fffaf2;box-shadow:0 10px 34px #244b6740;backdrop-filter:blur(16px)}
.world .world-nav button{color:#5b7382}
.world .world-nav button:first-child{background:#547f85;color:#fff}
.world .world-note{color:#fff9e9;text-shadow:0 2px 8px #47627591}
.world .scene-controls{z-index:7;background:#fffdf7e8;border:1px solid #ffffffc9;box-shadow:0 10px 30px #2d5f7940;backdrop-filter:blur(14px)}
.world .scene-controls button{color:#557485}
.world .scene-controls button:hover{background:#e5f0f5}
.world .scene-help{z-index:5;background:#fffdf8d9;color:#55717b;backdrop-filter:blur(8px);bottom:8%;font-size:11px}
.world .scene-loading{z-index:8}
.world .scene-loading[hidden]{display:none}
.world-photo-stage{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab;background:#b8d9ed}
.world-photo-stage::before{
  content:"";position:absolute;inset:-30px;pointer-events:none;
  background:url("cloud-castle-original.png") center / cover no-repeat;
  filter:blur(20px) saturate(.78);opacity:.68;
}
.world-photo-stage.is-dragging{cursor:grabbing}
.world-photo-stage.photo-is-placing{cursor:crosshair}
.world-photo-plane{position:absolute;overflow:visible;will-change:left,top,width,height}
.world-photo-stage.photo-fit-view .world-photo-plane{box-shadow:0 0 32px #45678436}
.world-photo-image{display:block;width:100%;height:100%;object-fit:fill;max-width:none;user-select:none;-webkit-user-drag:none;pointer-events:none}
.world-photo-vignette{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,#e7f1f6b5 0%,#e3f0f34a 19%,transparent 39%),
             linear-gradient(90deg,#deecf4c2 0%,#dcebf482 22%,transparent 53%),
             linear-gradient(0deg,#3a566122,transparent 24%);
}
.world-photo-atmosphere{
  position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .75s ease;
  background:linear-gradient(180deg,#172c4a90,#132f518a 52%,#0c25459c);
}
.photo-is-night .world-photo-atmosphere{opacity:1}
.photo-castle-gate{
  position:absolute;left:75.2%;top:45.3%;width:5%;height:13%;
  transform:translate(-50%,-50%);border:2px solid transparent;border-radius:48% 48% 15% 15%;
  background:transparent;cursor:pointer;
}
.photo-castle-gate:hover,.photo-castle-gate:focus-visible{
  border-color:#ffe9a7;box-shadow:0 0 24px 10px #ffe7a58a,inset 0 0 20px #fff2b34d;
  outline:none;
}
.photo-door-open .photo-castle-gate{
  border-color:#ffdfa1;box-shadow:0 0 26px 9px #ffda7a9c,inset 0 0 18px #fff0c8a6;
}
.photo-castle-gate::after{
  content:"进入城堡";position:absolute;top:100%;left:50%;transform:translateX(-50%);
  white-space:nowrap;font-size:11px;letter-spacing:.08em;color:#fff7df;text-shadow:0 1px 7px #493921;
  opacity:0;transition:opacity .2s;
}
.photo-castle-gate:hover::after,.photo-castle-gate:focus-visible::after,.photo-door-open .photo-castle-gate::after{opacity:1}
.photo-firefly{
  position:absolute;display:grid;place-items:center;transform:translate(-50%,-50%);
  width:31px;height:31px;border-radius:50%;border:1px solid #fff8cbaa;
  color:#fff5c2;font-size:18px;line-height:1;
  background:radial-gradient(circle,#ffda6ebc 0%,#e5c77685 28%,#ffeab700 75%);
  box-shadow:0 0 23px #ffe7a0a6;cursor:pointer;
  text-shadow:0 0 8px #ffedaf;
  animation:photo-float 3.5s ease-in-out infinite;
}
.photo-firefly:nth-of-type(odd){animation-delay:-1.8s}
.photo-firefly:hover,.photo-firefly:focus-visible{width:40px;height:40px;border-color:#fff4bc;outline:2px solid #ffe7a7}
.photo-firefly.discovered{color:#ddffcf;background:radial-gradient(circle,#8dd2a3bc 0%,#a5d5b17a 33%,transparent 76%);box-shadow:0 0 16px #b9e5b9}
@keyframes photo-float{0%,100%{translate:0 0;filter:brightness(1)}50%{translate:0 -7px;filter:brightness(1.23)}}
.world-photo-items,.world-photo-growth{position:absolute;inset:0;pointer-events:none}
.photo-decoration{position:absolute;transform:translate(-50%,-50%);font-size:clamp(18px,2vw,30px);line-height:1;
  border-radius:50%;padding:5px;filter:drop-shadow(0 3px 4px #344b418a);background:#fff6d626}
.photo-decoration.growth-sparkle{font-size:24px;color:#fff1b3;background:transparent;text-shadow:0 0 10px #fff0b1;animation:photo-twinkle 3s ease-in-out infinite}
@keyframes photo-twinkle{0%,100%{opacity:.35;scale:.8}50%{opacity:1;scale:1.12}}
.world-photo-hint{position:absolute;left:3.6%;bottom:13%;color:#fffdf4;font-size:11px;letter-spacing:.1em;
  text-shadow:0 2px 9px #46617dd6;pointer-events:none}
.world.is-night .world-copy h1,.world.is-night .world-copy p,.world.is-night .eyebrow,
.world.is-night .weather,.world.is-night .weather b{color:#ecf7ff;text-shadow:0 2px 9px #091e46}
.world.is-night .world-copy h1 em{color:#ffe2ab}
.world.is-night .scene-help{background:#1d3a58bf;color:#f5f7ee}
@media(max-width:900px){
  .world .world-copy h1{font-size:27px}
  .world .world-copy p{max-width:270px}
  .world .weather{right:3%;font-size:10px}
}
@media(max-width:760px){
  .world{min-height:660px;height:calc(100svh - 102px);max-height:850px}
  .world .scene-wrap{margin:0;aspect-ratio:auto}
  .world .world-copy{top:23px;left:5%}
  .world .world-copy h1{font-size:clamp(24px,5.9vw,30px);line-height:1.45;margin:11px 0}
  .world .world-copy p{font-size:11px;max-width:220px}
  .world .weather{display:none}
  .world .world-bottom{bottom:10px}
  .world .world-nav{flex-wrap:wrap;justify-content:center;max-width:96vw;border-radius:17px}
  .world .world-nav button{font-size:11px;padding:9px 11px}
  .world .scene-controls{right:50%;bottom:15%;transform:translateX(50%);z-index:7}
  .world .scene-help{bottom:22%;left:50%;transform:translateX(-50%);font-size:10px;white-space:nowrap}
  .world-photo-hint{bottom:28%;left:5%}
  .photo-firefly{width:27px;height:27px}
  .photo-decoration{font-size:20px}
}
@media(prefers-reduced-motion:reduce){
  .photo-firefly,.photo-decoration.growth-sparkle{animation:none}
  .world-photo-atmosphere{transition:none}
}
