:root{color-scheme:dark;--accent:#ff648a;--paper:#f6f5f2;--muted:#aaa;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC",system-ui,sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#111;color:#fff}button,input,a{font:inherit}button,a,label{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,label:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:disabled{opacity:.35;cursor:default}[hidden]{display:none!important}button{color:inherit}.app{position:relative;width:100%;height:100dvh;overflow:hidden;background:#111;isolation:isolate}header{position:absolute;z-index:8;top:max(13px,env(safe-area-inset-top));height:44px;left:14px;right:14px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.logo{display:flex;align-items:center;gap:5px;font-size:17px;font-weight:650;letter-spacing:-.5px;color:inherit;text-decoration:none;pointer-events:auto;margin-left:8px}.brand-dot{height:5px;width:5px;background:var(--accent);border-radius:50%;align-self:flex-start;margin-top:4px}.icon-button{width:44px;height:44px;border:0;background:transparent;color:white;display:grid;place-items:center;pointer-events:auto;border-radius:50%}.icon-button svg{width:24px;height:24px}#info svg{width:21px;height:21px}.back-button{background:#0004;backdrop-filter:blur(8px)}.viewfinder{position:absolute;top:72px;bottom:172px;left:0;right:0;overflow:hidden;background:#181818;border-radius:19px}.viewfinder>video,.viewfinder>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}#camera.front{transform:scaleX(-1)}.view-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(transparent 65%,#0005)}.frame{position:absolute;inset:33% 27%;pointer-events:none;opacity:.4}.frame i{position:absolute;width:14px;height:14px;border:solid #fff}.frame i:nth-child(1){top:0;left:0;border-width:1px 0 0 1px}.frame i:nth-child(2){top:0;right:0;border-width:1px 1px 0 0}.frame i:nth-child(3){bottom:0;left:0;border-width:0 0 1px 1px}.frame i:nth-child(4){bottom:0;right:0;border-width:0 1px 1px 0}.intro{position:absolute;bottom:22px;left:0;right:0;text-align:center;font-size:12px;color:#fffd;text-shadow:0 1px 6px #0006;pointer-events:none}.camera-actions{position:absolute;bottom:max(21px,env(safe-area-inset-bottom));height:132px;left:36px;right:36px;display:flex;align-items:center;justify-content:space-between;z-index:6}.action-side{width:52px;display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:9px}.action-side>span{font-size:10px;color:#aaa}.album{border-radius:13px;border:1px solid #777;background:#242424;width:42px;height:42px}.album svg{width:22px;height:22px}#flip{background:#292929;width:42px;height:42px}.main-action{display:flex;flex-direction:column;align-items:center;gap:15px}.shutter{width:78px;height:78px;border:3px solid #f5f5f5;border-radius:50%;padding:4px;background:transparent;transition:transform .13s}.shutter>span{display:block;width:100%;height:100%;background:#f4f4f4;border-radius:50%;transition:background .15s}.shutter:active{transform:scale(.91)}.shutter:active>span{background:var(--accent)}#shutter-note{font-size:12px;font-weight:550;color:#fff;position:relative}#shutter-note::before{content:"";position:absolute;top:-7px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:var(--accent)}#camera-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:26px;background:#1b1b1b;text-align:center}.permission-camera{width:48px;height:48px;color:#e1e1e1;margin-bottom:23px}h1{font-size:20px;font-weight:600;letter-spacing:-.5px;margin:0 0 13px}#camera-message{max-width:250px;font-size:12px;line-height:1.75;color:#969696;margin:0 0 24px}.light{border:0;border-radius:10px;background:#eee;color:#222;padding:12px 21px;font-size:13px;font-weight:600}.text-button{border:0;background:none;padding:15px;color:#aaa;font-size:12px}.app:has(#camera-empty:not([hidden])) .intro{display:none}#resume{position:absolute;z-index:7;top:85px;right:13px;border:0;border-radius:18px;color:#fff;background:#0006;padding:9px 12px;font-size:11px;backdrop-filter:blur(10px)}#shutter-flash{position:absolute;inset:0;background:white;opacity:0;pointer-events:none}.flash #shutter-flash{animation:flash .2s ease-out}.has-photo header{left:10px;right:10px}.has-photo .logo{display:none}.has-photo .viewfinder{inset:0;border-radius:0}.has-photo .viewfinder>video,.has-photo .viewfinder>img{object-fit:contain;background:#101010}.has-photo .view-shade{background:linear-gradient(#0008,transparent 22%,transparent 43%,#0008 64%,#000e 83%,#000 100%)}.has-photo .camera-actions,.has-photo .intro,.has-photo .frame{display:none}.has-photo .viewfinder>#photo,.has-photo .viewfinder>#result-video{height:78%;top:5%;background:transparent}.ar-label{position:absolute;top:77px;left:19px;font-size:10px;font-weight:500;color:#ffffffb3;text-shadow:0 1px 4px #000;pointer-events:none}#sound-toggle{position:absolute;right:14px;top:71px;border:0;border-radius:20px;padding:11px 13px;min-height:40px;background:#0005;backdrop-filter:blur(8px);font-size:11px;color:#fff}#sound-toggle[aria-pressed=false]{background:#fff;color:#222}.result-switch{position:absolute;z-index:8;top:max(17px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;background:#0005;border:1px solid #ffffff18;border-radius:22px;padding:3px;backdrop-filter:blur(12px)}.result-switch button{border:0;border-radius:19px;min-height:32px;min-width:57px;padding:6px 14px;background:transparent;color:#ddd;font-size:12px}.result-switch button[aria-pressed=true]{background:#f4f4f4;color:#222;font-weight:600}.knowledge{position:absolute;z-index:4;left:21px;right:21px;bottom:145px;max-height:35%;overflow:auto;scrollbar-width:none}.knowledge-meta{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#fff7;margin-bottom:9px}#elapsed{display:none}.knowledge h2{font-size:25px;font-weight:650;line-height:1.4;letter-spacing:-.6px;margin:0 0 9px;text-wrap:pretty}.knowledge>p{font-size:14px;line-height:1.7;margin:0;color:#fffc}.stages{display:none}#more{border:0;background:none;padding:9px 0 0;font-size:11px;color:#ffffff80}#more span{padding-left:3px}.result-tools{position:absolute;bottom:max(26px,env(safe-area-inset-bottom));left:21px;right:21px;display:flex;gap:11px;z-index:6}.result-tools>*{display:flex;gap:8px;align-items:center;justify-content:center;border:1px solid #ffffff26;background:#222;color:#fff;padding:13px 20px;min-height:49px;text-decoration:none;font-size:13px;border-radius:13px}.result-tools svg{width:19px;height:19px}.result-tools #replay{width:105px}.result-tools #shoot-again{flex:1;background:#f4f4f4;color:#151515;border-color:#f4f4f4;font-weight:600}.playback{position:absolute;left:13px;right:22px;bottom:91px;z-index:6;display:flex;align-items:center;gap:9px;height:40px}#player-toggle{border:0;background:none;width:35px;height:40px;display:grid;place-items:center;padding:7px}#player-toggle svg{width:18px;height:18px}.play-shape{display:none}.paused .play-shape{display:block}.paused .pause-shape{display:none}#seek{flex:1;min-width:0;height:26px;margin:0;accent-color:#fff;cursor:pointer;appearance:none;background:transparent}#seek::-webkit-slider-runnable-track{height:2px;background:linear-gradient(to right,#fff var(--progress,0%),#ffffff40 var(--progress,0%));border-radius:2px}#seek::-webkit-slider-thumb{appearance:none;width:8px;height:8px;border-radius:50%;background:#fff;margin-top:-3px}#seek::-moz-range-track{height:2px;background:#ffffff40}#seek::-moz-range-progress{background:white;height:2px}#seek::-moz-range-thumb{width:8px;height:8px;border:0;background:white}#play-time{font-size:9px;min-width:62px;color:#b9b9b9;font-variant-numeric:tabular-nums}.has-photo:not(.is-ready) .knowledge{bottom:66px}.has-photo:not(.is-ready) #video-wait{bottom:33%;left:21px;right:21px}.has-photo:not(.is-ready) .viewfinder>#photo{height:69%;top:4%}#video-wait{position:absolute;display:flex;align-items:center;gap:8px;color:#fff;pointer-events:none}#video-status{font-size:12px;margin:0}#video-wait small{display:none}.orb{width:12px;height:12px;border-radius:50%;border:1.5px solid #ffffff30;border-top-color:white;animation:spin .8s linear infinite}.developing-overlay{position:absolute;inset:18% 0 36%;pointer-events:none;opacity:0;overflow:hidden}.is-generating .developing-overlay{opacity:1}.scan-light{position:absolute;inset:10% 0 auto;height:30%;background:linear-gradient(transparent,#fff1);border-bottom:1px solid #fff4;opacity:.5}.is-generating .scan-light{animation:develop-scan 4s ease-in-out infinite}.scan-target{position:absolute;inset:15% 20%}.scan-target i{position:absolute;width:14px;height:14px;border:solid #ffffff60}.scan-target i:nth-child(1){left:0;top:0;border-width:1px 0 0 1px}.scan-target i:nth-child(2){right:0;top:0;border-width:1px 1px 0 0}.scan-target i:nth-child(3){left:0;bottom:0;border-width:0 0 1px 1px}.scan-target i:nth-child(4){right:0;bottom:0;border-width:0 1px 1px 0}.is-generating .scan-target{animation:breathe 3s infinite}.developing-dot{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:0 0 10px #fff8}.d1{left:27%;top:36%}.d2{left:67%;top:53%}.d3{left:48%;top:67%}.is-generating .developing-dot{animation:drift 3.8s ease-in-out infinite}.is-generating .d2{animation-delay:-1.4s}.is-generating .d3{animation-delay:-2.7s}#error{color:#ffd1d8;font-size:12px;line-height:1.7;margin-top:12px}.bottom-sheet{position:fixed;inset:auto 0 0;margin:0 auto;width:100%;max-width:440px;max-height:78dvh;border:1px solid #ffffff0a;border-bottom:0;border-radius:23px 23px 0 0;padding:25px 24px max(30px,env(safe-area-inset-bottom));background:#222;color:#f3f3f3;overflow:auto;overscroll-behavior:contain}.bottom-sheet::backdrop{background:#0008}.sheet-grip{position:absolute;top:9px;left:calc(50% - 16px);width:32px;height:4px;border-radius:3px;background:#ffffff30}.sheet-close{position:absolute;right:14px;top:15px;width:36px;height:36px;background:#333;border:0;border-radius:50%;font-size:24px;font-weight:300;color:#bbb}.bottom-sheet h2{font-size:23px;line-height:1.5;margin:28px 25px 15px 0;letter-spacing:-.4px}.bottom-sheet p{font-size:14px;line-height:1.85;color:#ccc}.bottom-sheet .detail-note{color:#858585;font-size:11px;margin-top:25px}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:21px 0;margin:22px 0;border-block:1px solid #ffffff0b;font-size:13px}.settings-row span:last-child{font-size:10px;color:#888}#got-it{width:100%;border:0;background:#eee;color:#222;font-size:14px;font-weight:600;border-radius:12px;padding:14px;margin-top:16px}details{border-top:1px solid #ffffff12;padding-top:18px;margin-top:23px;font-size:12px;color:#999}summary{cursor:pointer}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.8 ui-monospace;background:#191919;padding:12px;border-radius:8px;max-height:240px;overflow:auto;color:#aaa}#copy-prompt{border:1px solid #444;background:none;border-radius:8px;font-size:12px;padding:8px 16px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes flash{from{opacity:.6}to{opacity:0}}@keyframes develop-scan{0%,100%{transform:translateY(0);opacity:.2}50%{transform:translateY(120%);opacity:.6}}@keyframes breathe{50%{opacity:.3}}@keyframes drift{50%{transform:translateY(-9px);opacity:.3}}@media(min-width:600px){body{display:grid;place-items:center;background:#202020}.app{max-width:440px;height:min(940px,100dvh);box-shadow:0 0 0 1px #ffffff0a}.bottom-sheet{bottom:max(0px,calc((100dvh - 940px)/2))}}@media(max-height:700px){.viewfinder{top:64px;bottom:143px}.camera-actions{height:112px;bottom:12px}.shutter{width:69px;height:69px}.main-action{gap:12px}.knowledge h2{font-size:21px}.knowledge>p{font-size:12px}.knowledge{bottom:130px;max-height:30%}.result-tools{bottom:17px}.result-tools>*{min-height:45px;padding:11px}.playback{bottom:76px}.permission-camera{width:36px;height:36px;margin-bottom:15px}h1{font-size:18px}#camera-message{margin-bottom:15px}.has-photo:not(.is-ready) .knowledge{bottom:35px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
#retry-video{margin-top:16px;background:#f4f4f4;color:#171717;border:0;border-radius:11px;padding:12px 18px;font-size:13px;font-weight:600;display:block}
/* The photographed area is exactly the square shown to the user. */
.app{--camera-side:min(100vw,440px,calc(100dvh - 244px))}.app:not(.has-photo) .viewfinder{width:var(--camera-side);height:var(--camera-side);aspect-ratio:1;left:50%;right:auto;bottom:auto;top:calc(72px + (100% - 244px - var(--camera-side))/2);transform:translateX(-50%)}.has-photo .viewfinder>#photo,.has-photo .viewfinder>#result-video{width:100%;height:auto;aspect-ratio:1;top:13%;object-fit:contain}.has-photo:not(.is-ready) .viewfinder>#photo{height:auto;aspect-ratio:1;top:13%}#crop-dialog{max-height:94dvh;padding:22px 20px max(22px,env(safe-area-inset-bottom))}#crop-dialog h2{font-size:20px;margin:16px 0 6px}#crop-dialog .crop-hint{font-size:11px;color:#aaa;margin:0 0 16px}#crop-canvas{display:block;width:min(100%,calc(100dvh - 280px));height:auto;aspect-ratio:1;margin:auto;border-radius:9px;touch-action:none;background:#eee;cursor:grab}.crop-zoom-label{display:flex;align-items:center;gap:15px;font-size:12px;margin:19px 0}#crop-zoom{flex:1;accent-color:#fff;min-width:0}.crop-actions{display:flex;gap:12px}.crop-actions button{border:0;border-radius:12px;padding:13px;font-size:13px;background:#333;color:white;flex:1}.crop-actions #crop-use{background:#f4f4f4;color:#171717;flex:2}@media(max-height:700px){.app{--camera-side:min(100vw,440px,calc(100dvh - 210px))}.app:not(.has-photo) .viewfinder{top:calc(64px + (100% - 210px - var(--camera-side))/2)}.has-photo .viewfinder>#photo,.has-photo .viewfinder>#result-video,.has-photo:not(.is-ready) .viewfinder>#photo{top:12%;max-height:54%;width:auto;max-width:100%;left:50%;transform:translateX(-50%);aspect-ratio:1}}

/* A soft focus reveal; no delayed video start or simulated progress. */
.revealed-char{animation:knowledge-ink .38s ease-out both}.text-revealing::after{content:"";display:inline-block;width:4px;height:4px;margin-left:5px;border-radius:50%;background:var(--accent);vertical-align:middle;animation:breathe 1.2s ease-in-out infinite}
@keyframes knowledge-ink{from{opacity:0;filter:blur(3px)}to{opacity:1;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.revealed-char{animation:none}.text-revealing::after{display:none}}

#learn-more{display:block;margin-top:15px;padding:12px 17px;border:1px solid #ffffff24;border-radius:12px;background:#f4f4f4;color:#171717;font-size:13px;font-weight:600;animation:knowledge-ink .4s ease-out}#learn-more span{margin-left:15px;color:#777}#learn-body{white-space:pre-wrap;font-size:15px;line-height:1.95;color:#ddd;padding-bottom:20px}#learn-status{font-size:11px;color:#999}#learn-dialog{min-height:40dvh}#learn-retry{margin-top:12px}

/* Photo discovery is active from upload through vision/thinking, without delaying requests. */
.photo-discovery{position:absolute;top:13%;left:0;width:100%;aspect-ratio:1;overflow:hidden;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .45s ease,visibility .45s;isolation:isolate}
.is-discovering .photo-discovery{opacity:1;visibility:visible}.discovery-tint{position:absolute;inset:0;background:radial-gradient(ellipse at 20% 75%,#ed83ff21,transparent 65%),linear-gradient(145deg,#17112412,#100c2228)}
.discovery-sweep{position:absolute;inset:-70% -25%;background:linear-gradient(180deg,transparent 42%,#c1b6ff08 47%,#edccff55 50%,#ffffffbb 50.15%,#b8e8ff20 51%,transparent 58%);transform:rotate(-18deg) translateY(-28%)}
.discovery-orbit{position:absolute;border:1px solid #fff5;border-radius:50%;width:66%;height:66%;left:17%;top:17%;box-shadow:0 0 22px #dab8ff12,inset 0 0 18px #dab8ff08;opacity:.65}.orbit-one{transform:rotate(-28deg) scaleY(.48)}.orbit-two{width:48%;height:48%;left:26%;top:26%;border-color:#eccdff55;transform:rotate(46deg) scaleY(.7)}
.discovery-focus{position:absolute;inset:25% 23% 30%;color:#fff;filter:drop-shadow(0 1px 7px #35204c80)}.discovery-focus i{position:absolute;width:20px;height:20px;border:solid #ffffffe0}.discovery-focus i:nth-child(1){top:0;left:0;border-width:1.5px 0 0 1.5px;border-radius:7px 0 0 0}.discovery-focus i:nth-child(2){top:0;right:0;border-width:1.5px 1.5px 0 0;border-radius:0 7px 0 0}.discovery-focus i:nth-child(3){bottom:0;left:0;border-width:0 0 1.5px 1.5px;border-radius:0 0 0 7px}.discovery-focus i:nth-child(4){bottom:0;right:0;border-width:0 1.5px 1.5px 0;border-radius:0 0 7px 0}.focus-spark{position:absolute;top:-12px;right:-12px;font-size:22px;text-shadow:0 0 18px #fbcfff}
.discovery-caption{position:absolute;bottom:6%;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;white-space:nowrap;padding:11px 15px;background:#17131d9e;border:1px solid #ffffff30;backdrop-filter:blur(18px);border-radius:30px;box-shadow:0 6px 25px #0002;color:#f9f4ff;font-size:11px;letter-spacing:.3px}.discovery-star{font-size:17px;color:#efd3ff}.discovery-dots{display:flex;gap:3px}.discovery-dots i{width:3px;height:3px;border-radius:50%;background:#e9d4ff}
.is-discovering .discovery-sweep{animation:discovery-sweep 4s ease-in-out infinite}.is-discovering .discovery-focus{animation:discovery-focus 6s ease-in-out infinite}.is-discovering .orbit-one{animation:discovery-orbit 9s ease-in-out infinite}.is-discovering .orbit-two{animation:discovery-orbit-two 7s ease-in-out infinite}.is-discovering .focus-spark,.is-discovering .discovery-star{animation:breathe 2.4s ease-in-out infinite}.is-discovering .discovery-dots i{animation:discovery-dot 1.4s ease-in-out infinite}.discovery-dots i:nth-child(2){animation-delay:.18s!important}.discovery-dots i:nth-child(3){animation-delay:.36s!important}
.is-discovering #video-wait .orb{display:none}.is-discovering #video-status{font-size:11px;color:#a9a4af}.is-background *{animation-play-state:paused!important}
@keyframes discovery-sweep{0%{transform:rotate(-18deg) translateY(-28%);opacity:0}18%,75%{opacity:1}100%{transform:rotate(-18deg) translateY(28%);opacity:0}}
@keyframes discovery-focus{0%,100%{transform:translate(0,0) scale(1)}35%{transform:translate(-6%,6%) scale(.86)}70%{transform:translate(8%,-5%) scale(.95)}}
@keyframes discovery-orbit{50%{transform:rotate(20deg) scaleY(.62);opacity:.3}}
@keyframes discovery-orbit-two{50%{transform:rotate(-20deg) scaleY(.55);opacity:.4}}
@keyframes discovery-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}
@media(max-height:700px){.photo-discovery{top:12%;width:min(100%,54dvh);left:50%;transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.photo-discovery,.photo-discovery *{animation:none!important;transition:none!important}.discovery-sweep,.discovery-orbit{display:none}}

/* Preview matches the centered square captured from the full-resolution source. */
#camera{object-fit:cover;object-position:50% 50%;background:#111}#native-shortcut{position:absolute;z-index:5;right:12px;top:12px;border:1px solid #ffffff35;border-radius:20px;padding:10px 13px;background:#15151580;backdrop-filter:blur(10px);color:#fff;font-size:11px;min-height:40px}.has-photo #native-shortcut,.app:has(#camera-empty:not([hidden])) #native-shortcut{display:none}

.is-taking-photo .shutter{opacity:1;border-top-color:var(--accent);animation:spin 1s linear infinite}.is-taking-photo .shutter>span{background:#cfc9d2;transform:scale(.85)}.is-taking-photo #shutter-note{color:#f3d6e8}
