/* Bloom · Android application layers. Lightweight CSS 3D adapted from the
   supplied exploded-phone reference; no WebGL or additional dependencies. */
.rd-page #android .dg-assembly {
  min-width: 0;
  min-height: 540px;
  padding: 24px 18px;
  background: radial-gradient(ellipse at 50% 35%, #deecda 0%, #eef3e6 72%);
  border: 1px solid #b6c9b0;
}
.rd-page #android .dg-assembly::before { pointer-events: none; }
.android-assembly {
  width: 100%;
  min-width: 0;
  position: relative;
  z-index: 1;
  color: #294a38;
  font-family: 'DM Sans', Arial, sans-serif;
}
.assembly-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 6px 10px;
  font: 700 9px/1.5 'DM Sans', Arial, sans-serif;
  letter-spacing: .055em;
  color: #477154;
}
.assembly-heading [data-assembly-status] { color: #9a5a3c; }
.assembly-view {
  --assembly-x: 55deg;
  --assembly-z: -34deg;
  height: clamp(340px, 31vw, 407px);
  width: 100%;
  position: relative;
  display: grid;
  place-items: center;
  perspective: 1050px;
  cursor: grab;
  touch-action: pan-y;
  -webkit-user-select: none;
  user-select: none;
  outline-offset: -5px;
}
.assembly-view:active { cursor: grabbing; }
.assembly-view:focus-visible { outline: 3px solid #c36e4c; border-radius: 12px; }
.assembly-view::before {
  content: "";
  position: absolute;
  width: min(85%, 280px);
  height: 70px;
  border-radius: 50%;
  background: #3c67432a;
  filter: blur(21px);
  transform: translateY(114px) rotate(-15deg);
}
.assembly-orbit {
  width: 154px;
  height: 276px;
  position: relative;
  transform-style: preserve-3d;
  transform: rotateX(var(--assembly-x)) rotateZ(var(--assembly-z));
  transition: transform .8s cubic-bezier(.2,.75,.2,1);
  pointer-events: none;
}
.assembly-layer {
  position: absolute;
  inset: 0;
  border-radius: 29px;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  transition: transform .8s cubic-bezier(.22,.8,.22,1), opacity .65s ease;
}
.assembly-chassis {
  transform: translateZ(-68px);
  background: linear-gradient(145deg,#365443,#152f28 75%);
  border: 4px solid #5e8b6b;
  box-shadow: 0 20px 38px #1b403f50, inset 0 0 0 3px #22372b;
}
.assembly-camera {
  position: absolute;
  top: 15px;
  left: 12px;
  width: 39px;
  height: 70px;
  border: 1px solid #749985;
  background: #182e28;
  border-radius: 14px;
  display: grid;
  place-items: center;
  padding-block: 8px;
}
.assembly-camera i {
  width: 18px;
  height: 18px;
  border: 3px solid #7a9b90;
  background: radial-gradient(circle, #cfecd3 2px, #254f52 5px, #12292a 7px);
  border-radius: 50%;
}
.assembly-chassis-brand {
  position: absolute;
  bottom: 20px;
  left: 0;
  width: 100%;
  text-align: center;
  font: 700 9px/1.2 'DM Sans', sans-serif;
  letter-spacing: .17em;
  color: #b4d9b8;
}
.assembly-systems {
  transform: translateZ(-12px);
  border: 2px solid #79a783;
  background: linear-gradient(135deg,#e8f1e8dd,#d6e9dbd8);
  box-shadow: 0 0 0 2px #335f4440, 0 18px 36px #173f2d2a;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.assembly-traces {
  position: absolute;
  inset: 19px;
  opacity: .65;
  background: repeating-linear-gradient(90deg, transparent 0 13px, #77a68b 13px 14px, transparent 14px 27px),
    repeating-linear-gradient(0deg, transparent 0 23px, #77a68b 23px 24px, transparent 24px 47px);
  border: 1px dashed #7aa78a;
  border-radius: 12px;
}
.assembly-core {
  position: relative;
  width: 84px;
  height: 93px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  border-radius: 15px;
  background: #294d3b;
  color: #f4f4e9;
  box-shadow: 0 12px 30px #22442b55;
}
.assembly-core strong { font: 800 15px/1 'DM Sans', sans-serif; letter-spacing: .12em; color: #e6a68d; }
.assembly-core span { font: 700 9px/1.2 'DM Sans', sans-serif; letter-spacing: .1em; }
.assembly-screen {
  transform: translateZ(49px);
  background: #16272c;
  border: 3px solid #bbd6c2;
  box-shadow: 0 15px 30px #233d3c50;
  overflow: hidden;
}
.assembly-screen-grid {
  position: absolute;
  inset: 0;
  background: linear-gradient(#86ab991c 1px,transparent 1px),
    linear-gradient(90deg,#86ab991c 1px,transparent 1px);
  background-size: 17px 17px;
}
.assembly-screen-label {
  position: absolute;
  bottom: 13px;
  right: 13px;
  color: #b5cdbd;
  font: 700 8px/1.2 'DM Sans',sans-serif;
  letter-spacing: .1em;
}
.assembly-interface {
  transform: translateZ(112px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px 12px;
  background: #eaf5edee;
  border: 2px solid #f9fff8;
  box-shadow: 0 20px 36px #2c654837;
  overflow: hidden;
}
.assembly-appbar {
  height: 37px;
  background: #de8869;
  color: #fff9f3;
  border-radius: 11px;
  padding: 10px 8px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font: 800 8px/1 'DM Sans',sans-serif;
}
.assembly-appbar i { width: 10px;height:10px;border-radius:50%;background:#fff3e1; }
.assembly-appcontent { display: flex;flex-direction: column;gap:12px;flex:1; }
.assembly-appcard {
  height: 78px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 12px;
  background: #ffffffad;
  border: 1px solid #adc9b6;
  border-radius: 12px;
}
.assembly-appcard span { height: 16px;width:54%;border-radius:5px;background:#87b696; }
.assembly-appcard i {height:7px;background:#c1d7c6;border-radius:5px;}
.assembly-appcard i:last-child {width:74%;}
.assembly-appchart {
  display:flex;
  justify-content:space-around;
  align-items:flex-end;
  padding:8px 11px;
  gap:10px;
  height:49px;
  background:#d9e9dc;
  border-radius:10px;
}
.assembly-appchart i {display:block;flex:1;border-radius:4px 4px 1px 1px;background:#78a889;height:56%;}
.assembly-appchart i:nth-child(2) {height:95%;background:#d79175;}
.assembly-appchart i:nth-child(3) {height:70%;}
.assembly-appchart i:nth-child(4) {height:85%;}
.assembly-appstatus {display:flex;align-items:center;gap:5px;margin-top:auto;color:#426e4a;font:800 7px 'DM Sans',sans-serif;}
.assembly-appstatus span {height:8px;width:8px;flex:none;border-radius:50%;background:#5f9a6e;}
.android-assembly[data-state="assembled"] .assembly-orbit {
  transform:rotateX(var(--assembly-x)) rotateZ(var(--assembly-z));
}
.android-assembly[data-state="assembled"] .assembly-chassis {transform:translateZ(-6px);}
.android-assembly[data-state="assembled"] .assembly-systems {transform:translateZ(0);opacity:0;}
.android-assembly[data-state="assembled"] .assembly-screen {transform:translateZ(3px);}
.android-assembly[data-state="assembled"] .assembly-interface {transform:translateZ(7px);}
.assembly-controls { display:flex;gap:9px;flex-wrap:wrap;justify-content:center; }
.assembly-controls button {
  min-height:44px;
  border-radius:50px;
  border:1px solid #9bbb9d;
  background:#f8faec;
  color:#30543c;
  padding:10px 14px;
  font:700 11px/1.3 'DM Sans',Arial,sans-serif;
  cursor:pointer;
}
.assembly-controls button:first-child {border-color:#355c43;background:#365f48;color:#fffdf4;}
.assembly-controls button:hover {background:#e0ebda;color:#1c4030;}
.assembly-controls button:first-child:hover {background:#274b39;color:#fff;}
.assembly-controls button:focus-visible {outline:3px solid #c36e4c;outline-offset:3px;}
.assembly-help {text-align:center;font:600 10px/1.5 'DM Sans',Arial,sans-serif;margin:12px 0 0;color:#59745c;}
@keyframes assembly-orbit-loop {
  0%,15%,89%,100% {transform:rotateX(55deg) rotateZ(-34deg);}
  43%,69% {transform:rotateX(var(--assembly-x)) rotateZ(var(--assembly-z));}
}
@keyframes assembly-chassis-loop {
  0%,15%,89%,100% {transform:translateZ(-68px);}
  43%,69% {transform:translateZ(-6px);}
}
@keyframes assembly-systems-loop {
  0%,15%,89%,100% {transform:translateZ(-12px);opacity:1;}
  43%,69% {transform:translateZ(0);opacity:0;}
}
@keyframes assembly-screen-loop {
  0%,15%,89%,100% {transform:translateZ(49px);}
  43%,69% {transform:translateZ(3px);}
}
@keyframes assembly-interface-loop {
  0%,15%,89%,100% {transform:translateZ(112px);}
  43%,69% {transform:translateZ(7px);}
}
.android-assembly.is-auto .assembly-orbit {animation:assembly-orbit-loop 7.2s cubic-bezier(.45,0,.2,1) infinite;}
.android-assembly.is-auto .assembly-chassis {animation:assembly-chassis-loop 7.2s cubic-bezier(.45,0,.2,1) infinite;}
.android-assembly.is-auto .assembly-systems {animation:assembly-systems-loop 7.2s cubic-bezier(.45,0,.2,1) infinite;}
.android-assembly.is-auto .assembly-screen {animation:assembly-screen-loop 7.2s cubic-bezier(.45,0,.2,1) infinite;}
.android-assembly.is-auto .assembly-interface {animation:assembly-interface-loop 7.2s cubic-bezier(.45,0,.2,1) infinite;}
@media(max-width:700px) {
  .rd-page #android .dg-assembly { min-height:510px;padding:19px 13px; }
  .assembly-view {height:350px;}
  .assembly-orbit {width:138px;height:248px;}
  .assembly-layer {border-radius:25px;}
  .assembly-heading {font-size:8px;}
}
@media(max-width:365px) {
  .rd-page #android .dg-assembly { min-height:475px;padding:16px 9px;}
  .assembly-view {height:315px;}
  .assembly-orbit {width:120px;height:217px;}
  .assembly-interface {padding:13px 9px;gap:8px;}
  .assembly-appbar {height:33px;}
  .assembly-appcard {height:57px;padding:9px;}
  .assembly-appchart {height:40px;}
  .assembly-controls button {flex:1;font-size:10px;padding-inline:7px;}
  .assembly-help {font-size:9px;}
}
@media(prefers-reduced-motion:reduce) {
  .android-assembly .assembly-orbit,
  .android-assembly .assembly-layer { animation:none!important;transition:none!important; }
}
