:root{color:#151515;background:#fbf7ef;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0;background:linear-gradient(135deg,#fffdf9,#f8efe3 48%,#fff)}button{font:inherit}.app-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:34px 0 72px}.hero-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,440px);gap:48px;min-height:650px;align-items:center}.hero-copy{max-width:720px}.eyebrow,.preview-label,.result-label{display:block;margin:0 0 10px;color:#8a7058;font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}h1,h2,p{margin:0}h1{max-width:760px;font-size:clamp(2.5rem,6vw,5.6rem);line-height:1.04;letter-spacing:0}h2{color:#161616;font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.14;letter-spacing:0}p{color:#696057;line-height:1.75}.hero-description{max-width:620px;margin-top:22px;font-size:1.12rem}.primary-button,.secondary-button{min-height:48px;border:0;border-radius:8px;padding:0 22px;cursor:pointer;font-weight:800;transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,color .18s ease}.primary-button{background:#151515;color:#fff;box-shadow:0 12px 26px #0000002e}.secondary-button{border:1px solid #d8cfc1;background:#fffaf2;color:#1f1b17}.primary-button:hover,.secondary-button:hover{transform:translateY(-2px)}.primary-button:hover{background:#2a2825;box-shadow:0 16px 30px #00000038}.secondary-button:hover{background:#fff;box-shadow:0 12px 22px #503e2a1a}.primary-button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.55;transform:none;box-shadow:none}.hero-button{margin-top:34px}.hero-preview{position:relative;display:grid;gap:18px;justify-items:center}.preview-orbit{display:grid;width:min(100%,360px);min-height:430px;place-items:center;border:1px solid rgb(214 202 187 / 78%);border-radius:8px;background:linear-gradient(180deg,#ffffffd1,#f6eee3e0),#fffaf4;box-shadow:0 30px 70px #36291b1f}.perfume-bottle{display:grid;justify-items:center;filter:drop-shadow(0 28px 26px rgb(31 26 22 / 18%))}.bottle-cap,.bottle-neck,.bottle-body{display:block}.bottle-cap{width:76px;height:34px;border:1px solid #d9ccb7;border-radius:8px 8px 4px 4px;background:linear-gradient(180deg,#fefcf8,#d6c8b5)}.bottle-neck{width:42px;height:32px;border-right:1px solid #d2c5b3;border-left:1px solid #d2c5b3;background:#fffaf2}.bottle-body{display:grid;width:190px;height:245px;place-items:center;border:1px solid #d4c5b1;border-radius:8px;background:linear-gradient(135deg,#ffffffe0,#f6ead9d1),#fbf5eb}.bottle-body span{display:grid;width:96px;height:96px;place-items:center;border:1px solid #cab89f;border-radius:50%;color:#2d2924;font-family:Georgia,Times New Roman,serif;font-size:1.3rem}.preview-card{width:min(100%,360px);margin-top:-68px;border:1px solid rgb(218 207 193 / 85%);border-radius:8px;padding:20px;background:#fffdf8eb;box-shadow:0 22px 48px #352a1d1f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.preview-card strong{display:block;color:#171717;font-size:1.25rem}.preview-card p{margin-top:8px;font-size:.94rem}.section-heading{max-width:720px;margin-bottom:22px}.section-heading p:last-child{margin-top:8px}.camera-section,.history-section,.steps-section{padding-top:68px}.analysis-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:22px;align-items:stretch}.camera-card,.result-card,.history-card,.step-card,.history-empty{border:1px solid rgb(218 208 195 / 88%);border-radius:8px;background:#fffdf8f0;box-shadow:0 20px 54px #34281c17}.camera-card{padding:16px}.camera-frame{position:relative;display:grid;min-height:500px;overflow:hidden;place-items:center;border:1px solid #ded4c7;border-radius:8px;background:linear-gradient(135deg,#ffffffb8,#f1e8dbbd),#f5eee4}.camera-frame.is-active{background:#111}.camera-video{width:100%;height:100%;min-height:500px;object-fit:cover}.camera-placeholder{display:grid;max-width:360px;gap:10px;justify-items:center;padding:28px;text-align:center}.camera-placeholder strong{color:#22201d;font-size:1.08rem}.camera-placeholder-mark{width:64px;height:64px;border:1px solid #cebda8;border-radius:50%;background:linear-gradient(#22201d,#22201d) center / 24px 2px no-repeat,linear-gradient(90deg,#22201d,#22201d) center / 2px 24px no-repeat,#fffaf1}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;gap:16px;place-content:center;background:#1111119e;color:#fff;text-align:center}.loading-spinner{width:48px;height:48px;justify-self:center;border:3px solid rgb(255 255 255 / 34%);border-top-color:#fff;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.capture-canvas{display:none}.camera-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}.camera-message,.error-message{margin-top:14px;border:1px solid #e7b4a5;border-radius:8px;padding:12px 14px;background:#fff1ed;color:#9b3c2d}.result-card{display:flex;min-height:100%;flex-direction:column;padding:24px}.result-header{display:flex;gap:14px;align-items:start;justify-content:space-between}.temporary-badge{border:1px solid #d7c3a8;border-radius:999px;padding:7px 10px;background:#fff6e8;color:#7a5730;font-size:.78rem;font-weight:800;white-space:nowrap}.empty-state{display:grid;min-height:280px;place-content:center;gap:8px;text-align:center}.empty-state strong{color:#24211d;font-size:1.08rem}.result-content{display:grid;gap:22px;margin-top:22px}.style-summary{border-bottom:1px solid #e6ddd2;padding-bottom:20px}.style-summary strong{display:block;color:#151515;font-size:clamp(2rem,5vw,3.6rem);line-height:1.05}.tag-row,.badge-row{display:flex;flex-wrap:wrap;gap:8px}.badge-row{margin-top:16px}.keyword-tag,.note-badge,.mini-note{display:inline-flex;min-height:32px;align-items:center;border-radius:999px;font-weight:800}.keyword-tag{border:1px solid #ded4c7;padding:6px 10px;background:#fffaf3;color:#5c5146;font-size:.86rem}.note-badge{border:1px solid #cbb89c;padding:7px 12px;background:#f4eadb;color:#312a22;font-size:.9rem}.mood-copy{border-left:2px solid #151515;padding-left:14px}.history-grid,.steps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.history-empty{grid-column:1 / -1;padding:28px;color:#756b61;text-align:center}.history-card,.step-card{display:grid;gap:12px;min-height:190px;padding:20px}.history-card span:first-child,.step-card span{color:#8a7058;font-size:.82rem;font-weight:900}.history-card strong,.step-card strong{color:#171717;font-size:1.18rem}.mini-note{border:1px solid #dbcdb9;padding:5px 9px;background:#fbf4ea;color:#675544;font-size:.78rem}.admin-shell{display:grid;gap:18px}.admin-header{display:flex;gap:20px;align-items:start;justify-content:space-between;padding:42px 0 18px}.admin-header h1{max-width:820px;font-size:clamp(2.1rem,5vw,4.4rem)}.admin-header p:last-child{margin-top:12px}.secondary-link{display:inline-flex;min-height:44px;align-items:center;border:1px solid #d8cfc1;border-radius:8px;padding:0 16px;background:#fffaf2;color:#1f1b17;font-weight:800;text-decoration:none;white-space:nowrap}.admin-panel,.perfume-editor,.factor-editor,.admin-save-bar{border:1px solid rgb(218 208 195 / 88%);border-radius:8px;background:#fffdf8f0;box-shadow:0 20px 54px #34281c17}.admin-panel{padding:22px}.admin-section-heading{margin-bottom:16px}.admin-section-heading h2{font-size:1.45rem}.admin-heading-row{display:flex;gap:16px;align-items:start;justify-content:space-between}.admin-textarea,.perfume-editor input,.perfume-editor textarea,.factor-editor input,.factor-editor textarea{width:100%;border:1px solid #d8cfc1;border-radius:8px;padding:12px 13px;background:#fffaf3;color:#171717;font:inherit;line-height:1.55}.admin-textarea,.perfume-editor textarea,.factor-editor textarea{resize:vertical}.perfume-editor-list{display:grid;gap:14px}.perfume-editor,.factor-editor{display:grid;gap:14px;padding:16px}.admin-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.perfume-editor label,.factor-editor label{display:grid;gap:7px;color:#4d4338;font-size:.9rem;font-weight:800}.compact-grid{max-width:420px}.range-editor{display:grid;gap:10px;border-top:1px solid #eadfd1;padding-top:14px}.range-editor>strong{color:#171717}.range-row{display:grid;grid-template-columns:minmax(120px,1fr) 120px 120px;gap:10px;align-items:end}.range-row>span{align-self:center;color:#4d4338;font-weight:900}.text-button{width:fit-content;border:0;padding:0;background:transparent;color:#9b3c2d;cursor:pointer;font-weight:900}.admin-save-bar{position:sticky;bottom:16px;display:flex;gap:12px;align-items:center;justify-content:flex-end;padding:14px}.admin-save-bar .error-message,.admin-save-bar .success-message{margin:0 auto 0 0}.success-message{border:1px solid #a8cfb4;border-radius:8px;padding:12px 14px;background:#effaf2;color:#246135}.app-shell:not(.admin-shell){width:100%;margin:0;padding:0}.app-shell:not(.admin-shell) .camera-section{position:relative;display:grid;width:100%;min-height:100svh;padding:0;overflow:hidden;background:#050505}.app-shell:not(.admin-shell) .camera-frame{width:100%;min-height:100svh;border:0;border-radius:0;background:#111}.app-shell:not(.admin-shell) .camera-video{width:100%;height:100svh;min-height:100svh;object-fit:cover}.app-shell:not(.admin-shell) .camera-placeholder{color:#fff}.app-shell:not(.admin-shell) .camera-placeholder strong{color:#fff;font-size:clamp(2rem,4vw,4.8rem)}.app-shell:not(.admin-shell) .camera-placeholder p{display:none}.app-shell:not(.admin-shell) .camera-placeholder-mark{width:120px;height:120px;border-color:#ffffff7f;background:linear-gradient(#fff,#fff) center / 46px 4px no-repeat,linear-gradient(90deg,#fff,#fff) center / 4px 46px no-repeat,#ffffff1a}.app-shell:not(.admin-shell) .analyze-button{position:absolute;right:50%;bottom:max(34px,env(safe-area-inset-bottom));z-index:2;min-width:260px;min-height:72px;border:2px solid rgb(255 255 255 / 72%);border-radius:999px;background:#ffffffeb;color:#111;box-shadow:0 18px 44px #0000004d;transform:translate(50%);font-size:1.35rem}.app-shell:not(.admin-shell) .analyze-button:hover{background:#fff;box-shadow:0 22px 52px #00000057;transform:translate(50%) translateY(-2px)}.app-shell:not(.admin-shell) .camera-message{position:absolute;right:24px;bottom:122px;left:24px;z-index:3;max-width:680px;margin:0 auto;text-align:center}.result-section .error-message{position:static;max-width:980px;margin:0 auto 22px;text-align:left}.result-section{display:grid;min-height:100svh;align-items:center;padding:clamp(42px,7vw,86px);background:#fff}.result-section:empty{display:none}.result-section .result-content{width:min(100%,1120px);margin:0 auto;gap:clamp(24px,4vw,44px)}.result-section .style-summary{border-bottom:1px solid #e5e5e5;padding-bottom:clamp(24px,4vw,42px)}.result-section .style-summary strong{margin-top:10px;font-size:clamp(3.4rem,8vw,7.8rem)}.result-section .style-summary p,.result-section .mood-copy p{max-width:980px;margin-top:20px;color:#2d2d2d;font-size:clamp(1.35rem,2.2vw,2.1rem);line-height:1.55}.result-section .result-label{color:#555;font-size:clamp(.95rem,1.4vw,1.25rem)}.result-section .tag-row{gap:14px;margin-top:16px}.result-section .keyword-tag{min-height:54px;border-color:#d7d7d7;padding:10px 18px;background:#f6f6f6;color:#111;font-size:clamp(1rem,1.6vw,1.35rem)}.recommended-list{display:grid;gap:12px;margin-top:16px}.recommended-item{display:grid;grid-template-columns:minmax(240px,1fr) auto;gap:8px 18px;border:1px solid #e2e2e2;border-radius:8px;padding:18px;background:#fafafa}.recommended-item strong{color:#111;font-size:clamp(1.2rem,2vw,1.7rem)}.recommended-item span{align-self:center;color:#111;font-weight:900}.recommended-item p{grid-column:1 / -1;color:#444;font-size:clamp(1rem,1.4vw,1.2rem)}@media(max-width:960px){.hero-section,.analysis-layout{grid-template-columns:1fr}.hero-section{gap:32px;min-height:auto;padding:56px 0 18px}.hero-preview{justify-items:stretch}.preview-orbit,.preview-card{width:100%}.history-grid,.steps-grid{grid-template-columns:1fr}}@media(max-width:640px){.app-shell{width:min(100% - 24px,1180px);padding-bottom:46px}h1{font-size:2.45rem}.hero-description{font-size:1rem}.camera-section,.history-section,.steps-section{padding-top:48px}.camera-frame,.camera-video{min-height:360px}.camera-actions,.camera-actions button{width:100%}.result-header{display:grid}.temporary-badge{justify-self:start}.result-card{padding:18px}.admin-header,.admin-heading-row,.admin-save-bar{display:grid}.admin-form-grid,.range-row,.recommended-item{grid-template-columns:1fr}.admin-save-bar .primary-button,.secondary-link{width:100%;justify-content:center}}
