| <!doctype html> |
| <html lang="ko"> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> |
| <title>LeeChard</title> |
| |
| <link rel="manifest" href="/static/manifest.webmanifest" /> |
| <meta name="theme-color" content="#0b0907" /> |
| <meta name="mobile-web-app-capable" content="yes" /> |
| <meta name="apple-mobile-web-app-capable" content="yes" /> |
| <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> |
| <link rel="apple-touch-icon" href="/static/icons/icon-192.png" /> |
| <link rel="icon" type="image/png" href="/static/icons/icon-192.png" /> |
| <link rel="preconnect" href="https://fonts.googleapis.com" /> |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> |
| <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;600;700&display=swap" rel="stylesheet" /> |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css" /> |
| <link rel="stylesheet" href="/static/css/styles.css?v=21" /> |
| </head> |
| <body> |
| <main class="app"> |
| <div class="bg-waves" aria-hidden="true"> |
| <svg viewBox="0 0 1200 900" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg"> |
| <g fill="none" stroke-width="1.3"> |
| <g stroke="#e2bf73"> |
| <path d="M-300 230 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0" transform="translate(0 -9)" stroke-opacity="0.28"/> |
| <path d="M-300 230 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0" transform="translate(0 -3)" stroke-opacity="0.5"/> |
| <path d="M-300 230 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0" transform="translate(0 3)" stroke-opacity="0.5"/> |
| <path d="M-300 230 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0 q75 -40 150 0 q75 40 150 0" transform="translate(0 9)" stroke-opacity="0.28"/> |
| <animateTransform attributeName="transform" type="translate" values="-300 0;0 0" dur="9s" repeatCount="indefinite"/> |
| </g> |
| <g stroke="#d8b15e"> |
| <path d="M-360 470 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0" transform="translate(0 -10)" stroke-opacity="0.2"/> |
| <path d="M-360 470 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0" transform="translate(0 -3)" stroke-opacity="0.4"/> |
| <path d="M-360 470 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0" transform="translate(0 4)" stroke-opacity="0.4"/> |
| <path d="M-360 470 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0 q90 -54 180 0 q90 54 180 0" transform="translate(0 11)" stroke-opacity="0.2"/> |
| <animateTransform attributeName="transform" type="translate" values="-360 0;0 0" dur="14s" repeatCount="indefinite"/> |
| </g> |
| <g stroke="#e8c87a"> |
| <path d="M-300 700 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0" transform="translate(0 -8)" stroke-opacity="0.24"/> |
| <path d="M-300 700 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0" transform="translate(0 -2)" stroke-opacity="0.44"/> |
| <path d="M-300 700 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0" transform="translate(0 4)" stroke-opacity="0.44"/> |
| <path d="M-300 700 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0 q75 -34 150 0 q75 34 150 0" transform="translate(0 10)" stroke-opacity="0.24"/> |
| <animateTransform attributeName="transform" type="translate" values="-300 0;0 0" dur="12s" repeatCount="indefinite"/> |
| </g> |
| </g> |
| <g> |
| <circle cx="180" cy="150" r="2" fill="#f3dd9e"><animate attributeName="opacity" values="0.15;0.85;0.15" dur="3.2s" repeatCount="indefinite"/></circle> |
| <circle cx="520" cy="300" r="1.6" fill="#e8c87a"><animate attributeName="opacity" values="0.1;0.7;0.1" dur="2.6s" begin="0.6s" repeatCount="indefinite"/></circle> |
| <circle cx="900" cy="210" r="2.4" fill="#ffffff"><animate attributeName="opacity" values="0.1;0.55;0.1" dur="3.8s" begin="1.1s" repeatCount="indefinite"/></circle> |
| <circle cx="1040" cy="540" r="1.8" fill="#f3dd9e"><animate attributeName="opacity" values="0.12;0.75;0.12" dur="3s" begin="0.3s" repeatCount="indefinite"/></circle> |
| <circle cx="300" cy="650" r="1.6" fill="#e8c87a"><animate attributeName="opacity" values="0.1;0.7;0.1" dur="2.9s" begin="1.4s" repeatCount="indefinite"/></circle> |
| <circle cx="760" cy="775" r="2" fill="#ffffff"><animate attributeName="opacity" values="0.1;0.5;0.1" dur="4.2s" begin="0.9s" repeatCount="indefinite"/></circle> |
| </g> |
| </svg> |
| </div> |
| <div class="stepbar" id="stepbar" aria-hidden="true"></div> |
|
|
| |
| <section class="screen active" id="screen-landing" data-step="0"> |
| <div class="hero"> |
| <div class="hero-overlay"></div> |
| <div class="hero-content"> |
| <p class="brand-logo">LeeChard</p> |
| <p class="slogan">๋น์ ์, ๋ ๋น๋๊ฒ.</p> |
| <span class="hero-rule"></span> |
| <p class="brand-sub">๋ฏธ์ฉ์ค ์ ์ฉ AI ํฌํธ๋ ์ดํธ</p> |
| </div> |
| </div> |
| <div class="screen-foot"> |
| <button class="btn btn-primary" data-go="consent">์์ํ๊ธฐ</button> |
| <button class="btn btn-text" id="btn-recent">๐ ์์
๋ด์ญ ๋ณด๊ธฐ</button> |
| <p class="fineprint">AI ์์ฑ ์ด๋ฏธ์ง ยท ์๋ณธ์ ์ ์ฅ/๊ณต์ ๋์ง ์์ต๋๋ค</p> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-consent" data-step="1"> |
| <header class="topbar"><button class="icon-btn" data-go="landing" aria-label="๋ค๋ก">โน</button><span class="topbar-title">์ด์ฉ ๋์</span><span class="icon-btn ghost"></span></header> |
| <div class="screen-body"> |
| <h1 class="title">์์ํ๊ธฐ ์ ์</h1> |
| <ul class="trust-list"> |
| <li><span class="ic">๐</span><span>์๋ณธ ์ฌ์ง์ ๊ณต์ ๋์ง ์์์</span></li> |
| <li><span class="ic">๐๏ธ</span><span>์์
์ด ๋๋๋ฉด ์๋ณธ์ ์๋ ์ญ์ ๋ผ์</span></li> |
| <li><span class="ic">โจ</span><span>๊ฒฐ๊ณผ๋ AI๋ก ์์ฑยทํธ์ง๋ ๊ฐ์ ์ด๋ฏธ์ง์์</span></li> |
| <li><span class="ic">โณ</span><span>์ ๋ฌ์ฉ QR ๋งํฌ๋ 7์ผ ํ ๋ง๋ฃ๋ผ์</span></li> |
| </ul> |
| <div class="consents"> |
| <label class="check"><input type="checkbox" id="c-ai" /><span>[ํ์] AI ๋ณด์ ์ ๋์ํฉ๋๋ค</span></label> |
| <label class="check"><input type="checkbox" id="c-qr" /><span>[ํ์] QR ์ ๋ฌ์ ๋์ํฉ๋๋ค</span></label> |
| <label class="check"><input type="checkbox" id="c-mkt" /><span>[์ ํ] ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์ ๋ง์ผํ
ํ์ฉ ๋ณด๊ด์ ๋์ํฉ๋๋ค</span></label> |
| <p class="consent-note">๋ง์ผํ
ํ์ฉ ๋ณด๊ด์ ์ต๋ 1๋
์ด๋ฉฐ, ๋งค์ฅ์ ์์ฒญํ๋ฉด ์ธ์ ๋ ์ฒ ํยท์ญ์ ํ ์ ์์ด์. ๋์ํ์ง ์์๋ ๋ณด์ ๊ฒฐ๊ณผ๋ ์ ์ ์ ๋ฌ๋ฉ๋๋ค.</p> |
| </div> |
| </div> |
| <div class="screen-foot"> |
| <button class="btn btn-primary" id="consent-go" data-go="capture" disabled>๋์ํ๊ณ ๊ณ์</button> |
| <p class="fineprint">๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ๋ฐฉ์นจ</p> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-capture" data-step="2"> |
| <header class="topbar"><button class="icon-btn" data-go="consent" aria-label="๋ค๋ก">โน</button><span class="topbar-title">์ฌ์ง ์ดฌ์</span><span class="icon-btn ghost"></span></header> |
| <div class="screen-body capture-body"> |
| <div class="capture-frame" id="capture-frame"> |
| <img id="capture-preview" class="capture-preview" alt="" hidden /> |
| <div class="face-guide" id="face-guide"><div class="oval"></div></div> |
| <p class="capture-hint" id="capture-hint">์ผ๊ตด์ด ์ ๋ณด์ด๊ฒ ์ ๋ฉด์ผ๋ก ๋ง์ถฐ ์ฃผ์ธ์</p> |
| </div> |
| <div class="chips"><span class="chip">๋ฐ์ ๊ณณ</span><span class="chip">์ ๋ฉด</span><span class="chip">์ ์ง</span></div> |
| </div> |
| <div class="screen-foot capture-foot"> |
| <div id="capture-actions"> |
| <button class="btn btn-primary" id="btn-shoot">๐ท ์ฌ์ง ์ดฌ์</button> |
| <button class="btn btn-text" id="btn-gallery">๊ฐค๋ฌ๋ฆฌ์์ ์ ํ</button> |
| </div> |
| <div id="capture-confirm" hidden> |
| <div class="gender-pick" id="gender-pick" role="group" aria-label="์ฑ๋ณ ์ ํ"> |
| <span class="gender-pick-label">์ฑ๋ณ</span> |
| <div class="gender-seg"> |
| <button type="button" class="gender-opt active" data-gender="auto">์๋</button> |
| <button type="button" class="gender-opt" data-gender="woman">์ฌ์ฑ</button> |
| <button type="button" class="gender-opt" data-gender="man">๋จ์ฑ</button> |
| </div> |
| </div> |
| <button class="btn btn-primary" id="btn-use">์ด ์ฌ์ง์ผ๋ก</button> |
| <button class="btn btn-text" id="btn-retake">๋ค์ ์ฐ๊ธฐ</button> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-loading" data-step="3"> |
| <div class="loading-bg" id="loading-bg"></div> |
| <div class="loading-center"> |
| <div class="ring"></div> |
| <h1 class="title light">AI๊ฐ ์ผ๊ตด์ ๋ณด์ ํ๊ณ ์์ด์</h1> |
| <p class="loading-pct" id="loading-pct">0%</p> |
| <div class="progress"><div class="progress-fill" id="progress-fill"></div></div> |
| <p class="loading-time" id="loading-time">๋ณดํต 15์ด, ๊ธธ๋ฉด 1๋ถ ์ ๋ ๊ฑธ๋ ค์</p> |
| <div class="value-banner">ํค์ด ยท ์์ ยท ๋ฐฐ๊ฒฝ์ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค</div> |
| <div class="loading-notice" id="loading-notice" aria-live="polite"> |
| <span class="notice-tag">๊ณต์ง</span> |
| <span class="notice-text" id="notice-text">ํค์ดยท์์ยท๋ฐฐ๊ฒฝ์ ๊ทธ๋๋ก, ์ผ๊ตด๋ง ๋ ๋ฉ์ง๊ฒ ๋ณด์ ๋ผ์.</span> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-result" data-step="4"> |
| <header class="topbar"><button class="icon-btn" data-go="capture" aria-label="๋ค๋ก">โน</button><span class="topbar-title">๊ฒฐ๊ณผ</span><span class="icon-btn ghost"></span></header> |
| <div class="screen-body"> |
| |
| <div class="share-tabs" id="result-tabs" hidden> |
| <button type="button" class="share-tab active" id="result-tab-photo">์ฌ์ง</button> |
| <button type="button" class="share-tab" id="result-tab-video">์์</button> |
| </div> |
| <div id="result-photo-wrap"> |
| <div class="ba" id="ba"> |
| <img class="ba-after" id="ba-after" alt="AI ๊ฒฐ๊ณผ" /> |
| <img class="ba-before" id="ba-before" alt="์๋ณธ" /> |
| <span class="ba-tag ba-tag-l">์๋ณธ</span> |
| <span class="ba-tag ba-tag-r">AI</span> |
| <span class="wm">AI ๊ฐ์ ๋ชจ๋ธ ยท LeeChard</span> |
| </div> |
| <input type="range" id="ba-range" class="ba-range" min="0" max="100" value="50" aria-label="์๋ณธ/AI ๋น๊ต" /> |
| </div> |
| <div class="share-frame" id="result-video-wrap" hidden> |
| <video id="result-video" class="share-video" controls playsinline loop muted></video> |
| </div> |
| <div class="chips center"> |
| <span class="chip gold">ํค์ด ์ ์ง</span><span class="chip gold">๋ฐฐ๊ฒฝ ์ ์ง</span><span class="chip gold">AI ๊ฐ์ ๋ชจ๋ธ ํ์</span> |
| </div> |
| <p class="disclosure">์ด ์ด๋ฏธ์ง๋ AI๋ก ์์ฑยทํธ์ง๋ ๊ฒฐ๊ณผ๋ก, ์ค์ ๋ณด์ ์ ์ฌ์ง์ด ์๋๋๋ค.</p> |
| </div> |
| <div class="screen-foot"> |
| <button class="btn btn-primary" id="result-go">QR๋ก ์ ๋ฌํ๊ธฐ</button> |
| <div class="action-row"> |
| <button class="btn btn-outline" id="btn-save">๐ฅ ์ฌ์ง ์ ์ฅ</button> |
| <button class="btn btn-outline" id="btn-video">โจ ์์ ๋ง๋ค๊ธฐ</button> |
| </div> |
| <p class="video-status" id="video-status" hidden></p> |
| <button class="btn btn-text" data-go="capture">๋ค์ ์ฐ๊ธฐ</button> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-qr" data-step="5"> |
| <header class="topbar"><button class="icon-btn" data-go="result" aria-label="๋ค๋ก">โน</button><span class="topbar-title">QR ์ ์ก</span><span class="icon-btn ghost"></span></header> |
| <div class="screen-body center-col"> |
| <h1 class="title">ํด๋ํฐ์ผ๋ก ๋ฐ๊ธฐ</h1> |
| <div class="qr-card"><img id="qr-img" class="qr-img" alt="QR ์ฝ๋" /></div> |
| <p class="qr-instr">์๋ ํด๋ํฐ์ผ๋ก QR์ ์ค์บํ์ธ์</p> |
| <div class="link-row"><span class="link-text" id="share-link"></span><button class="btn-copy" id="btn-copy">๋ณต์ฌ</button></div> |
| <div class="note-card">์๋ณธ ์ฌ์ง์ ์๋ฒ์ ์ ์ฅ๋์ง ์์ผ๋ฉฐ, ์ด ๋งํฌ๋ 7์ผ ํ ๋ง๋ฃ๋ฉ๋๋ค.</div> |
| </div> |
| <div class="screen-foot"><button class="btn btn-primary" data-go="done">์๋ฃ</button></div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-done" data-step="6"> |
| <div class="screen-body center-col"> |
| <div class="success-check">โ</div> |
| <h1 class="title">์ ๋ฌ ์ค๋น ์๋ฃ</h1> |
| <img id="done-thumb" class="done-thumb" alt="๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ" /> |
| <p class="fineprint">์๋์ด QR๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ์ฅํ ์ ์์ด์.</p> |
| </div> |
| <div class="screen-foot"><button class="btn btn-primary" id="done-home">์ฒ์์ผ๋ก</button></div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-error"> |
| <div class="screen-body center-col"> |
| <div class="error-mark">!</div> |
| <h1 class="title" id="error-title">๋ค์ ์๋ํด ์ฃผ์ธ์</h1> |
| <p class="error-msg" id="error-msg"></p> |
| </div> |
| <div class="screen-foot"> |
| <button class="btn btn-primary" id="error-retry">๋ค์ ์๋</button> |
| <button class="btn btn-text" data-go="landing">์ฒ์์ผ๋ก</button> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-share"> |
| <div class="share-head"><p class="brand-logo small">LeeChard</p></div> |
| <div class="screen-body center-col"> |
| |
| |
| <div class="share-tabs" id="share-tabs" hidden> |
| <button type="button" class="share-tab active" id="tab-photo">์ฌ์ง</button> |
| <button type="button" class="share-tab" id="tab-video">์์</button> |
| </div> |
| <div class="share-frame" id="share-photo-wrap"><img id="share-img" class="share-img" alt="AI ๊ฒฐ๊ณผ" /></div> |
| <div class="share-frame" id="share-video-wrap" hidden> |
| <video id="share-video" class="share-video" controls playsinline loop muted></video> |
| </div> |
| <button class="btn btn-primary" id="share-save">๐ฅ ์ฌ์ง ์ ์ฅ</button> |
| <p class="disclosure">AI๋ก ์์ฑยทํธ์ง๋ ๊ฐ์ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์
๋๋ค.</p> |
| <p class="fineprint">์ ์ฅ ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ฐค๋ฌ๋ฆฌ์ ์ ์ฅ๋ผ์ ยท ๋งํฌ๋ 7์ผ ํ ๋ง๋ฃ๋ฉ๋๋ค.</p> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-expired"> |
| <div class="screen-body center-col"> |
| <div class="error-mark muted">โณ</div> |
| <h1 class="title">๋งํฌ๊ฐ ๋ง๋ฃ๋์์ต๋๋ค</h1> |
| <p class="error-msg">์ด ๊ณต์ ๋งํฌ๋ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ด์.</p> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-access"> |
| <div class="screen-body center-col"> |
| <p class="brand-logo">LeeChard</p> |
| <h1 class="title">์ ์ ์ฝ๋ ์
๋ ฅ</h1> |
| <p class="fineprint">๋งค์ฅ์์ ๋ฐ์ ์ฝ๋๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์</p> |
| <input id="access-input" class="code-input" type="password" inputmode="text" autocomplete="off" placeholder="์ ์ ์ฝ๋" /> |
| <p class="error-msg" id="access-error" hidden>์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์์</p> |
| </div> |
| <div class="screen-foot"><button class="btn btn-primary" id="access-go">์
์ฅ</button></div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-recent"> |
| <header class="topbar"><button class="icon-btn" data-go="landing" aria-label="๋ค๋ก">โน</button><span class="topbar-title">์์
๋ด์ญ</span><button class="icon-btn" id="recent-refresh" aria-label="์๋ก๊ณ ์นจ" title="์๋ก๊ณ ์นจ">โป</button></header> |
| <div class="screen-body"> |
| <p class="recent-note">๋งค์ฅ์์ ๋ง๋ ์ต๊ทผ ์์
์ด์์ ยท ์ด๋ ํ๋ธ๋ฆฟ์์๋ ๋ณด์ฌ์</p> |
| <div class="recent-grid" id="recent-grid"></div> |
| <p class="recent-empty" id="recent-empty" hidden>์์ง ์์
๋ด์ญ์ด ์์ด์.<br />์ฌ์ง์ ๋ง๋ค๋ฉด ์ฌ๊ธฐ์ ๋ชจ์ฌ์.</p> |
| </div> |
| </section> |
|
|
| |
| <section class="screen" id="screen-recent-view"> |
| <header class="topbar"><button class="icon-btn" data-go="recent" aria-label="๋ค๋ก">โน</button><span class="topbar-title">๊ฒฐ๊ณผ ๋ณด๊ธฐ</span><span class="icon-btn ghost"></span></header> |
| <div class="screen-body center-col"> |
| <div class="share-tabs" id="rv-tabs" hidden> |
| <button type="button" class="share-tab active" id="rv-tab-photo">์ฌ์ง</button> |
| <button type="button" class="share-tab" id="rv-tab-video">์์</button> |
| </div> |
| <div class="share-frame" id="rv-photo-wrap"><img id="rv-img" class="share-img" alt="AI ๊ฒฐ๊ณผ" /></div> |
| <div class="share-frame" id="rv-video-wrap" hidden><video id="rv-video" class="share-video" controls playsinline loop></video></div> |
| <p class="disclosure">AI๋ก ์์ฑยทํธ์ง๋ ๊ฐ์ ๊ฒฐ๊ณผ์
๋๋ค.</p> |
| </div> |
| <div class="screen-foot"> |
| <button class="btn btn-primary" id="rv-save">๐ฅ ์ ์ฅ</button> |
| <div class="link-row"><span class="link-text" id="recent-link"></span><button class="btn-copy" id="recent-copy">๋ณต์ฌ</button></div> |
| </div> |
| </section> |
| </main> |
|
|
| <input id="photo-input" type="file" accept="image/*" capture="environment" hidden /> |
| <div class="toast" id="toast" role="status" aria-live="polite"></div> |
| <script src="/static/js/app.js?v=21" defer></script> |
| </body> |
| </html> |
|
|