.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--sat: env(safe-area-inset-top, 0px);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--purple: #667eea;--purple-dark: #764ba2;--green: #10b981;--green-dark: #059669;--red: #ef4444;--amber: #f59e0b;--r-sm: .625rem;--r-md: 1rem;--r-lg: 1.5rem;--r-xl: 2rem;--sh-sm: 0 2px 8px rgba(0,0,0,.1);--sh-md: 0 8px 24px rgba(0,0,0,.14);--sh-lg: 0 16px 48px rgba(0,0,0,.18);--t: .18s cubic-bezier(.4, 0, .2, 1)}html{font-size:16px;background:#1e1b4b;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}body{font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh;overscroll-behavior:none}@media(min-width:768px){html{font-size:17px}}@media(min-width:1024px){html{font-size:18px}}#ptrWrap{position:fixed;top:0;left:0;right:0;z-index:9996;display:flex;justify-content:center;padding-top:calc(env(safe-area-inset-top) + 12px);pointer-events:none;will-change:transform}#ptrBubble{width:46px;height:46px;border-radius:50%;background:#fff3;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1.5px solid rgba(255,255,255,.35);box-shadow:0 6px 20px #0000004d;display:flex;align-items:center;justify-content:center;color:#fff;transition:background .2s ease,border-color .2s ease,transform .2s ease}#ptrBubble.ptr-ready{background:#fff;border-color:#fff;color:#1e1b4b;transform:scale(1.15);box-shadow:0 8px 28px #00000059}@keyframes ptrSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#ptrSpinner{animation:ptrSpin .7s linear infinite}.site-footer{position:fixed;bottom:.6rem;left:1rem;z-index:9990;font-size:.68rem;font-weight:500;color:#ffffff59;letter-spacing:.02em;pointer-events:none;user-select:none;white-space:nowrap}.site-footer a{color:#ffffff80;text-decoration:none;pointer-events:auto;transition:color var(--t)}.site-footer a:hover{color:#ffffffd9}.fab-stack{position:fixed;bottom:1.25rem;right:1.25rem;z-index:9999;display:flex;flex-direction:column;align-items:center;gap:0}.fab-trigger{width:36px;height:36px;border-radius:50%;border:none;background:#ffffff2e;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#ffffff8c;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #0003;transition:background .2s ease,color .2s ease,transform .2s ease,opacity .2s ease;flex-shrink:0;position:relative;z-index:1}.fab-trigger:hover,.fab-stack.open .fab-trigger{background:#ffffff52;color:#fff}.fab-trigger:active{transform:scale(.92)}.fab-trigger svg{width:16px;height:16px;pointer-events:none;transition:opacity .18s ease,transform .18s ease}.fab-trigger-close{position:absolute;opacity:0;transform:rotate(-90deg) scale(.7)}.fab-stack.open .fab-trigger-open{opacity:0;transform:rotate(90deg) scale(.7)}.fab-stack.open .fab-trigger-close{opacity:1;transform:rotate(0) scale(1)}.fab-items{display:flex;flex-direction:column-reverse;align-items:center;gap:.5rem;margin-bottom:.5rem;pointer-events:none}.fab-btn{width:44px;height:44px;border-radius:50%;border:none;background:#ffffff38;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px #00000040;flex-shrink:0;text-decoration:none}.fab-item{opacity:0;transform:translateY(12px) scale(.8);transition:opacity .22s ease calc(var(--i, 0) * 40ms),transform .22s cubic-bezier(.34,1.56,.64,1) calc(var(--i, 0) * 40ms),background .15s ease;pointer-events:none}.fab-stack.open .fab-items{pointer-events:auto}.fab-stack.open .fab-item{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.fab-btn:hover{background:#ffffff61;transform:scale(1.12)!important}.fab-btn:active{transform:scale(.96)!important}.fab-btn svg{width:18px;height:18px;pointer-events:none}.fab-backdrop{display:none;position:fixed;inset:0;z-index:9997;background:#00000073;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.fab-backdrop.open{display:block}.fab-modal{position:fixed;z-index:9998;bottom:0;left:0;right:0;background:#fff;border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--sh-lg);transform:translateY(110%);transition:transform .32s cubic-bezier(.4,0,.2,1);max-height:85dvh;display:flex;flex-direction:column;overflow:hidden;pointer-events:none}.fab-modal.open{pointer-events:auto}.fab-modal.open{transform:translateY(0)}@media(min-width:600px){.fab-modal{inset:50% auto auto 50%;width:min(480px,94vw);border-radius:var(--r-xl);transform:translate(-50%,-44%) scale(.96);opacity:0;transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .28s ease}.fab-modal.open{transform:translate(-50%,-50%) scale(1);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid rgba(0,0,0,.07);flex-shrink:0}.modal-header h2{font-size:1.2rem;font-weight:800;color:#1e1b4b;letter-spacing:-.02em}.modal-close{width:32px;height:32px;border-radius:50%;border:none;background:#f3f4f6;color:#6b7280;font-size:.85rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--t),color var(--t);flex-shrink:0}.modal-close:hover{background:#e5e7eb;color:#374151}.modal-body{padding:1.25rem 1.5rem 1.75rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.mode-item{display:flex;align-items:flex-start;gap:1rem;padding:.85rem 1rem;background:#f9fafb;border-radius:var(--r-md);border:1px solid #f3f4f6}.mode-emoji{font-size:1.5rem;line-height:1;flex-shrink:0;margin-top:.1rem}.mode-item strong{display:block;font-size:.95rem;font-weight:800;color:#1e1b4b;margin-bottom:.2rem}.mode-item p{font-size:.85rem;color:#6b7280;line-height:1.5;font-weight:500}.mode-tip{font-size:.85rem;color:#4b5563;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--r-md);padding:.75rem 1rem;line-height:1.5}.mode-tip strong{color:#92400e}.author-body{align-items:center;text-align:center;gap:.85rem}.author-photo{width:88px;height:88px;min-width:88px;max-width:88px;border-radius:50%;object-fit:cover;object-position:center 20%;box-shadow:0 0 0 3px #fff,var(--sh-md);flex-shrink:0;display:block}.author-name{font-size:1.2rem;font-weight:800;color:#1e1b4b;letter-spacing:-.02em}.author-role{font-size:.78rem;font-weight:700;color:#667eea;text-transform:uppercase;letter-spacing:.06em;margin-top:-.4rem}.author-bio{font-size:.88rem;color:#6b7280;line-height:1.65;font-weight:500;max-width:340px}.author-links{display:flex;flex-direction:column;gap:.6rem;width:100%;max-width:300px;margin-top:.25rem}.author-link{display:flex;align-items:center;gap:.6rem;padding:.75rem 1.25rem;background:#f9fafb;border:1.5px solid #e5e7eb;border-radius:var(--r-md);text-decoration:none;color:#374151;font-size:.9rem;font-weight:700;transition:all var(--t)}.author-link:hover{background:#f3f4f6;border-color:#667eea;color:#667eea;transform:translateY(-2px);box-shadow:var(--sh-sm)}.author-link--repo{background:#f0fdf4;border-color:#bbf7d0;color:#065f46}.author-link--repo:hover{border-color:#10b981;color:#059669}.author-link svg{width:16px;height:16px;flex-shrink:0}.save-record{width:100%;background:#ffffff1f;border:1.5px solid rgba(255,255,255,.25);border-radius:var(--r-md);padding:.85rem 1rem;display:flex;flex-direction:column;gap:.5rem}.save-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#fff9}.save-row{display:flex;gap:.5rem}.save-name-input{flex:1;font-family:var(--font);font-size:.95rem;font-weight:600;padding:.5rem .75rem;border:1.5px solid rgba(255,255,255,.3);border-radius:var(--r-sm);outline:none;background:#ffffffe6;color:#1e1b4b;transition:border-color var(--t);min-height:38px}.save-name-input:focus{border-color:#fff}.save-record-btn{font-family:var(--font);font-size:.88rem;font-weight:700;padding:.5rem 1rem;border:none;border-radius:var(--r-sm);background:#fff;color:#1e1b4b;cursor:pointer;transition:all var(--t);white-space:nowrap;min-height:38px}.save-record-btn:hover{background:#ffffffe0;transform:translateY(-1px)}.save-record-btn:disabled{opacity:.45;cursor:default;transform:none}.save-done{font-size:.85rem;font-weight:700;color:#6ee7b7}.share-body{align-items:stretch;gap:1.25rem}.share-native-btn{display:flex;align-items:center;justify-content:center;gap:.6rem;width:100%;padding:.9rem 1.25rem;border:none;border-radius:var(--r-md);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-family:var(--font);font-size:1rem;font-weight:700;cursor:pointer;transition:opacity var(--t),transform var(--t)}.share-native-btn:hover{opacity:.9;transform:translateY(-1px)}.share-native-btn:active{transform:scale(.98)}.share-native-btn svg{width:20px;height:20px;flex-shrink:0}.share-links{display:flex;gap:.75rem}.share-link{flex:1;display:flex;align-items:center;justify-content:center;gap:.55rem;padding:.85rem 1rem;border-radius:var(--r-md);text-decoration:none;font-size:.95rem;font-weight:700;transition:all var(--t);border:1.5px solid transparent}.share-link svg{width:20px;height:20px;flex-shrink:0}.share-link--wa{background:#e8faf0;color:#128c4a;border-color:#b7f0d1}.share-link--wa:hover{background:#d1f5e3;border-color:#25d366;transform:translateY(-2px);box-shadow:var(--sh-sm)}.share-link--sms{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.share-link--sms:hover{background:#dbeafe;border-color:#3b82f6;transform:translateY(-2px);box-shadow:var(--sh-sm)}.share-qr-section{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:1rem;background:#f9fafb;border-radius:var(--r-md);border:1px solid #f3f4f6}.share-qr-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#9ca3af}.share-qr-canvas{width:180px!important;height:180px!important;border-radius:var(--r-sm);display:block}.name-modal-wrap{position:fixed;inset:0;z-index:99999;background:#0f0a28e0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;padding:1.5rem}.name-modal{background:#fff;border-radius:var(--r-xl);padding:2.5rem 2rem 2rem;max-width:360px;width:100%;display:flex;flex-direction:column;align-items:center;gap:.75rem;box-shadow:0 24px 64px #00000080;animation:nameModalIn .35s cubic-bezier(.34,1.56,.64,1)}@keyframes nameModalIn{0%{opacity:0;transform:scale(.88) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}.name-modal-icon{font-size:3rem;line-height:1}.name-modal-title{font-size:1.7rem;font-weight:900;color:#1e1b4b;letter-spacing:-.03em;text-align:center}.name-modal-sub{font-size:.88rem;color:#6b7280;text-align:center;line-height:1.55;font-weight:500;max-width:280px}.name-modal-form{width:100%;display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.name-modal-input{font-family:var(--font);font-size:1.05rem;font-weight:600;padding:.8rem 1rem;border:2px solid #e5e7eb;border-radius:var(--r-md);outline:none;color:#1e1b4b;background:#f9fafb;transition:border-color var(--t);text-align:center;width:100%}.name-modal-input:focus{border-color:#667eea;background:#fff}.name-modal-btn{width:100%;padding:.9rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:var(--r-md);font-family:var(--font);font-size:1.05rem;font-weight:800;cursor:pointer;transition:opacity var(--t),transform var(--t)}.name-modal-btn:hover{opacity:.9;transform:translateY(-1px)}.name-modal-btn:active{transform:scale(.98)}.back-btn{display:inline-flex;align-items:center;gap:.4rem;color:#fff;text-decoration:none;font-size:.9rem;font-weight:600;padding:.55rem 1rem;border-radius:var(--r-sm);background:#fff3;transition:background var(--t);white-space:nowrap;min-height:44px}.back-btn:hover{background:#ffffff52}.stat-badge{background:#fff3;color:#fff;padding:.45rem .9rem;border-radius:var(--r-sm);font-size:.9rem;font-weight:600;min-height:44px;display:flex;align-items:center;gap:.3rem}.stat-badge strong{font-weight:800;font-size:1.05rem}.page-progress{height:5px;background:#fff3;flex-shrink:0}.page-progress-fill{height:100%;background:linear-gradient(90deg,var(--green),#34d399);transition:width .5s ease;width:0%;border-radius:0 3px 3px 0}
