/* LWVlife App - My Diary & Health Records (GitHub #72, 2026-10-25). Independent module: own prefix dy-, own overlay #dy-page.
   Same senior visual language as the app (ivory #F7F4EC / navy #172B4D / teal #116466), but no dependency on lounge.css or Fun Club.
   1rem = app --fs (19 px, A-/A+). Controls >= 48 px; primary voice action 64 px. Reduced motion honored. 320 px reflow. */
:root{--dy-bg:#F7F4EC;--dy-ink:#172B4D;--dy-ink2:#44546B;--dy-teal:#116466;--dy-teal-d:#0C4C4E;--dy-teal-s:#E3F0EE;--dy-amber:#FFE2A8;--dy-amber-d:#8A5A00;
  --dy-coral:#B8432F;--dy-coral-s:#FBE7E3;--dy-plum:#5B3A7E;--dy-plum-s:#EFE8F6;--dy-line:#D9D3C4;--dy-card:#fff;--dy-shadow:0 2px 10px rgba(23,43,77,.08);--dy-focus:#FFB600}
@media (prefers-reduced-motion:reduce){.dy-page *{transition:none!important;animation:none!important}}
.dy-page{position:fixed;inset:0;z-index:2350;background:var(--dy-bg);color:var(--dy-ink);overflow-y:auto;-webkit-overflow-scrolling:touch;font-size:1rem;line-height:1.4;word-break:keep-all;overflow-wrap:anywhere}
.dy-page[hidden]{display:none}
body.dy-open{overflow:hidden}
.dy-page button,.dy-page input,.dy-page textarea,.dy-page select,.dy-page a{font:inherit;color:inherit}
.dy-page :focus-visible{outline:4px solid var(--dy-focus);outline-offset:2px;position:relative;z-index:3}
.dy-top{position:sticky;top:0;z-index:4;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:8px 10px;background:var(--dy-plum);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.dy-top h2{margin:0;font-size:1.02rem;text-align:center;outline:none;line-height:1.15}
.dy-top .dy-b{min-height:48px;background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5);color:#fff;padding:4px 12px}
.dy-tag{display:inline-block;font-size:.8rem;font-weight:900;letter-spacing:.03em;padding:2px 8px;border-radius:6px;background:#B8432F;color:#fff;vertical-align:middle}
.dy-tag.soft{background:var(--dy-teal-s);color:var(--dy-teal-d);font-weight:800;letter-spacing:0}
.dy-tag.warn{background:var(--dy-amber);color:var(--dy-amber-d);letter-spacing:0;font-weight:800}
.dy-tag.cat{background:var(--dy-plum-s);color:var(--dy-plum);letter-spacing:0;font-weight:800;margin:2px 4px 2px 0}
.dy-body{max-width:640px;margin:0 auto;padding:12px 12px 150px}
@media (min-width:700px){.dy-body{max-width:760px;padding-left:20px;padding-right:20px}}
.dy-b{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:50px;padding:6px 16px;border-radius:14px;border:2px solid var(--dy-teal);background:var(--dy-card);color:var(--dy-teal-d);font-weight:800;cursor:pointer;text-align:center;text-decoration:none;transition:background .15s,transform .1s}
.dy-b:active{transform:scale(.98)}
.dy-b.pri{background:var(--dy-teal);border-color:var(--dy-teal);color:#fff}
.dy-b.plum{background:var(--dy-plum);border-color:var(--dy-plum);color:#fff}
.dy-b.amber{background:var(--dy-amber);border-color:var(--dy-amber);color:var(--dy-amber-d)}
.dy-b.coral{background:var(--dy-coral-s);border-color:var(--dy-coral);color:var(--dy-coral)}
.dy-b.ghost{border-color:var(--dy-line);color:var(--dy-ink2);background:transparent}
.dy-b.wide{display:flex;width:100%}
.dy-b[disabled],.dy-b[aria-disabled="true"]{opacity:.55;cursor:default}
.dy-b .ic{font-size:1.25em;line-height:1}
.dy-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.dy-acts .dy-b{flex:1 1 auto;min-width:110px}
.dy-card{background:var(--dy-card);border:1px solid var(--dy-line);border-radius:18px;padding:14px;margin:0 0 12px;box-shadow:var(--dy-shadow)}
.dy-card h3{margin:0 0 4px;font-size:1.12rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dy-sub{margin:0 0 10px;color:var(--dy-ink2);font-weight:600;font-size:.95rem}
.dy-note{margin:8px 0 0;color:var(--dy-ink2);font-size:.9rem}
.dy-ai{display:flex;gap:10px;align-items:center;padding:8px 12px;border-radius:14px;background:var(--dy-teal-s);color:var(--dy-teal-d);font-weight:700;font-size:.92rem;margin:0 0 12px}
.dy-toast{position:fixed;left:50%;bottom:calc(var(--nav-h,76px) + 24px);transform:translateX(-50%);z-index:2600;max-width:92%;padding:12px 18px;border-radius:14px;background:var(--dy-ink);color:#fff;font-weight:800;box-shadow:0 6px 20px rgba(0,0,0,.3);text-align:center}
.dy-chip{display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:4px 14px;border-radius:999px;border:2px solid var(--dy-line);background:var(--dy-card);font-weight:800;cursor:pointer;white-space:nowrap;max-width:100%}
.dy-chip.wrap{white-space:normal;text-align:left;border-radius:16px}
.dy-chip[aria-pressed="true"],.dy-chip[aria-selected="true"]{background:var(--dy-plum);border-color:var(--dy-plum);color:#fff}
.dy-chips{display:flex;flex-wrap:wrap;gap:8px}
.dy-field{display:block;margin:0 0 12px}
.dy-field span{display:block;font-weight:800;margin-bottom:4px}
.dy-field input,.dy-field select,.dy-field textarea{width:100%;min-width:0;min-height:52px;padding:8px 12px;border-radius:12px;border:2px solid var(--dy-line);background:var(--dy-card);color:var(--dy-ink);font-size:1.02rem}
.dy-field textarea{min-height:120px;resize:vertical;line-height:1.45}

/* Home entry button on the app Home */
.dy-homebtn{display:flex;align-items:center;gap:12px;width:calc(100% - 24px);margin:10px 12px 0;padding:10px 14px;min-height:64px;border-radius:18px;border:2px solid #CDBDE3;background:linear-gradient(90deg,#F4EEFA,#FFFFFF);color:var(--dy-ink);text-align:left;cursor:pointer;box-shadow:var(--dy-shadow)}
.dy-homebtn .ic{font-size:2rem;line-height:1;flex:none}
.dy-homebtn b{display:block;font-size:1.1rem;line-height:1.2}
.dy-homebtn small{display:block;color:var(--dy-ink2);font-weight:600;font-size:.9rem}
.dy-homebtn .chev{margin-left:auto;font-size:1.8rem;color:var(--dy-plum)}
.dy-homebtn:focus-visible{outline:4px solid var(--dy-focus);outline-offset:2px}

/* bottom nav inside the diary */
.dy-nav{position:sticky;bottom:0;z-index:4;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:var(--dy-card);border-top:2px solid var(--dy-line)}
.dy-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;border-radius:12px;border:0;background:none;font-weight:800;font-size:.9rem;color:var(--dy-ink2);cursor:pointer}
.dy-nav button .ic{font-size:1.5rem;line-height:1}
.dy-nav button[aria-current="page"]{background:var(--dy-plum-s);color:var(--dy-plum)}

/* Diary home */
.dy-speak{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:72px;margin:4px 0 10px;border-radius:22px;border:0;background:var(--dy-plum);color:#fff;font-size:1.25rem;font-weight:900;cursor:pointer;box-shadow:0 4px 14px rgba(91,58,126,.35)}
.dy-speak .mic{width:48px;height:48px;border-radius:50%;background:#fff;color:var(--dy-plum);display:inline-flex;align-items:center;justify-content:center;font-size:1.6rem;flex:none}
.dy-quick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.dy-quick .dy-b{flex-direction:column;gap:2px;min-height:64px;padding:6px 4px;min-width:0;white-space:nowrap;font-size:.95rem}
.dy-quick .dy-b .ic{font-size:1.5rem}
.dy-day{margin:14px 0 6px;display:flex;align-items:center;gap:8px}
.dy-day b{font-size:1.05rem}
.dy-day .dy-b{margin-left:auto;min-height:44px;padding:4px 12px;font-size:.92rem}
.dy-entry{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;width:100%;text-align:left;padding:12px 14px;margin:0 0 10px;border-radius:18px;border:1px solid var(--dy-line);background:var(--dy-card);box-shadow:var(--dy-shadow);cursor:pointer;color:var(--dy-ink)}
.dy-entry .when{grid-row:span 3;font-weight:900;color:var(--dy-plum);font-size:1rem;min-width:3.2em;line-height:1.15}
.dy-entry .when small{font-size:.8rem;font-weight:800;color:var(--dy-ink2)}
.dy-entry b{display:block;font-size:1.08rem;line-height:1.2}
.dy-entry .tx{color:var(--dy-ink2);font-weight:600;font-size:.95rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dy-entry .tags{margin-top:2px}
.dy-empty{padding:14px;border-radius:14px;background:var(--dy-card);border:2px dashed var(--dy-line);text-align:center;font-weight:700;color:var(--dy-ink2)}

/* voice states */
.dy-state{text-align:center;padding:18px 12px;border-radius:20px;background:var(--dy-card);border:2px solid var(--dy-line);margin-bottom:12px}
.dy-state .ring{width:110px;height:110px;margin:0 auto 10px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:3rem;background:var(--dy-plum-s);color:var(--dy-plum);border:4px solid var(--dy-plum)}
.dy-state.listening .ring{animation:dyPulse 1.2s ease-in-out infinite;border-color:#B8432F;color:#B8432F;background:#FBE7E3}
@keyframes dyPulse{0%,100%{box-shadow:0 0 0 0 rgba(184,67,47,.35)}50%{box-shadow:0 0 0 16px rgba(184,67,47,0)}}
.dy-state .st{display:block;font-weight:900;font-size:1.15rem;margin-bottom:4px}
.dy-state .interim{min-height:2.4em;color:var(--dy-ink2);font-weight:600}
.dy-state.err .ring{border-color:var(--dy-amber-d);background:var(--dy-amber);color:var(--dy-amber-d)}
.dy-state.saved .ring{border-color:var(--dy-teal);background:var(--dy-teal-s);color:var(--dy-teal-d)}
.dy-prompt{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:16px;background:var(--dy-plum-s);margin-bottom:10px}
.dy-prompt .face{width:44px;height:44px;border-radius:50%;background:url(aimee2w-awake.jpg?v=20261027w4) center/cover;flex:none;border:2px solid #fff}
.dy-prompt .q{flex:1 1 auto;font-weight:800}
.dy-review{border:2px solid var(--dy-amber-d);background:#FFF8E6;border-radius:16px;padding:12px;margin:10px 0}
.dy-review h4{margin:0 0 6px;font-size:1rem;color:var(--dy-amber-d)}
.dy-review .dy-chips .dy-chip{background:#fff;border-color:var(--dy-amber-d);color:var(--dy-amber-d);min-height:44px}
.dy-orig{font-size:.92rem;color:var(--dy-ink2);border-left:4px solid var(--dy-line);padding:6px 10px;margin:8px 0}

/* find */
.dy-search{display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:10px}
.dy-search input{min-width:0;width:100%;min-height:56px;padding:8px 12px;border-radius:14px;border:2px solid var(--dy-line);background:var(--dy-card);font-size:1.05rem}
.dy-search .dy-b{min-width:56px;padding:4px 10px}
.dy-result{width:100%;text-align:left;padding:12px 14px;margin:0 0 10px;border-radius:16px;border:1px solid var(--dy-line);background:var(--dy-card);cursor:pointer;color:var(--dy-ink)}
.dy-result b{display:block}
.dy-result .d{color:var(--dy-plum);font-weight:900;font-size:.95rem}
.dy-result .ex{color:var(--dy-ink2);font-weight:600;font-size:.95rem}
.dy-result mark{background:var(--dy-amber);color:var(--dy-ink);border-radius:4px;padding:0 2px}

/* doctor brief */
.dy-cov{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-weight:600;color:var(--dy-ink2)}
.dy-cov b{color:var(--dy-ink)}
.dy-src{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 0;border-top:1px solid var(--dy-line)}
.dy-src input{width:28px;height:28px;flex:none;accent-color:var(--dy-teal)}
.dy-src label{flex:1 1 auto;cursor:pointer}
.dy-src small{display:block;color:var(--dy-ink2);font-weight:600}
.dy-brief{background:#fff;border:2px solid var(--dy-ink);border-radius:8px;padding:16px;margin:12px 0;font-size:.95rem;line-height:1.45}
.dy-brief h3{margin:0 0 2px;font-size:1.15rem;display:block}
.dy-brief h4{margin:12px 0 4px;font-size:1rem;border-bottom:2px solid var(--dy-line);padding-bottom:2px}
.dy-brief ul{margin:0;padding-left:1.2em}
.dy-brief li{margin:3px 0}
.dy-brief .ref{color:var(--dy-plum);font-weight:800;font-size:.85rem;white-space:nowrap}
.dy-brief .meta{color:var(--dy-ink2);font-weight:600;font-size:.88rem}
.dy-brief.appx{border-style:dashed}

/* share review */
.dy-kv{display:grid;grid-template-columns:1fr;gap:2px 12px;font-weight:600;color:var(--dy-ink2);margin-bottom:8px}
.dy-kv b{margin-bottom:6px}
@media (min-width:480px){.dy-kv{grid-template-columns:auto 1fr;gap:6px 12px}.dy-kv b{margin-bottom:0}}
.dy-kv b{color:var(--dy-ink)}
.dy-readbox{background:var(--dy-card);border:2px solid var(--dy-line);border-radius:16px;padding:12px;font-size:1.02rem;line-height:1.55}
.dy-readbox .s{display:block;padding:2px 4px;border-radius:4px;transition:background .15s}
.dy-readbox .s.hd{font-weight:900;margin-top:6px;color:var(--dy-plum)}
.dy-readbox .s.on{background:var(--dy-amber);color:var(--dy-ink)}
.dy-log{background:#0F1B2D;color:#DCE5F2;border-radius:12px;padding:10px 12px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;max-width:100%;margin:8px 0 0}
.dy-status{display:flex;align-items:center;gap:8px;font-weight:800;margin:8px 0}
.dy-status .dot{width:14px;height:14px;border-radius:50%;background:var(--dy-amber-d);flex:none}
.dy-status.ok .dot{background:var(--dy-teal)}.dy-status.no .dot{background:var(--dy-coral)}

/* privacy */
.dy-flow{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:start;padding:10px 0;border-top:1px solid var(--dy-line)}
.dy-flow:first-of-type{border-top:0}
.dy-flow .ic{font-size:1.6rem;width:1.6em;text-align:center}
.dy-flow b{display:block}
.dy-flow small{display:block;color:var(--dy-ink2);font-weight:600;font-size:.92rem}
.dy-switch{display:flex;align-items:center;gap:12px;min-height:56px;width:100%;padding:6px 10px;border-radius:14px;border:2px solid var(--dy-line);background:var(--dy-card);text-align:left;cursor:pointer}
.dy-switch .t{flex:1 1 auto}.dy-switch .t b{display:block}.dy-switch .t small{display:block;color:var(--dy-ink2);font-weight:600;font-size:.9rem}
.dy-switch .kn{flex:none;width:58px;height:32px;border-radius:999px;background:#C9C3B4;position:relative;transition:background .15s}
.dy-switch .kn::after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:left .15s}
.dy-switch[aria-checked="true"] .kn{background:var(--dy-teal)}.dy-switch[aria-checked="true"] .kn::after{left:29px}
.dy-lock{text-align:center;padding:30px 16px}
.dy-lock .big{font-size:4rem;line-height:1}
.dy-pin{display:flex;gap:8px;justify-content:center;margin:12px 0}
.dy-pin input{width:9em;max-width:60%;min-width:0;min-height:56px;text-align:center;font-size:1.4rem;letter-spacing:.3em;border-radius:14px;border:2px solid var(--dy-line)}

/* dialog */
.dy-dlg{position:fixed;inset:0;z-index:2550;background:rgba(10,20,40,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.dy-dbox{width:100%;max-width:480px;max-height:92vh;overflow:auto;background:var(--dy-card);color:var(--dy-ink);border-radius:20px;padding:18px;box-shadow:0 12px 40px rgba(0,0,0,.35)}
.dy-dbox h2{margin:0 0 8px;font-size:1.2rem}
.dy-dacts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.dy-dacts .dy-b{flex:1 1 auto}

@media (max-width:359px){.dy-quick{grid-template-columns:1fr}.dy-quick .dy-b{flex-direction:row;justify-content:flex-start;min-height:52px}.dy-entry{grid-template-columns:1fr}.dy-entry .when{grid-row:auto}.dy-search{grid-template-columns:1fr}.dy-nav button{font-size:.8rem}}
@media print{body>*:not(#dy-page){display:none!important}.dy-page{position:static;overflow:visible;background:#fff}.dy-top,.dy-nav,.dy-acts,.dy-ai,.dy-noprint{display:none!important}.dy-body{max-width:none;padding:0}.dy-brief{border-color:#000;page-break-after:always}}
/* real-time voice text (Karl 2026-10-25 11:07 PT) */
.dy-state .dy-live{display:block;width:100%;box-sizing:border-box;min-height:5.5em;max-height:12em;overflow:auto;margin-top:10px;padding:12px 14px;border-radius:14px;background:#fff;border:2px solid #d8c8ea;text-align:left;font-size:1.08rem;line-height:1.5;font-weight:600;color:var(--dy-ink,#1f2937)}
.dy-live .dy-int{color:#7a6a93;font-weight:500;text-decoration:underline dotted #b9a6d6}
.dy-live .dy-ph{color:#7a6a93;font-weight:500}
/* ---- real diary (GitHub #89, 2026-10-25): sign-in, banners, calendar, memory book, privacy ---- */
.dy-nav button{min-width:0}
.dy-keep h3{color:var(--dy-plum)}
.dy-check{display:flex;align-items:flex-start;gap:10px;margin:10px 0;font-size:.95rem;line-height:1.35}
.dy-check input{width:28px;height:28px;flex:none;margin:0;accent-color:var(--dy-plum)}
.dy-check a{color:var(--dy-plum);font-weight:700;text-decoration:underline}
.dy-err{color:var(--dy-coral)!important;font-weight:800}
.dy-samplebar,.dy-ai:has(> [data-dy-flush]){display:flex;flex-wrap:wrap;align-items:center;gap:8px;justify-content:space-between}
.dy-draftbar{border:2px solid var(--dy-amber-d);background:#FFF8E8}
.dy-calhead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.dy-calhead .dy-b{min-width:52px;font-size:1.4rem}
.dy-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.dy-cal .wd{font-weight:800;color:var(--dy-ink2);font-size:.85rem;padding:4px 0}
.dy-calday{position:relative;min-height:48px;border-radius:10px;background:#F2EFE6;border:2px solid transparent;font-weight:700;color:var(--dy-ink2)}
.dy-calday.has{background:var(--dy-plum-s);color:var(--dy-plum);border-color:#CDB8E3;cursor:pointer}
.dy-calday.today{border-color:var(--dy-teal)}
.dy-calday i{position:absolute;right:4px;bottom:2px;font-style:normal;font-size:.7rem;background:var(--dy-plum);color:#fff;border-radius:8px;padding:0 5px}
.dy-calday:disabled{opacity:.75;cursor:default}
.dy-book{background:#fff;border:1px solid var(--dy-line);border-radius:16px;padding:16px 16px 10px;box-shadow:var(--dy-shadow)}
.dy-book h3{margin:0 0 4px;color:var(--dy-plum)}
.dy-chap{margin:16px 0 6px;padding-bottom:4px;border-bottom:2px solid var(--dy-plum-s);color:var(--dy-ink)}
.dy-words{margin:6px 0 10px;padding:10px 12px;border-left:5px solid var(--dy-teal);background:var(--dy-teal-s);border-radius:0 12px 12px 0;font-size:1.05rem;line-height:1.5;white-space:pre-wrap}
.dy-words small{color:var(--dy-ink2);font-weight:700}
.dy-narr{margin:6px 0;font-style:italic;color:#3f2c58}
.dy-aicard{border:2px dashed #CDB8E3;background:#FBF8FE}
.dy-prot{margin:4px 0 0;padding-left:1.2em;line-height:1.45}.dy-prot li{margin:4px 0}
.dy-danger{border:2px solid var(--dy-coral-s)}
.dy-acts a.dy-b{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
@media print{.dy-book{border:0;box-shadow:none;padding:0}.dy-words{break-inside:avoid}}
.dy-nav button{padding:2px 0;font-size:.82rem;overflow-wrap:anywhere;line-height:1.1}
@media (max-width:359px){.dy-nav button{font-size:.74rem}.dy-nav button .ic{font-size:1.3rem}}
