/* Shared chrome from the approved G canvas; page modules own their components. */
:root{--ink:#251432;--muted:#554249;--berry:#c14886;--line:#dac0c9;--mint:#a6f2cf;--lilac:#eee3ff;--yellow:#fee180;color-scheme:light}
*{box-sizing:border-box}html{background:#f8f2fa}body{margin:0;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;background:linear-gradient(175deg,#FADBE7 0%,#EEE3FF 40%,#E3F8F2 75%,#D4F4E8 100%);background-attachment:fixed;min-height:100svh}button,input,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}a{text-decoration:none}img{display:block;max-width:100%}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #1b6b4f;outline-offset:4px}.phone{width:100%;max-width:390px;margin:auto;min-height:100svh;position:relative;display:flex;flex-direction:column}.bar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:8px;height:64px;padding:0 16px;background:#fff7fdcc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 2px #25143209;flex-shrink:0}.brand{display:flex;align-items:center;gap:8px;font-size:22px;font-weight:800;letter-spacing:-.5px;color:#a12e6d}.brand-marker{width:36px;height:36px;display:grid;place-items:center;background:white;border-radius:50%;box-shadow:0 1px 3px #2514320c}.brand svg{width:23px;height:23px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.edition{display:flex;align-items:center;gap:6px;font-size:10px;line-height:16px;font-weight:700;white-space:nowrap;padding:4px 11px;background:#ffffffe6;border-radius:99px;color:var(--muted);box-shadow:0 1px 2px #25143207}.edition svg{width:15px;height:15px;stroke:#a12e6d;stroke-width:1.8;fill:none;stroke-linecap:round}#app{padding:0;flex:1;min-width:0}.line-icon{width:24px;height:24px;stroke:currentColor;stroke-width:1.65;fill:none;stroke-linecap:round;stroke-linejoin:round}.loading{padding:36px 16px;color:var(--muted)}
.primary,.secondary{border-radius:9999px;min-height:50px;padding:12px 20px;display:flex;align-items:center;justify-content:center;gap:8px;text-align:center;font-weight:700;font-size:15px;line-height:22px;transition:transform .18s ease,box-shadow .18s ease}.primary{border:0;background:var(--berry);color:white;box-shadow:0 8px 20px -4px #c1488659}.secondary{border:1px solid var(--line);background:white;color:var(--ink)}.primary:active,.secondary:active{transform:scale(.975)}.primary:disabled,.secondary:disabled{opacity:.6}.full{width:100%}.quiet-button{border:0;background:transparent;padding:8px;font-size:12px;color:var(--muted)}.fine{font-size:11px;color:var(--muted);line-height:1.8}.sub{font-size:14px;line-height:1.8;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:1.6px;color:#a12e6d;font-weight:700}
.g-review{padding:24px 16px 32px}.review-heading{font-size:28px;line-height:36px;font-weight:800;margin:12px 0}.answer-list{display:grid;gap:12px}.review-answer{border:2px solid #fff;background:#ffffffed;border-radius:24px;padding:16px;width:100%;text-align:left;font-size:13px;line-height:1.7;box-shadow:0 8px 24px -4px #42304f0a}.review-answer b{display:block;color:#a12e6d;font-weight:700;margin-top:8px}.review-back{margin-top:20px}
#notice{position:fixed;z-index:60;bottom:24px;left:50%;transform:translateX(-50%);background:#392b48ed;color:#fff;font-size:12px;border-radius:16px;padding:12px 18px;max-width:90vw;box-shadow:0 8px 30px #0002}dialog{border:1px solid #fff;border-radius:28px;padding:0;width:calc(100% - 26px);max-width:440px;max-height:91svh;color:var(--ink);background:#fffdfd;box-shadow:0 20px 100px #392b4830;margin:auto}dialog::backdrop{background:#30223866;backdrop-filter:blur(3px)}.dialog-body{padding:21px}.dialog-body h2{font-size:20px;font-weight:800;margin-bottom:10px}.dialog-body p{font-size:13px;color:var(--muted);line-height:1.8}.dialog-actions{display:grid;gap:10px;margin-top:20px}.dialog-title{display:flex;align-items:center;justify-content:space-between;padding:15px 20px}.dialog-title h2{font-size:16px;font-weight:800}.icon-button{border:0;background:#f6eff6;border-radius:50%;width:36px;height:36px;font-size:24px;line-height:1}.image-scroll{max-height:calc(90svh - 190px);overflow:auto;padding:0 14px}.image-scroll img{width:100%;height:auto;border-radius:13px}.dialog-body .fine{font-size:10px;text-align:center;margin-top:8px}.arrive{animation:arrive .4s ease}.export-mode,.export-mode *{animation:none!important;transition:none!important}.export-mode{overflow:visible!important}.export-mode .no-export{display:none!important}.export-mode details>summary{display:none}.export-mode .report-ending{margin-bottom:15px}noscript{display:block;max-width:390px;margin:auto;padding:16px}
@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(hover:hover){.primary:hover{background:#a12e6d;box-shadow:0 10px 24px -4px #c1488660}.review-answer:hover{border-color:#df9fc2}.secondary:hover{background:#fcefff}}
@media(max-width:355px){.bar{gap:5px}.brand{font-size:20px;gap:6px}.brand-marker{width:32px;height:32px}.edition{padding:4px 8px;font-size:9px;gap:4px}.edition svg{width:13px;height:13px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Rendering roots have their own mobile gutters; keep the complete gutter in exports. */
body[data-page="report"] #analysis-report{padding:12px 16px 20px}body[data-page="report"] .g-report-actions{padding:0 16px 32px}
/* Match the long Stitch canvas on phones; no desktop scrollbar steals mobile width. */
html{scrollbar-width:none}::-webkit-scrollbar{display:none}.phone{background:linear-gradient(175deg,#FADBE7 0%,#EEE3FF 40%,#E3F8F2 75%,#D4F4E8 100%)}
/* html2canvas measures baselines using a hidden inline image. Preflight's block
   image reset must not affect that private measuring element. Visible art stays unchanged. */
body.canvas-capture>div[style*="visibility"]>img{display:inline;max-width:none}
.g-report .g-city-name.g-multiple-city-name{text-wrap:balance}
