@import"https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;600;700&display=swap";:root{--bg: #f4f3fb;--surface: #ffffff;--ink: #2d3142;--muted: #62666f;--slate: #adacb5;--accent: #2d3142;--accent-soft: #eae8ff;--accent-bright: #b0d7ff;--border: #d8d5db;--great: #14432f;--great-bg: #d8f3dc;--good: #17325a;--good-bg: #dbe9ff;--caution: #5e4400;--caution-bg: #fdf3d8;--avoid: #6f1d1d;--avoid-bg: #fbe0e0;--heading-font: "Playfair Display", Georgia, serif;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:880px;margin:0 auto;padding:16px 20px 64px}.app-header{padding:24px 0 8px}.logo{display:flex;align-items:center;gap:12px}.logo-icon{font-size:2rem}.logo h1{margin:0;font-family:var(--heading-font);font-size:2rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600}.tagline{margin:0;color:var(--muted);font-size:.9rem;letter-spacing:.04em}.tabs{display:flex;gap:4px;margin:16px 0 24px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:4px;overflow-x:auto}.tab{flex:1;border:none;background:transparent;padding:10px 14px;border-radius:9px;font-size:.95rem;cursor:pointer;color:var(--muted);white-space:nowrap;transition:all .15s}.tab:hover{color:var(--ink)}.tab.active{background:var(--accent-soft);color:var(--ink);font-weight:600}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;margin-bottom:16px}.card h2{margin:0 0 4px;font-family:var(--heading-font);font-size:1.35rem;font-weight:600}.card h3{margin:0 0 8px;font-family:var(--heading-font);font-size:1.1rem;font-weight:600}.muted{color:var(--muted);font-size:.9rem}.empty{text-align:center;padding:24px 0}.btn{border:1px solid var(--border);background:var(--surface);color:var(--ink);padding:9px 16px;border-radius:9px;font-size:.92rem;cursor:pointer;transition:all .15s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.primary:hover{background:#1b1f2e}.btn.primary:disabled:hover{background:var(--ink)}.btn.small{padding:4px 10px;font-size:.8rem}.btn.danger:hover{border-color:var(--avoid);color:var(--avoid)}.btn.link{border:none;background:none;color:var(--ink);padding:8px 0;margin-right:18px;text-decoration:underline;text-underline-offset:3px}.btn.link:hover{color:#1b1f2e}.btn:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{border:1px solid var(--border);border-radius:9px;padding:9px 12px;font-size:.92rem;font-family:inherit;background:var(--surface);color:var(--ink);width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.import-row{display:flex;gap:8px;margin:12px 0}.import-row input,.import-row select{flex:1}.form-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}.form-row label{flex:1;min-width:130px;display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.search-spinner{align-self:center;font-size:1rem}.url-row{margin-top:4px}.manual-form{display:flex;flex-direction:column;gap:10px;margin:12px 0}.field-label{display:block;font-size:.85rem;color:var(--muted);margin:10px 0 6px}.error{color:var(--avoid);background:var(--avoid-bg);padding:10px 14px;border-radius:9px;font-size:.9rem}.notice{color:var(--great);background:var(--great-bg);padding:10px 14px;border-radius:9px;font-size:.9rem}.search-hits li.owned button{opacity:.55}.search-hits li.owned button small{color:var(--great);font-style:italic}.alerts-pane .alerts-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.alerts-head h3{margin:0;display:flex;align-items:center;gap:8px}.alert-count{background:var(--accent);color:#fff;border-radius:999px;font-size:.75rem;padding:1px 8px;font-weight:600}.alerts-actions{display:flex;gap:6px}.alert-group{margin-bottom:14px}.alert-group h4{margin:0 0 6px;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.insight{position:relative}.alert-body{padding-right:34px}.alert-row{display:block}.alert-row p{margin:0}.btn.dismiss{position:absolute;top:6px;right:6px;width:24px;height:24px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:6px;opacity:.55;line-height:1}.btn.dismiss:hover{opacity:1}.chip{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--bg);border:1px solid var(--border);font-size:.78rem;color:var(--muted);margin:2px 4px 2px 0}.chip.role{background:var(--accent-soft);border-color:transparent;color:var(--ink);font-weight:500}.chip.category{background:#e5f2ff;border-color:transparent;color:#1d3557;text-transform:capitalize}.chip.toggle{cursor:pointer;font-size:.85rem;padding:7px 14px}.chip.toggle.on{background:var(--accent);color:#fff;border-color:var(--accent)}.chip-select{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.search-details{margin:8px 0}.search-details summary{cursor:pointer;color:var(--accent);font-size:.9rem;padding:6px 0}.search-hits{list-style:none;margin:8px 0 0;padding:0;max-height:260px;overflow-y:auto}.search-hits li button{display:flex;flex-direction:column;width:100%;text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:9px;padding:9px 12px;margin-bottom:6px;cursor:pointer;font-size:.9rem}.search-hits li button:hover{border-color:var(--accent)}.search-hits li small{color:var(--muted)}.product-list{display:flex;flex-direction:column;gap:12px}.product-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.product-thumb{border-radius:10px;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}.product-thumb.fallback{display:flex;align-items:center;justify-content:center;background:var(--bg);font-size:1.6rem}.product-info{flex:1;min-width:0}.category-hint{margin-top:10px;font-size:.82rem}.product-actions-column{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.product-actions{display:flex;gap:6px}.catalog-score{margin:10px 0 4px;font-size:1rem}.inci-item.flagged .inci-name{color:var(--avoid);font-weight:600}.layering-note{margin:4px 0 8px;font-size:.82rem}.alert-count.has-warn{background:var(--avoid)}.alerts-trigger{position:relative}.product-brand{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.product-meta{display:flex;flex-wrap:wrap;margin-top:6px}.product-actions{display:flex;gap:6px;flex-shrink:0}.inci-list{margin-top:14px;padding-top:14px;border-top:1px dashed var(--border);max-height:340px;overflow-y:auto}.inci-item{display:flex;flex-direction:column;padding:7px 0;border-bottom:1px solid var(--bg);font-size:.88rem}.inci-name{font-weight:500}.inci-funcs{font-size:.78rem;color:var(--muted);font-style:italic}.source-link{display:inline-block;margin-top:10px;font-size:.82rem}.sync-row{display:flex;align-items:center;gap:12px;margin:12px 0 4px}.sync-status{margin:4px 0 0}.sync-plan{margin-top:10px}.sync-plan summary{cursor:pointer;color:var(--accent);font-size:.9rem}.sync-plan ul{list-style:none;padding:8px 0 0;margin:0}.sync-plan li{padding:8px 0;border-bottom:1px solid var(--bg)}.sync-plan li p{margin:4px 0 0}.suggestions-card h3{margin-bottom:4px}.step-info{flex:1;min-width:0}.step-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.insight-why{margin:2px 0 6px}.insight-products{margin:0}.routine-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.score{font-size:.9rem;font-weight:600;padding:5px 14px;border-radius:999px}.score.clickable{cursor:pointer;border:none;transition:transform .1s}.score.clickable:hover{transform:scale(1.05)}.popup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2d2a2673;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.popup-banner{background:var(--surface);border-radius:16px;padding:24px;max-width:560px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #00000040}.popup-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.popup-head h3{margin:0}.popup-banner h4{margin:16px 0 8px;font-size:.9rem;color:var(--muted)}.score-delta{font-size:.78rem;font-weight:700;padding:1px 7px;border-radius:999px;margin-left:6px}.score-delta.neg{background:var(--avoid-bg);color:var(--avoid)}.score-delta.pos{background:var(--great-bg);color:var(--great)}.alert-title{font-weight:600;margin-bottom:4px}.alert-detail{margin-top:4px}.bonus-grid{display:flex;flex-wrap:wrap;gap:6px}.bonus-item{background:var(--great-bg);color:var(--great);border-radius:999px;padding:5px 12px;font-size:.82rem;font-weight:500}.score.great,.score.good{background:var(--great-bg);color:var(--great)}.score.caution{background:var(--caution-bg);color:var(--caution)}.score.avoid{background:var(--avoid-bg);color:var(--avoid)}.routine-steps{list-style:none;margin:12px 0;padding:0;counter-reset:step}.routine-steps li{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--bg);counter-increment:step}.routine-steps li:before{content:counter(step);flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:600}.step-main{display:flex;gap:10px;align-items:flex-start;flex:1}.slot{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--bg);border-radius:6px;padding:2px 8px;margin-top:3px;flex-shrink:0}.insight{border-radius:10px;padding:12px 14px;margin-top:10px;font-size:.88rem}.insight-head{display:flex;justify-content:space-between;gap:10px;font-weight:600;margin-bottom:4px}.pair-names{font-weight:500;font-size:.82rem}.insight p{margin:0}.insight.great{background:var(--great-bg);color:var(--great)}.insight.good{background:var(--good-bg);color:var(--good)}.insight.caution{background:var(--caution-bg);color:var(--caution)}.insight.avoid{background:var(--avoid-bg);color:var(--avoid)}.stats-row{display:flex;gap:24px;margin:14px 0}.stat-value{font-size:1.4rem;font-weight:700}.stat-label{font-size:.8rem;color:var(--muted)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.photo-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.photo-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.photo-meta{display:flex;justify-content:space-between;padding:8px 10px 4px;font-size:.85rem}.photo-actions{display:flex;gap:6px;padding:4px 10px 10px}.photo-actions .btn{flex:1}.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.compare-grid img{width:100%;border-radius:10px;aspect-ratio:1;object-fit:cover}.compare-grid figcaption{text-align:center;font-size:.85rem;margin-top:6px}.log-history{display:flex;flex-direction:column;gap:10px}.log-card .log-head{display:flex;align-items:center;gap:10px}.log-card .log-head .danger{margin-left:auto}.mood{font-size:1.2rem}.log-note{margin:8px 0;font-size:.92rem}.log-photo{width:120px;border-radius:8px;margin-top:8px}.thumb{width:72px;height:72px;object-fit:cover;border-radius:8px}.photo-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.category-section{margin-bottom:28px}.category-title{display:flex;align-items:center;gap:8px;font-family:var(--heading-font);font-size:1.15rem;font-weight:600;margin:0 0 10px;padding-bottom:6px;border-bottom:2px solid var(--accent-soft)}.category-title .count{font-family:inherit;font-size:.8rem;color:var(--muted);font-weight:400}.score-ring{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:52px;height:52px;border-radius:50%;font-weight:700;font-size:1.05rem;flex-shrink:0}.score-ring .of{font-size:.6rem;font-weight:400;opacity:.85}.score-ring.clickable{cursor:pointer;border:none;transition:transform .1s}.score-ring.clickable:hover{transform:scale(1.08)}.score-ring.inline{min-width:44px;height:44px;font-size:.95rem;vertical-align:middle}.popup-head h3{display:flex;align-items:center;gap:10px}.score-breakdown{margin:12px 0;display:flex;flex-direction:column;gap:6px}.breakdown-row{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:8px 12px;font-size:.9rem;font-weight:500}.breakdown-row.pos{background:var(--great-bg);color:var(--great)}.breakdown-row.neg{background:var(--avoid-bg);color:var(--avoid)}.breakdown-row .delta{font-weight:700}.breakdown-list{margin:0 0 4px;padding:0 12px;font-size:.82rem}.flagged-list{list-style:none;padding:0 12px;margin:0;font-size:.84rem;color:var(--avoid)}.flagged-list li{padding:3px 0}.flag-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.flag{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 10px;font-size:.78rem;font-weight:500}.flag.comedogenic{background:var(--avoid-bg);color:var(--avoid)}.flag.drying-alcohol{background:var(--caution-bg);color:var(--caution)}.flag.goodie{background:var(--great-bg);color:var(--great)}.alerts-fab-row{display:flex;justify-content:flex-start;margin-bottom:14px}.alerts-popup .popup-banner{max-width:640px}.alert-summary{font-size:.85rem}@media (max-width: 600px){.compare-grid{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.alerts-popup .popup-banner{max-width:100%}}.tabs{position:sticky;top:calc(env(safe-area-inset-top,0px) + 8px);z-index:50;box-shadow:0 2px 12px #2d31420f}@media (max-width: 600px){.app{padding:calc(env(safe-area-inset-top,0px) + 10px) calc(env(safe-area-inset-right,0px) + 14px) calc(env(safe-area-inset-bottom,0px) + 28px) calc(env(safe-area-inset-left,0px) + 14px)}.app-header{padding:12px 0 4px}.logo h1{font-size:1.6rem}.logo-icon{font-size:1.7rem}.tabs{gap:2px;padding:3px;margin:12px 0 18px}.tab{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px 7px;font-size:.7rem;line-height:1.15;white-space:normal}.tab .tab-icon{font-size:1.15rem;margin:0}input,select,textarea{font-size:16px}.btn{min-height:44px;padding:10px 16px}.btn.small{min-height:38px;padding:8px 12px}.chip.toggle{min-height:40px}.card{padding:16px;border-radius:12px}.card h2{font-size:1.2rem}.card h3{font-size:1.05rem}.import-row{flex-wrap:wrap}.import-row input,.import-row select{flex:1 1 160px}.import-row .btn{flex:0 0 auto}.form-row label{min-width:100%}.product-head{flex-wrap:wrap}.product-actions-column{flex:1 1 auto;flex-direction:row;justify-content:space-between;align-items:center}.product-actions{margin-left:auto}.stats-row{gap:18px;flex-wrap:wrap}.photo-row,.sync-row{flex-wrap:wrap}.popup-overlay{align-items:flex-end;padding:10px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 10px)}.popup-banner{max-height:85dvh;max-width:100%;padding:18px 16px;border-radius:16px 16px 12px 12px;-webkit-overflow-scrolling:touch}.compare-grid{gap:8px}.inci-list,.search-hits{-webkit-overflow-scrolling:touch}.btn.dismiss{width:28px;height:28px}.btn.dismiss:before{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px}}@media (max-width: 360px){.app-header .tagline{font-size:.82rem}.logo h1{font-size:1.45rem;letter-spacing:.08em}.tab{font-size:.66rem}.card h2{font-size:1.12rem}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}}@media (min-width: 601px){.tabs{position:static;box-shadow:none}}
