.hourly-wish-invite{position:fixed;z-index:12;left:50%;bottom:calc(178px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:14px;width:min(550px,calc(100vw - 32px));box-sizing:border-box;padding:15px 48px 15px 18px;border:1px solid #e9c58e40;border-radius:20px;background:linear-gradient(120deg,#182435ed,#101b2ae8);box-shadow:0 8px 28px #0003;color:#f4e7d2;pointer-events:auto}
.hourly-wish-star{flex-shrink:0;font-size:32px;line-height:1;color:#ffda9e;text-shadow:0 0 14px #ffc77e55}
.hourly-wish-copy{flex:1;min-width:0}.hourly-wish-eyebrow{margin:0 0 5px;color:#bcc4c7;font-family:inherit;font-size:10px;line-height:1.5;letter-spacing:.05em}.hourly-wish-announcement{margin:0;font-size:13px;line-height:1.6;word-break:keep-all;overflow-wrap:break-word}
.hourly-wish-open{flex-shrink:0;min-height:44px;padding:9px 14px;border:1px solid #e7c68b66;border-radius:13px;background:#e8c58a18;color:#f8dfb2;font-family:inherit;font-size:12px;line-height:1.5;cursor:pointer}.hourly-wish-open:hover{background:#e8c58a2b}.hourly-wish-open:disabled{opacity:.45;cursor:default}
.hourly-wish-dismiss,.hourly-wish-close{position:absolute;right:2px;top:2px;display:grid;place-items:center;width:44px;height:44px;min-width:44px;padding:0;border:0;border-radius:50%;background:none;color:#c8d0d1;font-size:22px;cursor:pointer}.hourly-wish-dismiss:hover,.hourly-wish-close:hover{background:#ffffff0b}
/* The visible viewport, rather than the canvas, bounds this bottom card. */
.hourly-wish-dialog{--wish-edge:max(16px,env(safe-area-inset-bottom));position:fixed;inset:auto 20px calc(var(--wish-keyboard-inset,0px) + var(--wish-edge)) auto;margin:0;width:min(340px,calc(100vw - 24px));max-height:min(296px,calc(var(--wish-sheet-limit,60vh) - var(--wish-edge)));max-height:min(296px,calc(var(--wish-sheet-limit,60dvh) - var(--wish-edge)));box-sizing:border-box;overflow:hidden;padding:14px 16px;border:1px solid #d9c69c3d;border-radius:19px;background:linear-gradient(145deg,#162536ed,#0d1929ed);color:#edf0e5;box-shadow:0 8px 28px #0003;backdrop-filter:none;-webkit-backdrop-filter:none}
.hourly-wish-dialog[open]{display:flex;flex-direction:column}.hourly-wish-dialog::backdrop{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.hourly-wish-dialog>.hourly-wish-eyebrow{display:none}.hourly-wish-dialog h2{flex-shrink:0;margin:0 32px 10px 0;font-size:17px;font-weight:500;line-height:1.4;letter-spacing:-.03em}
.hourly-wish-form{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.hourly-wish-fields{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"input input" "privacy count" "error error";align-content:start;gap:5px 9px;min-height:44px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.hourly-wish-form label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.hourly-wish-form textarea{grid-area:input;display:block;box-sizing:border-box;width:100%;height:72px;min-height:64px;resize:none;padding:9px 11px;border:1px solid #b6ced345;border-radius:12px;background:#071321a6;color:#f2f3e9;font-family:inherit;font-size:15px;line-height:1.55;outline:none;user-select:text;-webkit-user-select:text}.hourly-wish-form textarea::placeholder{color:#9bafb9;font-size:13px}.hourly-wish-form textarea:focus{border-color:#e3c68c99;box-shadow:inset 0 0 0 1px #e3c68c22}
.hourly-wish-count{grid-area:count;align-self:start;color:#b1c0c8;font-size:10px;line-height:1.5;white-space:nowrap}.hourly-wish-privacy{grid-area:privacy;margin:0;color:#b0c1c9;font-size:10px;line-height:1.5;word-break:keep-all;overflow-wrap:break-word}.hourly-wish-error{grid-area:error;font-size:11px;line-height:1.5;color:#f2c49d;margin:0}
.hourly-wish-footer{flex:0 0 auto;padding-top:8px}.hourly-wish-submit,.hourly-wish-back{min-height:44px;box-sizing:border-box;width:100%;padding:9px 12px;border:1px solid #efd39955;border-radius:12px;background:#e8c58a1b;color:#f8e0b3;font-family:inherit;font-size:12px;line-height:1.5;cursor:pointer}.hourly-wish-submit:hover,.hourly-wish-back:hover{background:#e8c58a2c}.hourly-wish-submit:disabled{opacity:.4;cursor:default}.hourly-wish-dialog button:focus-visible,.hourly-wish-invite button:focus-visible{outline:2px solid #efdaac;outline-offset:2px}
.hourly-wish-confirmation{position:fixed;z-index:14;top:calc(94px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;box-sizing:border-box;width:max-content;max-width:calc(100vw - 32px);padding:8px 10px 8px 16px;border:1px solid #c6d8ca24;border-radius:24px;background:#10212be8;box-shadow:0 4px 20px #0002;backdrop-filter:blur(12px);color:#dce6dd;font:12px/1.5 system-ui;transition:opacity .3s ease;pointer-events:auto}.hourly-wish-confirmation[hidden]{display:none!important}.hourly-wish-confirmation .hourly-wish-message{min-width:0;margin:0;color:inherit;font:inherit;line-height:1.6;word-break:keep-all;overflow-wrap:break-word}.hourly-wish-confirmation-close{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-width:44px;min-height:44px;margin:0;padding:8px;border:0;border-radius:24px;background:transparent;color:#e5edda;font:18px/1 system-ui;cursor:pointer}.hourly-wish-confirmation-close:focus-visible{outline:2px solid #dce6dd;outline-offset:1px}
/* The modal already makes these controls inert; leave the sky and traveler clear. */
.making-wish .topbar,.making-wish .bottom-area,.making-wish .celestial-entry,.making-wish .context-actions{opacity:0;visibility:hidden;pointer-events:none}
.hourly-wish-dialog[data-wish-compact="true"]{padding:11px 13px}.hourly-wish-dialog[data-wish-compact="true"] h2{margin-bottom:8px;font-size:16px}.hourly-wish-dialog[data-wish-compact="true"] textarea{height:64px;min-height:56px}
.hourly-wish-dialog[data-wish-short="true"]{padding:4px 8px}.hourly-wish-dialog[data-wish-short="true"] h2{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%)}.hourly-wish-dialog[data-wish-short="true"] .hourly-wish-close{top:auto;bottom:2px;right:2px}.hourly-wish-dialog[data-wish-short="true"] .hourly-wish-footer{padding-top:4px;padding-right:42px}.hourly-wish-dialog[data-wish-short="true"] textarea{height:52px;min-height:44px;padding:7px 9px}.hourly-wish-dialog[data-wish-short="true"] .hourly-wish-complete{padding:4px 40px 0 20px}.hourly-wish-dialog[data-wish-short="true"] .hourly-wish-message{font-size:16px;margin-bottom:6px}
/* Landscape keyboards can leave too little height for two stacked controls. */
.hourly-wish-dialog[data-wish-short="true"][data-wish-tiny="true"]{padding:4px 52px 4px 8px}.hourly-wish-dialog[data-wish-tiny="true"] .hourly-wish-form{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:8px;align-items:start}.hourly-wish-dialog[data-wish-tiny="true"] .hourly-wish-fields{display:block;min-height:0;max-height:44px}.hourly-wish-dialog[data-wish-tiny="true"] textarea{height:44px}.hourly-wish-dialog[data-wish-tiny="true"] .hourly-wish-footer{padding:0}.hourly-wish-dialog[data-wish-tiny="true"] .hourly-wish-submit{padding:4px 6px;font-size:11px;line-height:1.4}
@media(max-width:680px){.hourly-wish-invite{gap:9px;padding:13px 42px 13px 14px;bottom:calc(174px + env(safe-area-inset-bottom));border-radius:18px;flex-wrap:wrap}.hourly-wish-star{font-size:27px}.hourly-wish-copy{flex-basis:calc(100% - 40px)}.hourly-wish-announcement{font-size:12px}.hourly-wish-invite .hourly-wish-eyebrow{font-size:10px;margin-bottom:4px}.hourly-wish-open{margin-left:36px;padding:8px 15px}.hourly-wish-dialog{--wish-edge:max(8px,env(safe-area-inset-bottom));left:12px;right:12px;bottom:calc(var(--wish-keyboard-inset,0px) + var(--wish-edge));width:calc(100vw - 24px);max-width:380px;margin-left:auto;padding:13px 15px;border-radius:18px}.hourly-wish-form textarea{font-size:16px}.hourly-wish-message{font-size:19px}}
@media(max-height:550px){.hourly-wish-invite{bottom:12px;max-width:calc(100vw - 160px)}.hourly-wish-dialog{--wish-edge:max(8px,env(safe-area-inset-bottom));right:12px}}
@media(prefers-reduced-motion:reduce){.hourly-wish-invite,.hourly-wish-dialog,.hourly-wish-fields{scroll-behavior:auto}.hourly-wish-confirmation{transition:none}}
