/* SAVIA: one luminous landscape across every section. */
:root{--emerald:#08634e;--deep-emerald:#123d31;--leaf-ink:#224f40;--sunlight:#fbf4d9;--leaf-border:#648c6f45}
.portal{background:linear-gradient(110deg,rgba(236,243,215,.91),rgba(217,237,219,.79) 48%,rgba(17,98,76,.76)),url('assets/arbol-savia.png') center 44%/cover no-repeat;color:var(--deep-emerald);padding:24px}
.portal-rings{opacity:.4;pointer-events:none}.portal-rings i{border-color:#e7d88980}
.portal .world-card[data-tone]{--tone:#167b5d;width:min(1050px,94vw);max-height:92dvh;height:auto;min-height:0;padding:64px clamp(24px,4vw,60px) 38px;overflow-y:auto;border:1px solid #ffffffa6;border-radius:40px 12px 40px 12px;background:linear-gradient(140deg,rgba(253,249,230,.96),rgba(232,245,225,.94));box-shadow:0 26px 80px #174e3d30,inset 0 1px 0 #fff;backdrop-filter:blur(18px);color:var(--deep-emerald);scrollbar-color:#4d896e70 transparent;isolation:isolate}
.portal .world-card[data-tone="biografia"]{width:min(840px,94vw)}
.portal .world-card[data-tone="biografia"]:before,.portal .world-card[data-tone="biografia"]:after{display:none}
.portal .world-card[data-tone="biografia"] .world-content{text-shadow:none;max-width:640px}
.portal .world-card .world-kicker{color:var(--emerald);font-size:.875rem;letter-spacing:.2em;margin:22px 0 10px;text-align:center}
.portal .world-card h2,.portal .world-card[data-tone] h2{color:var(--deep-emerald);margin:10px 0 18px;font-size:clamp(2rem,4vw,3.35rem);line-height:1.2}
.portal .world-card .world-line{display:block;background:linear-gradient(90deg,transparent,#218364,#d3b96b,transparent);width:110px;height:2px;margin:0 auto 24px}
.portal .world-content{color:var(--leaf-ink);font-weight:400;line-height:1.75}
.portal .world-content h3,.portal .world-content h4,.portal .world-content .bio-lead,.portal .world-content .bio-signature{color:var(--deep-emerald)}
.portal .world-content blockquote{color:#245e47;border-color:#3b9270;background:#b4d8ad26;border-radius:0 20px 20px 0;font-size:1.3rem;line-height:1.6}
.portal .close-world{color:var(--deep-emerald);top:16px;left:24px;min-height:40px;padding:6px 12px;border:1px solid var(--leaf-border);border-radius:30px;background:#ffffff65;font-size:.875rem}
.ecosystem-nav{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin:2px auto 18px;padding-bottom:16px;border-bottom:1px solid var(--leaf-border)}
.ecosystem-nav button{border:1px solid transparent;border-radius:24px;padding:9px 14px;min-height:42px;background:transparent;color:#2b5b49;font-size:.875rem;cursor:pointer}
.ecosystem-nav button:hover{background:#d8eacd}.ecosystem-nav button[aria-current="page"]{background:var(--emerald);border-color:var(--emerald);color:#fffaf0;box-shadow:0 4px 12px #08634e20}
.portal a:focus-visible,.portal button:focus-visible,.portal input:focus-visible,.portal textarea:focus-visible,.portal select:focus-visible{outline:3px solid #187d60;outline-offset:4px}
/* Music: illuminated album sleeves within the same garden. */
.portal .garden-intro p,.portal .gallery-intro p{color:#245d45;font-size:1.3rem}.portal .garden-intro span,.portal .gallery-intro span{color:#4b6a54;opacity:1;font-size:.875rem}
.portal .sound-garden{background:none;border:0;padding:8px 0;gap:16px;align-items:stretch;min-height:0}
.portal .song-seed{background:linear-gradient(145deg,#fffbed,#e0efd9);border:1px solid #7eaa804d;border-radius:24px 8px 24px 8px;box-shadow:0 8px 24px #205e3f12;color:var(--deep-emerald);grid-template-rows:minmax(54px,auto) 116px auto;padding:16px 10px;gap:12px;min-height:234px}
.portal .song-seed strong{color:#174a38;font-size:1.1rem;line-height:1.3}.portal .song-seed small{color:#537158;font-size:.75rem;letter-spacing:.1em}
.portal .song-seed .song-cover{width:116px;height:116px;border-radius:14px 4px 14px 4px;box-shadow:0 6px 16px #20543d20}
.portal .song-seed:hover,.portal .song-seed:focus-visible{outline-color:#298261;border-color:#458e6b;box-shadow:0 12px 24px #20543d26}
.portal .song-bloom{background:linear-gradient(145deg,#fcf8e5,#deefda);border:1px solid #70a77c66;border-radius:28px 8px 28px 8px;padding:60px 30px 30px;color:var(--deep-emerald);box-shadow:0 18px 50px #184c3b25}
.portal .song-bloom h3{color:var(--deep-emerald)!important}.portal .song-bloom blockquote{background:transparent;color:#2a674d;border:0;padding:0}.portal .bloom-story{opacity:1;color:#315744;font-size:1rem!important}.portal .bloom-emotion{color:#397254;font-size:.875rem}.portal .bloom-close{color:#205c43;min-height:36px}.portal .bloom-orbit{display:none}
.portal .listen-links a,.portal .qr-access a{color:#fffdf0;background:var(--emerald);border:1px solid var(--emerald);font-size:.875rem;min-height:44px;padding:11px 18px}
.portal .listen-links a:hover,.portal .qr-access a:hover{background:#074b3b}
.portal .calm-universe{border-color:var(--leaf-border)}.portal .calm-channel{background:#f8f8e5a6;border-color:#78a57b55;border-radius:24px 8px 24px 8px}
.portal .calm-channel p,.portal .calm-heading .calm-kicker{color:#44684f}.portal .calm-pending{color:#356349;border-color:#85a98680;background:#dbeccb}.portal .calm-channel-link{color:var(--emerald)}
/* Gallery: clear photographs suspended in soft emerald light. */
.portal .world-card[data-tone="galeria"]{width:min(1120px,94vw)}
.portal .memory-sky{background:radial-gradient(ellipse,#add8b75c,transparent 70%);height:min(61vh,570px);min-height:450px;overflow:hidden}
.portal .fog-one{background:#f4e8b59c}.portal .fog-two{background:#429b7b33}
.portal .memory-card{opacity:.92;filter:none;padding:5px;background:#f7f9e8a6;border:1px solid #ffffff9c;border-radius:38% 12% 38% 12%;box-shadow:0 8px 25px #1a583528}
.portal .memory-card:after,.portal .memory-card:before{display:none}
.portal .memory-card img{border-radius:36% 10% 36% 10%;mask-image:none;-webkit-mask-image:none;filter:saturate(.9);box-shadow:none}
.portal .memory-card span{opacity:1;bottom:12%;background:#164e3bd9;padding:4px 12px;border-radius:20px;font:400 .875rem/1.4 "DM Sans",sans-serif;text-shadow:none;color:#fffdf0;transform:translate(-50%,0)}
.portal .memory-card:hover,.portal .memory-card:focus-visible{filter:none;opacity:1}.portal .memory-card:hover img{filter:saturate(1)}
body[data-world="galeria"] .memory-dream{position:fixed;inset:4vh 4vw;z-index:100;grid-template-columns:54px minmax(0,1fr) 54px;padding:64px 12px 28px;background:linear-gradient(135deg,#f6f3dff5,#deeedbf5);border:1px solid #a2c4a1;border-radius:20px;backdrop-filter:blur(20px)}
body[data-world="galeria"] .memory-dream figure img{mask-image:none;-webkit-mask-image:none;filter:none;border-radius:10px;box-shadow:0 12px 30px #174e3d26}
body[data-world="galeria"] .dream-return,body[data-world="galeria"] .dream-count,body[data-world="galeria"] .memory-dream figcaption{color:var(--deep-emerald)}body[data-world="galeria"] .dream-nav{color:var(--emerald);background:#ffffff8c;border-color:#91b49c}body[data-world="galeria"] .dream-nav:hover{background:#c9e3c6}
/* Carola: portrait and chapters connected by a green timeline. */
.portal .carola-story{height:auto;grid-template-columns:minmax(240px,.9fr) minmax(280px,1.1fr);align-items:start;gap:40px}
.portal .carola-portrait{height:480px;min-height:0;border-radius:36px 8px 36px 8px;background:#dce8d2;box-shadow:0 12px 30px #235e3920}
.portal .carola-portrait img{object-fit:contain;filter:none;transform:none}.portal .carola-portrait:after{background:linear-gradient(transparent 75%,#174d3ad9)}
.portal .carola-portrait figcaption{color:#fffae7;font-size:.75rem;letter-spacing:.12em}
.portal .carola-lead{color:#20593e}.portal .cycle-step{color:#2a5e45;opacity:1}.portal .cycle-step small{color:#477156}.portal .cycle-step:before{background:#e6efd9;border-color:#3c8a66;box-shadow:0 0 0 5px #e6efd9}.portal .cycle-step.active:before{background:#187a56;box-shadow:0 0 0 5px #c8dfbf,0 0 20px #589d6055}.portal .life-cycle:before{background:#81ab85}
.portal .life-chapter .chapter-number{color:#4b7b52}.portal .cycle-closing{border-color:var(--leaf-border);color:#416249}.portal .cycle-closing em{color:#216341}
/* Contact: warm paper, emerald details and generous touch targets. */
.portal .world-card[data-tone="contacto"]{width:min(920px,94vw)}
.portal .contact-layout{gap:36px}.portal .contact-details{padding:24px;background:#d7e9cf70;border:1px solid #8eaf8550;border-radius:26px 8px 26px 8px;align-self:start}
.portal .contact-details a{color:#075e46}.portal .contact-socials a{border-color:#729b7155;background:#faffed60}.portal .contact-socials a:hover{background:#faffed}.portal .contact-socials span{color:#42674b}
.portal .contact-field input,.portal .contact-field select,.portal .contact-field textarea{background:#fffff2bf;border-color:#87aa855f;color:#244a35;border-radius:12px;padding:13px}
.portal .contact-form button{background:var(--emerald);border-color:var(--emerald);color:#fffdf0;border-radius:24px}.portal .contact-form button:hover{background:#074b3b}.portal .contact-note{color:#46694f}
@media(max-width:760px){
.portal{padding:10px;background-position:center}
.portal .world-card[data-tone]{width:100%;max-height:94dvh;padding:62px 18px 28px;border-radius:28px 8px 28px 8px}
.portal .close-world{left:16px;top:12px}.portal .close-world span{display:inline}
.ecosystem-nav{gap:3px;justify-content:flex-start}.ecosystem-nav button{padding:8px 11px;font-size:.875rem}
.portal .world-card h2,.portal .world-card[data-tone] h2{font-size:clamp(1.85rem,7vw,2.4rem)}
.portal .song-seed{grid-template-columns:76px minmax(0,1fr);grid-template-rows:auto 76px;min-height:0;padding:14px;gap:12px 18px}.portal .song-seed .song-cover{width:76px;height:76px}.portal .song-seed strong{font-size:1.2rem}.portal .sound-garden{gap:12px}
.portal .song-bloom{padding:58px 20px 24px;justify-content:flex-start;min-height:410px}.portal .sound-garden[data-active]{min-height:520px}.portal .song-bloom h3{margin-top:8px!important}
.portal .memory-sky{height:auto;min-height:0;overflow:visible;gap:12px;padding:18px 0;grid-template-columns:repeat(2,minmax(0,1fr))}.portal .memory-card{height:180px!important}.portal .memory-card:nth-of-type(odd){margin-top:20px}.portal .memory-card span{font-size:.8rem;max-width:95%;white-space:normal;text-align:center}
body[data-world="galeria"] .memory-dream{position:fixed;inset:0;z-index:100;border-radius:24px;grid-template-columns:38px minmax(0,1fr) 38px;padding:64px 4px 26px}body[data-world="galeria"] .memory-dream figure img{max-height:65dvh}body[data-world="galeria"] .dream-nav{width:34px;height:40px}body[data-world="galeria"] .dream-return{top:18px;left:14px;min-height:40px}
.portal .carola-story{display:block}.portal .carola-portrait{height:300px;margin-bottom:26px}.portal .carola-portrait img{object-position:center}.portal .life-chapters{min-height:0}.portal .life-chapter{padding-bottom:16px}.portal .carola-narrative{padding:0}
.portal .contact-layout{grid-template-columns:1fr;gap:24px}.portal .contact-details{padding:20px}
}

/* QR Studio shares the same landscape and palette. */
body.qr-ecosystem{color:#204d3b;background:linear-gradient(120deg,#f4f3dbef,#d7eddbed),url('assets/arbol-savia.png') center/cover fixed}
.qr-ecosystem header{background:#fffce980;border-color:#86ab7955;backdrop-filter:blur(14px)}
.qr-ecosystem header small,.qr-ecosystem .qr-nav a{color:#216b4d}.qr-ecosystem .panel{background:linear-gradient(140deg,#fffbebeb,#e0efdbeb);border-color:#87ad8055;border-radius:28px 8px 28px 8px;box-shadow:0 12px 35px #174e3d18}
.qr-ecosystem h1,.qr-ecosystem h2,.qr-ecosystem label,.qr-ecosystem .host{color:#164a37}
.qr-ecosystem input[type=url],.qr-ecosystem input[type=text]{background:#fffef1;border-color:#8aaf8755;color:#254d37}.qr-ecosystem input:focus{border-color:#167c56;box-shadow:0 0 0 3px #167c5622}
.qr-ecosystem .hint,.qr-ecosystem .status,.qr-ecosystem .destination,.qr-ecosystem .note,.qr-ecosystem .fallback{color:#486a4f}.qr-ecosystem .status.error{color:#9e352b}
.qr-ecosystem .actions a{background:#08634e;color:#fffbee;border-color:#08634e;border-radius:24px}.qr-ecosystem .actions a.secondary{background:#f6f7e4;color:#08634e}.qr-ecosystem .fallback a{color:#08634e}.qr-ecosystem .choice input{accent-color:#08634e}.qr-ecosystem .motion{opacity:1;border-radius:18px}

/* The supplied 3D video already includes the rotation. */
.tree-world{overflow:hidden;background:#f7edcf url('assets/savia-portada-360.jpg') center/cover no-repeat}
.tree-image{animation:none;transform:none;will-change:auto;object-position:center;filter:none}
@media(max-width:760px){.intro>p:last-child{display:block;font-size:16px;line-height:1.45;margin:10px 0 0}.tree-image{object-position:50% center}}
/* Portrait collection: staggered editorial cards with a full-image viewer. */
.portrait-intro{text-align:left;margin:0 0 28px}.portrait-intro p{font:400 clamp(1.2rem,3vw,1.8rem)/1.3 Georgia,serif;margin:0 0 8px}.portrait-intro span{font-size:.9rem;color:#547367}
.portrait-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start;padding:5px 4px 30px}
.portrait-card{padding:0;border:1px solid #b9cbb8;border-radius:80px 12px 12px 12px;overflow:hidden;background:#fffefa;color:#163f30;cursor:pointer;box-shadow:0 8px 18px #133c3010;transition:transform .25s,box-shadow .25s;text-align:left}
.portrait-card:nth-child(3n+2){margin-top:38px;border-radius:12px 80px 12px 12px}.portrait-card:nth-child(3n){margin-top:12px}
.portrait-card img{display:block;width:100%;aspect-ratio:2/3;object-fit:contain;background:#f5f4f1}
.portrait-card>span{display:flex;align-items:center;gap:10px;padding:14px 15px;font-size:1rem}.portrait-card small{font-size:.7rem;opacity:.6;letter-spacing:.08em}.portrait-card b{margin-left:auto;font-weight:400}
.portrait-card:hover{transform:translateY(-7px) rotate(-1deg);box-shadow:0 18px 28px #133c3024}.portrait-card:focus-visible{outline:3px solid #167c56;outline-offset:3px}
body[data-world="galeria"] .portrait-viewer{position:fixed;inset:0;z-index:100;display:grid;grid-template-columns:54px minmax(0,1fr) 54px;background:#112d26f5;padding:64px 24px 38px;backdrop-filter:blur(14px);border-radius:0}
body[data-world="galeria"] .portrait-viewer[hidden]{display:none}
body[data-world="galeria"] .portrait-viewer figure{margin:0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:12px}
body[data-world="galeria"] .portrait-viewer figure img{width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 160px);object-fit:contain;border-radius:8px;box-shadow:0 15px 50px #0005}
body[data-world="galeria"] .portrait-viewer figcaption{color:#f3f3df;font:400 .9rem/1.4 'DM Sans',sans-serif;text-align:center}
body[data-world="galeria"] .portrait-viewer .dream-return{top:15px;left:auto;right:22px;color:#f7f6e7;background:#ffffff12;border:1px solid #ffffff50;border-radius:30px;padding:10px 18px}
body[data-world="galeria"] .portrait-viewer .dream-nav{color:#f7f6e7;background:#ffffff12;border:1px solid #ffffff50;border-radius:50%;width:44px;height:44px;font-size:30px;display:grid;place-items:center}
body[data-world="galeria"] .portrait-viewer .dream-count{color:#f7f6e7;bottom:12px}
@media(max-width:760px){.portrait-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.portrait-card:nth-child(n){margin-top:0;border-radius:40px 8px 8px 8px}.portrait-card:nth-child(even){margin-top:26px;border-radius:8px 40px 8px 8px}.portrait-card>span{padding:12px 9px;font-size:.82rem;gap:6px}.portrait-card:last-child{grid-column:1/-1;width:70%;justify-self:center}body[data-world="galeria"] .portrait-viewer{padding:64px 8px 40px;grid-template-columns:36px minmax(0,1fr) 36px}body[data-world="galeria"] .portrait-viewer .dream-nav{width:32px;height:44px}}
