*{box-sizing:border-box} :root{--bg:#080610;--panel:#110d1c;--panel2:#171025;--line:#2a2038;--text:#f7eafa;--muted:#b8a6c6;--pink:#fa4b9b;--violet:#b66aff;--gold:#ffbf55;--blue:#8b8cff;--green:#70d7ad}
body{margin:0;background:radial-gradient(ellipse at 50% 0%,#281339 0,#0a0710 48%,#07050b 100%);color:var(--text);font-family:ui-rounded,"SF Pro Rounded",system-ui,sans-serif;font-size:14px;min-height:100vh}
button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}.app-shell{max-width:520px;margin:auto;min-height:100dvh;padding:env(safe-area-inset-top) 12px calc(94px + env(safe-area-inset-bottom));position:relative}
.top{height:66px;display:flex;align-items:center;justify-content:space-between;gap:8px}.brand{display:flex;align-items:center;gap:8px;text-align:center}.brandmark{font-size:35px;color:#f4a2f2;text-shadow:0 0 18px #ce58ff}.brand h1{font-family:Georgia,serif;font-weight:500;letter-spacing:1px;font-size:27px;margin:0}.brand small{color:#d9a9e7;font-size:10px;letter-spacing:.4px}.iconbtn{border:1px solid #33213f;background:#130d20;border-radius:13px;width:39px;height:39px;font-size:19px}
h2{font:24px Georgia,serif;margin:9px 0 14px}h3{font-size:15px;margin:0 0 10px}.muted{color:var(--muted)}.tiny{font-size:11px;color:var(--muted)}.panel{background:linear-gradient(145deg,rgba(27,18,41,.97),rgba(11,9,18,.98));border:1px solid var(--line);border-radius:17px;padding:14px;margin:12px 0;box-shadow:0 7px 24px #0004}.panelhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.pill{border:1px solid #3b2850;border-radius:999px;padding:7px 11px;background:#1b1228;color:#e7c9f7}.primary{background:linear-gradient(120deg,#8f45b6,#d74aaf);border:0;border-radius:13px;padding:11px 15px;font-weight:650;box-shadow:0 0 17px #a33edc44}.secondary{background:#171020;border:1px solid #3a2a49;border-radius:12px;padding:9px 12px}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin:10px 0 13px}.weekday{border:1px solid #392743;background:#181220;border-radius:22px;text-align:center;padding:8px 0 7px;color:#e4cfe9;min-height:59px}.weekday strong{display:block;font-size:12px;margin-top:7px}.weekday .mark{height:7px;font-size:10px;color:var(--pink)}.weekday.today{outline:2px solid #f78be3;border-color:#f78be3;background:#39203f}
.wheelpanel{text-align:center;padding:12px 10px 15px;overflow:hidden}.wheel{width:min(78vw,330px);height:min(78vw,330px);max-width:330px;max-height:330px;margin:0 auto;position:relative;border-radius:50%;background:radial-gradient(circle,#100b19 0 48%,transparent 49%);border:1px solid #32203d;box-shadow:inset 0 0 35px #7e31aa20,0 0 22px #7e31aa12}
.wheel:before{content:"";position:absolute;inset:14px;border-radius:50%;border:1px dashed #473052}.wheel-dot{position:absolute;width:19px;height:19px;border-radius:50%;border:1px solid #ffffff60;box-shadow:0 2px 7px #0008;transform:translate(-50%,-50%);padding:0}.wheel-dot.selected{width:25px;height:25px;border:3px solid #fff1fb;box-shadow:0 0 0 3px #e95ac8,0 0 16px #fa7be4}.wheel-center{position:absolute;inset:27%;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center}.moon{font-size:31px;color:#dca4ff;text-shadow:0 0 15px #b85aff}.phase-name{font-size:11px;color:#e6c1f4;text-transform:uppercase;letter-spacing:1px}.daynum{font:31px Georgia,serif;margin:3px 0}.flowtag{font-size:11px;background:#21152c;border:1px solid #3c2949;padding:6px 10px;border-radius:20px}.phaselabels{display:flex;justify-content:space-around;gap:4px;margin:8px 0 0;font-size:9px;letter-spacing:.4px;text-transform:uppercase}.nextcards{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mini{border-radius:14px;padding:12px;background:#130e1c;border:1px solid #32233f;display:flex;gap:8px;align-items:center}.mini .emoji{font-size:24px}.mini strong{display:block;font-size:12px}.mini small{color:var(--muted);font-size:10px}
.dragonpreview{display:flex;align-items:center;gap:13px}.egg-art{font-size:62px;filter:drop-shadow(0 0 12px var(--egg,#d77aff));line-height:1}.egg-gem{display:inline-block;font-size:52px;filter:drop-shadow(0 0 10px var(--egg,#d77aff));background:linear-gradient(135deg,#fff,#e6b9ff 45%,#7a42ba);color:transparent;background-clip:text;-webkit-background-clip:text}.progress{height:9px;background:#2b1b37;border-radius:99px;overflow:hidden;margin-top:8px}.progress span{display:block;height:100%;background:linear-gradient(90deg,#d04dcb,#ff7dc8);border-radius:99px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.tile{border:1px solid #352641;border-radius:13px;background:#120d1b;padding:12px 8px;text-align:center;min-height:80px}.tile .tileicon{font-size:23px;display:block;margin-bottom:7px;color:#e49cff}.tile.active{border-color:#ed85f2;box-shadow:0 0 0 1px #d55ce5,0 0 16px #b03bcc35;background:#26142f}.bottomnav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,520px);padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:flex;justify-content:space-around;align-items:center;background:#0d0915ed;border-top:1px solid #382342;backdrop-filter:blur(18px)}.nav{background:transparent;border:0;color:#a38caf;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;min-width:48px}.nav span{font-size:22px}.nav.active{color:#f18ce9}.addnav{border:0;border-radius:50%;width:51px;height:51px;background:linear-gradient(145deg,#b65ad6,#e04cb6);font-size:31px;box-shadow:0 0 18px #c244c955}
.calendar-head{display:flex;align-items:center;justify-content:space-between}.monthgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}.dow{font-size:10px;color:#a991b5;padding:8px 0}.calday{min-height:43px;border:1px solid transparent;background:transparent;border-radius:9px;padding:5px 0 2px;font-size:12px;position:relative}.calday.other{color:#67596f}.calday.period{background:#9f285c;color:white}.calday.follicular{background:#713e9d}.calday.ovulation{background:#b37a22;color:#fff3d8}.calday.luteal{background:#45449a}.calday.predicted{outline:1px dashed #ff8abf}.calday.today{border-color:#fff0ff;box-shadow:0 0 0 1px #e989ee}.dotrow{font-size:8px;color:#e7a0ff;line-height:9px}
.formrow{margin:12px 0}.formrow label{display:block;margin-bottom:7px;color:#dfc9e9}.formrow input,.formrow select,.formrow textarea{width:100%;background:#0c0913;border:1px solid #342540;border-radius:11px;color:#fff;padding:11px}.formrow textarea{min-height:78px}.choice{border:1px solid #392746;background:#171020;color:#ead8f1;border-radius:20px;padding:8px 10px;margin:3px;font-size:12px}.choice.active{background:#9e3eab;border-color:#f08af0}.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:10px;color:#c9b6d5}.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
.modalback{position:fixed;inset:0;background:#000b;z-index:20;display:flex;align-items:flex-end;justify-content:center}.modalback.hidden{display:none}.modal{width:min(100%,520px);max-height:90dvh;overflow:auto;background:#100b19;border:1px solid #493050;border-radius:22px 22px 0 0;padding:20px 16px calc(24px + env(safe-area-inset-bottom))}.modal h2{margin-top:0}.row{display:flex;gap:8px;align-items:center}.row>*{flex:1}.eggchoice{border:1px solid #342540;background:#171020;border-radius:12px;padding:10px 4px;text-align:center}.eggchoice .egg-gem{font-size:32px}.eggchoice.active{border-color:#f18be9;box-shadow:0 0 0 1px #e67ae5}.bar{display:flex;gap:7px;flex-wrap:wrap}.bar button{flex:1}.empty{padding:24px 8px;text-align:center;color:#b9a6c5}.danger{color:#ff7b91}.listitem{padding:11px 0;border-bottom:1px solid #2d2138;display:flex;justify-content:space-between;gap:8px}.stat{background:#171020;border:1px solid #30213d;padding:12px;border-radius:12px}.stat b{font-size:20px;display:block}.settingsline{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #2c2035}

.egg-art-img{display:block;width:min(58%,190px);height:190px;object-fit:contain;margin:0 auto;filter:drop-shadow(0 0 13px var(--egg,#d77aff));}
.small-egg{width:72px;height:84px;margin:0 auto 5px;filter:drop-shadow(0 0 8px var(--egg,#d77aff));}
.eggchoice{min-height:122px}

.wheel-dot{cursor:pointer;touch-action:manipulation;transition:transform .15s ease,box-shadow .15s ease}
.wheel-dot:active{transform:translate(-50%,-50%) scale(1.18)}
.wheel-dot.fertile-dot{box-shadow:0 0 0 2px #9df6c7,0 0 12px #6df0bd;z-index:2}
.wheel-dot.selected{z-index:4;width:27px;height:27px;border:3px solid #fff;box-shadow:0 0 0 4px #f27ce6,0 0 20px #ff7ae9}
.calday{cursor:pointer;touch-action:manipulation}
.calday.today{border:2px solid #fff;box-shadow:0 0 0 2px #f27ce6,0 0 14px #f27ce6;background-image:radial-gradient(circle at center,#ffffff22,transparent 75%)}
.calday:active{transform:scale(.96)}

/* v8: selected date is distinct from today's marker */
.calday.selected { position:relative; outline:2px solid #f1d6ff !important; outline-offset:1px; box-shadow:0 0 0 3px rgba(194,117,255,.22),0 0 18px rgba(190,115,255,.38); background-image:linear-gradient(145deg,rgba(204,143,255,.28),rgba(111,61,160,.20)); color:#fff !important; z-index:1; }
.calday.today:not(.selected) { border:1px solid rgba(255,226,155,.85); }
.dragon-realm { position:relative; overflow:hidden; border:1px solid color-mix(in srgb,var(--realm-glow) 45%,transparent); min-height:330px; background:radial-gradient(ellipse at 50% 18%,color-mix(in srgb,var(--realm-glow) 34%,transparent),transparent 42%),radial-gradient(ellipse at 12% 88%,rgba(89,56,133,.38),transparent 42%),linear-gradient(160deg,#21112f,#0c0918 72%); }
.dragon-realm::before { content:"";position:absolute;inset:0;pointer-events:none;opacity:.48;background:radial-gradient(circle at 15% 22%,#fff 0 1px,transparent 2px),radial-gradient(circle at 78% 16%,#fff 0 1px,transparent 2px),radial-gradient(circle at 84% 66%,var(--realm-glow) 0 1px,transparent 3px),radial-gradient(circle at 22% 72%,var(--realm-glow) 0 1px,transparent 3px),radial-gradient(ellipse at 50% 100%,color-mix(in srgb,var(--realm-glow) 22%,transparent),transparent 54%); }
.dragon-realm > * { position:relative;z-index:1; }
.realm-name { font-family:Georgia,serif;font-size:1.25rem;color:#f0d9ff;letter-spacing:.04em;margin:8px 0 4px;text-shadow:0 0 16px var(--realm-glow); }
.realm-desc { max-width:34rem;margin:0 auto 14px;color:#d2c4df;font-size:.9rem; }
.realm-stars { color:#f3d8ff;letter-spacing:.25em;opacity:.8;margin-top:6px; }
.realm-forest { background:radial-gradient(ellipse at 50% 80%,#24553e,transparent 56%),radial-gradient(ellipse at 50% 10%,#243d48,transparent 45%),linear-gradient(#101d24,#0c1018 80%); }
.realm-moonstone { background:radial-gradient(ellipse at 50% 70%,#6385b8,transparent 45%),radial-gradient(ellipse at 50% 10%,#4b3d79,transparent 45%),linear-gradient(#11162d,#0c0918); }
.realm-amethyst { background:radial-gradient(ellipse at 50% 70%,#7946a7,transparent 48%),linear-gradient(155deg,#27133f,#0c0918 78%); }
.realm-aurora { background:radial-gradient(ellipse at 20% 20%,#237b79,transparent 38%),radial-gradient(ellipse at 70% 20%,#7043a5,transparent 42%),linear-gradient(#111a32,#0c0918); }
.realm-obsidian { background:radial-gradient(ellipse at 50% 75%,#66384c,transparent 48%),linear-gradient(#211322,#09070e 80%); }
.realm-ocean { background:radial-gradient(ellipse at 50% 75%,#1d7188,transparent 48%),linear-gradient(#13283c,#080c18 80%); }
.realm-rose { background:radial-gradient(ellipse at 50% 75%,#873e70,transparent 48%),linear-gradient(#2a142c,#0c0918 80%); }
.realm-sunrise { background:radial-gradient(ellipse at 50% 75%,#9d6a37,transparent 48%),linear-gradient(#34203a,#100a18 80%); }

.dragon-name-field { max-width:26rem; margin:12px auto 10px; padding:12px; border:1px solid rgba(220,184,255,.22); border-radius:14px; background:rgba(9,6,20,.35); text-align:left; }
.dragon-name-field label { display:block; color:#ead6ff; font-size:.85rem; margin-bottom:7px; }
.name-row { display:flex; gap:8px; align-items:center; }
.name-row input { min-width:0; flex:1; }
.dragon-name-field small { display:block; margin-top:7px; color:#bba9cc; font-size:.75rem; }

/* Earthbloom final pet: still artwork, with growth represented by size and stage changes only. */
.earthbloom-realm{position:relative;overflow:hidden;isolation:isolate;background-image:linear-gradient(180deg,rgba(5,18,12,.42),rgba(5,15,10,.78)),var(--realm-bg);background-size:cover;background-position:center;border-color:#678c61!important}
.earthbloom-realm .realm-name,.earthbloom-realm .realm-desc,.earthbloom-realm .dragon-name-field,.earthbloom-realm .progress,.earthbloom-realm .tiny,.earthbloom-realm h2,.earthbloom-realm p{position:relative;z-index:1;text-shadow:0 1px 5px #07140d}
.earthbloom-realm .realm-name{font-family:Georgia,serif;font-size:clamp(24px,5vw,34px);color:#f3e9bd}
.earthbloom-pet-art{display:block;object-fit:contain;margin:0 auto;max-height:310px;max-width:100%;filter:drop-shadow(0 7px 12px #020a0666)}
.earthbloom-pet-art.egg-stage-art{height:auto;transition:none}
.earthbloom-pet-art.dragon-stage-art{width:min(88%,420px);height:auto}
.earthbloom-realm .dragon-name-field{max-width:460px;margin:20px auto;padding:14px;background:#06150dcc;border:1px solid #6b8c5e;border-radius:18px}
.earthbloom-realm .dragon-name-field input{min-width:0}
