/* v2.1 modern, neutral design system. No external font dependencies. */
500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400&display=swap');
:root{--bg:#111714;--panel:#1c251f;--panel2:#222e27;--line:#354439;--text:#f4f2e8;--muted:#a9b5a9;--gold:#d5b985;--accent:#b9d4a0;--red:#f0ab9d}*{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px 'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:var(--accent);text-decoration:none}.hidden{display:none!important}.topbar{position:sticky;top:0;z-index:10;height:79px;display:flex;align-items:center;justify-content:space-between;padding:0 max(23px,calc((100vw - 1140px)/2));background:rgba(17,23,20,.95);backdrop-filter:blur(20px);border-bottom:1px solid #29372c}.brand{display:flex;align-items:center;gap:13px}.brandmark{width:37px;height:37px;border:1px solid var(--gold);color:var(--gold);display:grid;place-items:center;border-radius:50%;font-size:23px}.eyebrow,.mini-label{display:block;color:var(--gold);letter-spacing:2.1px;font-size:9px;font-weight:700}.brandname{font:500 17px Georgia,serif;letter-spacing:1.1px;margin-top:4px}.brandname em{font-style:normal;color:var(--gold)}.add-top,.primary{background:var(--gold);color:#1a1e17;border:0;border-radius:9px;padding:13px 16px;font-weight:700}.add-top{font-size:16px}.add-top span{font-size:12px}#main{max-width:1140px;margin:auto;padding:34px 24px 108px;min-height:calc(100vh - 155px)}h1,h2,h3,p{margin:0}h1,h2,h3,.serif{font-family:'Playfair Display',Georgia,serif;font-weight:500}h1{font-size:clamp(32px,5vw,55px);line-height:1.13;letter-spacing:-1.1px}h2{font-size:27px}h3{font-size:20px}.hero{position:relative;overflow:hidden;border:1px solid #455343;background:radial-gradient(circle at 84% 34%,#465c3e 0,transparent 40%),linear-gradient(125deg,#26352a,#19251d 80%);border-radius:17px;padding:44px 39px;margin-bottom:27px}.hero p{margin-top:14px;max-width:500px;line-height:1.7;color:#d0d9c9}.hero::after{content:'✦';position:absolute;right:10%;top:8%;font:190px Georgia;color:#b4cb9d15;pointer-events:none}.hero-actions{display:flex;gap:9px;margin-top:23px;flex-wrap:wrap}.outline,.ghost{border:1px solid var(--line);background:#27352b;color:var(--text);border-radius:9px;padding:12px 15px;font-weight:600}.ghost{background:transparent}.outline:hover,.ghost:hover,.tile:hover{border-color:var(--gold)}.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:33px}.stat,.panel,.tile,.result,.fragrance-card{border:1px solid var(--line);border-radius:13px;background:var(--panel)}.stat{padding:21px}.stat .value{font:30px 'Playfair Display',Georgia,serif;margin-top:12px}.stat .sub{color:var(--muted);font-size:11px;margin-top:6px}.sectionhead{display:flex;align-items:end;justify-content:space-between;margin:30px 0 15px;gap:14px}.sectionhead p,.subtitle{color:var(--muted);line-height:1.65;margin-top:7px}.sectionhead button{white-space:nowrap}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.tile{text-align:left;padding:21px;min-height:160px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;color:var(--text)}.tile .symbol{font-size:24px;color:var(--gold)}.tile p{font-size:12px;color:var(--muted);line-height:1.6;margin-top:7px}.panel{padding:22px;margin:15px 0}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:20px 0}.field,input,select,textarea{background:#101a14;color:var(--text);border:1px solid #415043;border-radius:9px;outline:none}input,select,textarea{padding:12px 13px;width:100%}textarea{resize:vertical;min-height:84px}input:focus,select:focus,textarea:focus{border-color:var(--gold)}.searchbox{flex:1;min-width:190px}.toolbar select{width:auto;min-width:135px}.chipbar{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.chip{border:1px solid var(--line);background:#1d2b22;border-radius:30px;padding:8px 12px;color:var(--muted);font-size:12px}.chip.selected{background:#e1c997;color:#1d241b;border-color:#e1c997;font-weight:700}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.fragrance-card{padding:20px;display:flex;flex-direction:column;gap:12px;min-height:210px}.card-top{display:flex;justify-content:space-between;align-items:center;gap:12px}.badge{display:inline-flex;align-items:center;border:1px solid #50634a;color:var(--accent);border-radius:30px;font-size:10px;font-weight:700;padding:5px 9px;letter-spacing:.4px}.badge.wishlist{color:var(--gold);border-color:#796844}.badge.tested{color:#b8cde1;border-color:#536576}.card-brand{color:var(--gold);font-size:10px;letter-spacing:1.4px;font-weight:700;text-transform:uppercase}.fragrance-card h3{font-size:22px;margin-top:7px}.card-metadata{color:var(--muted);font-size:12px;line-height:1.6;flex:1}.card-actions{display:flex;gap:8px;flex-wrap:wrap}.small{padding:9px 12px;font-size:12px}.empty{border:1px dashed #516151;border-radius:14px;padding:42px 20px;text-align:center;color:var(--muted)}.empty h3{color:var(--text);margin-bottom:8px}.empty .outline{margin-top:17px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.form-grid label{font-size:11px;color:var(--muted);display:flex;flex-direction:column;gap:7px}.form-grid .full{grid-column:1/-1}.form-grid label strong{font-weight:600;color:var(--text)}.notesgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:14px 0}.note-block{border:1px solid var(--line);border-radius:9px;padding:14px;background:#142017}.note-block .mini-label{margin-bottom:10px}.note-block p{color:#d7e1d1;line-height:1.5}.result{padding:18px;margin:10px 0}.resulthead{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}.result h3{font-size:22px;margin:6px 0}.result p{color:var(--muted);line-height:1.6;margin:7px 0}.result-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}.notice{border-left:3px solid var(--gold);background:#263025;padding:13px 15px;border-radius:0 8px 8px 0;color:#cdd5c6;line-height:1.6;font-size:12px;margin:14px 0}.error{border-left-color:var(--red)}.loading{padding:23px;color:var(--gold)}.pagehead{margin:8px 0 24px}.pagehead .mini-label{margin-bottom:10px}.pagehead p{color:var(--muted);margin-top:10px;line-height:1.7}.bottomnav{position:fixed;bottom:0;left:0;right:0;height:76px;padding-bottom:env(safe-area-inset-bottom);height:calc(76px + env(safe-area-inset-bottom));background:#142019eb;backdrop-filter:blur(18px);border-top:1px solid var(--line);display:flex;justify-content:center;z-index:12}.bottomnav button{max-width:160px;flex:1;background:none;border:0;color:#9ca99d;font-size:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.bottomnav button.active{color:var(--gold)}.navicon{font-size:23px;line-height:25px}.modal-root{position:fixed;inset:0;z-index:20;display:flex;justify-content:center;align-items:center;padding:20px}.modal-scrim{position:absolute;inset:0;background:#040a06dc}.modal{position:relative;background:#1b271e;border:1px solid #52604f;border-radius:17px;width:min(720px,100%);max-height:calc(100dvh - 40px);overflow-y:auto;padding:25px}.modal-header{display:flex;justify-content:space-between;gap:15px;align-items:start;margin-bottom:22px}.modal-header h2{margin-top:8px}.close{border:1px solid var(--line);background:#2b3a2f;color:var(--text);border-radius:8px;padding:7px 12px}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:21px;flex-wrap:wrap}#toast{position:fixed;z-index:30;bottom:calc(91px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#d2c296;color:#141d16;padding:12px 18px;border-radius:10px;box-shadow:0 8px 30px #0008;display:none;max-width:90vw;text-align:center;font-weight:600}.dupe-row{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin:13px 0}.dupe-box{border:1px solid var(--line);border-radius:12px;padding:16px;background:#152017;min-height:110px}.dupe-box h3{margin-top:8px}.divider{height:1px;background:var(--line);margin:20px 0}.data-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.warning{color:#f1b3a7}.muted{color:var(--muted)}.inline-link{border:0;background:none;color:var(--accent);padding:0;text-decoration:underline;text-underline-offset:3px}.select-multiple{min-height:96px}.tiny{font-size:11px}.offlinestatus{font-size:11px;color:var(--muted);margin-top:10px}.comparetable{width:100%;border-collapse:collapse;margin-top:17px}.comparetable td,.comparetable th{padding:12px 9px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}.comparetable th{color:var(--gold)}.horizontal-scroll{overflow-x:auto}::selection{background:#d4ba8a;color:#182119}@media(max-width:850px){.cards,.tiles{grid-template-columns:repeat(2,1fr)}.statgrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:570px){.topbar{height:69px;padding:0 16px}.brandmark{width:29px;height:29px;font-size:17px}.brand{gap:9px}.brandname{font-size:12px;letter-spacing:.5px}.eyebrow{font-size:8px;letter-spacing:1.2px}.add-top{padding:9px 11px}.add-top span{display:none}#main{padding:22px 15px 120px}.hero{padding:29px 22px}.hero:after{font-size:120px;right:-10px;top:0}.stat{padding:17px}.stat .value{font-size:25px}.cards,.tiles,.two-col{grid-template-columns:1fr}.fragrance-card{min-height:unset}.notesgrid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.modal-root{padding:0;align-items:end}.modal{max-height:94dvh;border-radius:18px 18px 0 0;width:100%;padding:22px 17px calc(22px + env(safe-area-inset-bottom))}.dupe-row{grid-template-columns:1fr}.dupe-row>span{text-align:center}.toolbar select{flex:1}.sectionhead{align-items:start}.bottomnav button{font-size:9px}.navicon{font-size:21px}}

/* Palette and overrides: placed last so v1 hard-coded colours cannot leak through. */
:root,html[data-theme="light"]{color-scheme:light;--bg:#f7f8fa;--panel:#ffffff;--panel2:#f0f2f6;--line:#dfe3ea;--text:#171b25;--muted:#687182;--gold:#4266db;--accent:#315cca;--red:#bb4055;--surface:#ffffff;--field:#fff;--chip:#f1f3f7;--soft:#eef2ff;--bar:rgba(247,248,250,.94)}
html[data-theme="dark"]{color-scheme:dark;--bg:#101217;--panel:#1b1f28;--panel2:#232936;--line:#343a48;--text:#f1f3f8;--muted:#a5adba;--gold:#91a9ff;--accent:#a8baff;--red:#ff9bab;--surface:#1b1f28;--field:#202530;--chip:#252b37;--soft:#222a44;--bar:rgba(16,18,23,.94)}
@media(prefers-color-scheme:dark){html[data-theme="system"]{color-scheme:dark;--bg:#101217;--panel:#1b1f28;--panel2:#232936;--line:#343a48;--text:#f1f3f8;--muted:#a5adba;--gold:#91a9ff;--accent:#a8baff;--red:#ff9bab;--surface:#1b1f28;--field:#202530;--chip:#252b37;--soft:#222a44;--bar:rgba(16,18,23,.94)}}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px}html{background:var(--bg)}h1,h2,h3,.serif{font-family:inherit;font-weight:660;letter-spacing:-.035em}h1{font-size:clamp(34px,5vw,56px)}h2{font-size:24px}h3{font-size:19px}a{color:var(--accent)}.topbar{background:var(--bar);border-bottom:1px solid var(--line)}.brandmark{border:1px solid var(--line);background:var(--panel);color:var(--gold);border-radius:12px}.brandname{font:700 14px -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:-.4px}.brandname em{font-style:normal;color:inherit}.mini-label,.eyebrow,.card-brand{color:var(--muted);letter-spacing:1.15px}.add-top,.primary{background:#4769de;color:white;border-radius:11px}.add-top:hover,.primary:hover{background:#3659cb}.outline,.ghost,.close{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:11px}.outline:hover,.ghost:hover,.tile:hover{border-color:var(--gold)}.hero{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:42px 38px}.hero p{color:var(--muted);max-width:570px}.hero::after{display:none}.hero h1{letter-spacing:-.045em}.stat,.panel,.tile,.result,.fragrance-card{background:var(--panel);border:1px solid var(--line);border-radius:15px;box-shadow:0 2px 6px rgba(0,0,0,.012)}.stat .value{font:700 30px -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:-.045em}.tile .symbol{color:var(--accent)}.card-brand{font-size:11px}.fragrance-card h3,.result h3{font-size:20px}.badge{color:var(--accent);border-color:var(--line);background:var(--soft)}.badge.wishlist{color:var(--accent);border-color:var(--line)}.badge.tested{color:var(--muted);border-color:var(--line)}.field,input,select,textarea{background:var(--field);border:1px solid var(--line);color:var(--text);border-radius:10px}.chip{background:var(--chip);color:var(--muted);border-color:var(--line)}.chip.selected{background:var(--soft);border-color:var(--accent);color:var(--accent)}.note-block,.dupe-box{background:var(--panel2);border:1px solid var(--line)}.note-block p{color:var(--text)}.empty{border-color:var(--line)}.notice{background:var(--soft);color:var(--text);border-left:3px solid var(--accent)}.bottomnav{background:var(--bar);border-color:var(--line)}.bottomnav button{color:var(--muted)}.bottomnav button.active{color:var(--accent)}.modal{background:var(--panel);border:1px solid var(--line)}.modal-scrim{background:rgba(6,9,16,.64)}#toast{background:var(--text);color:var(--bg)}.comparetable th{color:var(--text)}.warning{color:var(--red)}.review-box{border:1px solid var(--line);background:var(--panel2);padding:18px;border-radius:15px;margin-top:20px}.review-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.review-select-label{color:var(--muted);font-size:12px;min-width:128px}.review-select-label select{margin-top:6px}.review-box .form-grid{margin-top:18px}.review-box textarea{min-height:72px}.setting-title{margin-bottom:15px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 0;border-top:1px solid var(--line)}.setting-row>div{flex:1}.setting-row strong{display:block;font-size:14px}.setting-row p{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.5}.setting-row select{width:auto;min-width:128px;max-width:46%}.pagehead{margin-top:5px}
@media(max-width:570px){.hero{padding:31px 23px}.brandname{font-size:12px}.setting-row select{min-width:116px}.review-heading{align-items:flex-start}.stat .value{font-size:27px}}

/* v2.2 dedicated research and test interfaces */
.dna-summary{display:grid;grid-template-columns:170px 1fr;gap:20px;align-items:center;border:1px solid var(--line);background:var(--panel);border-radius:16px;padding:22px;margin:15px 0}.dna-score{font-size:46px;letter-spacing:-.055em;font-weight:750;margin:5px 0;color:var(--accent)}.dna-summary h3{margin-bottom:6px}.lab-select{display:flex;flex-direction:column;gap:9px;font-size:12px;color:var(--muted)}.lab-select select{max-width:100%}.notes-compare{border:1px solid var(--line);border-radius:15px;overflow:hidden;margin:15px 0;background:var(--panel)}.notes-pair{padding:18px 20px;border-bottom:1px solid var(--line)}.notes-pair:last-child{border:0}.notes-pair .two-col{margin-top:9px}.notes-pair .two-col>div{background:var(--panel2);border-radius:8px;padding:12px;font-size:13px;line-height:1.55}.test-entry{border:1px solid var(--line);background:var(--panel2);border-radius:12px;padding:15px;margin:12px 0}.test-entry p:not(.subtitle){margin-top:12px;line-height:1.6}.test-entry-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.tree-groups{display:grid;gap:18px}.tree-family{border:1px solid var(--line);border-radius:15px;background:var(--panel);padding:18px}.tree-root{border-left:3px solid var(--accent);padding:7px 0 7px 15px;margin-bottom:18px}.tree-root h3{margin-top:5px}.tree-branches{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:11px}.tree-node{min-width:0}.tree-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:7px;min-height:125px}.tree-link{margin-top:8px;padding:10px 12px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:11px;line-height:1.5}.tree-card .data-actions{margin:2px 0}.tree-card .mini-label{font-size:9px}.bottomnav button{min-width:0}.bottomnav .navicon{font-size:21px}@media(max-width:570px){.dna-summary{grid-template-columns:1fr}.tree-branches{grid-template-columns:1fr}.bottomnav button{font-size:9px;gap:3px}.bottomnav .navicon{font-size:19px}}

/* 2.2.1: rapid note identification */
.note-import-panel{grid-column:1/-1;background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:17px;margin:5px 0 12px}.note-import-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.note-import-head h3{margin:5px 0 8px}.note-import-panel .data-actions{margin-bottom:9px}.match-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.match-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}.match-item strong{font-size:13px}.match-item p{margin-top:5px}.match-item button{flex-shrink:0}.import-preview{border-top:1px solid var(--line);padding-top:16px;margin-top:16px}.import-preview .notesgrid{margin:12px 0}.source-meta{padding:12px 15px;border:1px solid var(--line);border-radius:11px;margin:14px 0;background:var(--panel2)}@media(max-width:570px){.match-item{align-items:flex-start}.match-item button{white-space:nowrap}.note-import-head{flex-wrap:wrap}}
