:root{
  --bg:#f7f7f3;
  --panel:#ffffff;
  --panel-soft:#fbfaf6;
  --ink:#191b1f;
  --muted:#747982;
  --muted-2:#9da2aa;
  --line:#ece9e2;
  --line-strong:#dfdbd1;
  --gold:#f5b51b;
  --gold-2:#ffca43;
  --gold-soft:#fff6dc;
  --green:#3aa872;
  --green-soft:#eaf8f0;
  --blue:#4f8fe8;
  --blue-soft:#edf5ff;
  --red:#e85959;
  --red-soft:#fff0f0;
  --orange:#ed8e2b;
  --orange-soft:#fff2e3;
  --shadow:0 14px 40px rgba(44,38,24,.06);
  --shadow-sm:0 8px 24px rgba(44,38,24,.05);
  --radius:20px;
  --radius-sm:14px;
  --sidebar:252px;
  font-family:"Avenir Next","Nunito Sans","Trebuchet MS",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button{border:0}
img{max-width:100%}
.ui-icon{width:20px;height:20px;display:block;flex:0 0 auto}
.app-shell{min-height:100vh}

/* Sidebar */
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:#fff;border-right:1px solid var(--line);padding:24px 18px 22px;display:flex;flex-direction:column;z-index:80}
.brand{display:flex;align-items:center;gap:13px;padding:4px 8px 30px}
.brand-mark{width:42px;height:48px;border:2px solid var(--gold);border-radius:9px;display:grid;place-items:center;color:#2d2d2d;font-size:0;position:relative;background:linear-gradient(90deg,#fff 0 63%,#fff7dd 63%)}
.brand-mark:before{content:"";position:absolute;top:0;bottom:0;left:62%;border-left:1.5px solid #2d2d2d}
.brand-mark:after{content:"";position:absolute;left:6px;top:12px;width:4px;height:12px;border-radius:3px;background:var(--gold)}
.brand strong{display:block;font-size:20px;letter-spacing:-.03em}
.brand small{display:block;font-size:10px;color:var(--muted);margin-top:2px;letter-spacing:.02em}
.sidebar nav{display:grid;gap:7px}
.sidebar nav a{min-height:48px;border-radius:13px;padding:0 14px;display:flex;align-items:center;gap:12px;color:#50545c;font-weight:700;transition:.18s ease}
.sidebar nav a:hover{background:#faf9f5;color:#1e2024;transform:translateX(2px)}
.sidebar nav a.active{background:linear-gradient(90deg,#fff7df,#fffaf1);color:#a85e00;box-shadow:inset 0 0 0 1px #f7e8bd}
.sidebar nav a.active .ui-icon{color:var(--gold)}
.nav-separator{height:1px;background:var(--line);margin:10px 8px}
.sidebar-promo{margin-top:auto;background:linear-gradient(145deg,#fff7e3,#fff2cf);border:1px solid #f6e6bb;border-radius:18px;padding:17px 16px 14px;position:relative;overflow:hidden}
.sidebar-promo:after{content:"";position:absolute;width:70px;height:70px;border-radius:50%;background:#fff8;right:-18px;bottom:-22px}
.sidebar-promo strong{display:block;color:#a75b00;font-size:15px;line-height:1.2;max-width:145px}
.sidebar-promo p{font-size:11px;color:#8d785c;margin:8px 0 0;max-width:155px}
.sidebar-foot{margin-top:14px;border-top:1px solid var(--line);padding:16px 8px 0;display:flex;align-items:center;gap:10px}
.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(145deg,#fff4cf,#ffd769);display:grid;place-items:center;font-weight:900;color:#664400;flex:0 0 auto}
.sidebar-foot strong,.sidebar-foot small,.sidebar-foot a{display:block}
.sidebar-foot strong{font-size:12px}
.sidebar-foot small{font-size:10px;color:var(--muted);margin-top:1px}
.sidebar-foot a{font-size:10px;color:#a16e0b;margin-top:3px;font-weight:800}

/* Main shell */
.main{margin-left:var(--sidebar);padding:24px 28px 56px;min-height:100vh}
.main-inner{max-width:1540px;margin:0 auto}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}
.topbar-main{display:flex;align-items:flex-start;gap:14px}
.mobile-menu-btn{display:none;width:42px;height:42px;border-radius:12px;background:#fff;border:1px solid var(--line);align-items:center;justify-content:center;cursor:pointer}
.eyebrow{margin:0 0 3px;color:#a97611;font-size:10px;font-weight:900;letter-spacing:.13em;text-transform:uppercase}
.topbar h1{font-size:27px;line-height:1.05;margin:0;letter-spacing:-.035em}
.topbar-sub{margin:5px 0 0;color:var(--muted);font-size:12px}
.top-actions{display:flex;align-items:center;gap:10px}
.icon-btn{width:44px;height:44px;border:1px solid var(--line);background:#fff;border-radius:13px;display:grid;place-items:center;color:#5c6068;position:relative;cursor:pointer}
.icon-btn .notify-dot{position:absolute;right:8px;top:8px;width:7px;height:7px;border-radius:50%;background:#f26a45;border:2px solid #fff}
.user-chip{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px 10px 6px 7px}
.user-chip .avatar{width:31px;height:31px;font-size:12px}
.user-chip strong{font-size:11px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scan-mini,.btn{min-height:42px;border-radius:12px;padding:0 16px;font:inherit;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.18s ease}
.scan-mini{background:linear-gradient(135deg,var(--gold),var(--gold-2));color:#171717;box-shadow:0 8px 20px rgba(245,181,27,.22)}
.scan-mini:hover,.btn.primary:hover{transform:translateY(-1px);filter:saturate(1.05)}
.btn.primary{background:linear-gradient(135deg,var(--gold),var(--gold-2));color:#1e1a10;box-shadow:0 8px 20px rgba(245,181,27,.16)}
.btn.light{background:#fff;border:1px solid var(--line);color:#454850}
.btn.soft{background:#faf8f2;color:#565046}
.btn.danger{background:var(--red-soft);color:#b14141;border:1px solid #f6d8d8}
.btn.compact{min-height:32px;padding:0 10px;border-radius:9px;font-size:11px}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}

/* Alerts */
.flash{padding:13px 15px;border-radius:13px;margin:0 0 18px;font-weight:700;font-size:12px;border:1px solid transparent;overflow-wrap:anywhere}
.flash.success{background:var(--green-soft);color:#29794f;border-color:#d2efdf}
.flash.error{background:var(--red-soft);color:#a63d3d;border-color:#f3d8d8}

/* Dashboard hero */
.hero{background:linear-gradient(110deg,#fff9e9 0%,#fffdf7 52%,#f8fbf8 100%);border:1px solid #f0e9d8;border-radius:22px;min-height:184px;padding:24px 27px;display:grid;grid-template-columns:minmax(320px,.9fr) 1.1fr;align-items:center;box-shadow:var(--shadow-sm);overflow:hidden;position:relative}
.hero-copy{position:relative;z-index:2}
.hero h2{font-size:28px;line-height:1.06;letter-spacing:-.04em;margin:0 0 10px;max-width:520px}
.hero p{margin:0;color:#676b73;max-width:530px;font-size:13px;line-height:1.55}
.hero-actions{display:flex;gap:10px;margin-top:17px;flex-wrap:wrap}
.hero-visual{height:170px;position:relative;display:flex;justify-content:flex-end;align-items:center;padding-right:28px}
.fridge-illustration{width:230px;height:158px;background:#eff4f1;border:1px solid #dde8e1;border-radius:20px 20px 8px 8px;position:relative;box-shadow:inset 0 -14px 30px rgba(69,119,91,.04)}
.fridge-illustration:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:#dbe3de}
.fridge-illustration .shelf{position:absolute;left:14px;right:14px;height:1px;background:#d7e1da}
.fridge-illustration .s1{top:52px}.fridge-illustration .s2{top:105px}
.food-shape{position:absolute;border-radius:6px;box-shadow:0 3px 6px #0000000a}
.food-shape.bottle{width:18px;height:42px;background:#5db46e;left:28px;top:8px;border-radius:5px 5px 7px 7px}
.food-shape.jar{width:30px;height:30px;background:#f0b838;left:60px;top:19px}
.food-shape.bowl{width:43px;height:23px;background:#e2d99e;left:108px;top:27px;border-radius:4px 4px 18px 18px}
.food-shape.cheese{width:45px;height:27px;background:#e9b86b;left:31px;top:69px}
.food-shape.tomato{width:22px;height:22px;background:#ee6c37;left:100px;top:76px;border-radius:50%}
.food-shape.lettuce{width:46px;height:29px;background:#8ebc55;left:135px;top:70px;border-radius:45%}
.food-shape.cucumber{width:65px;height:15px;background:#4d9854;left:35px;top:126px;border-radius:10px;transform:rotate(-8deg)}
.food-shape.pepper{width:27px;height:31px;background:#75ae49;left:130px;top:114px;border-radius:12px}
.phone-illustration{width:85px;height:145px;border:7px solid #171717;background:#fff;border-radius:20px;position:absolute;left:12%;bottom:-12px;transform:rotate(9deg);box-shadow:0 14px 24px #0002;z-index:3}
.phone-illustration:before{content:"";position:absolute;width:29px;height:5px;border-radius:0 0 6px 6px;background:#171717;left:50%;transform:translateX(-50%);top:-1px}
.phone-screen-barcode{position:absolute;left:13px;right:13px;top:52px;height:36px;background:repeating-linear-gradient(90deg,#111 0 2px,#fff 2px 4px);border:5px solid #fff;outline:2px solid var(--gold)}
.scan-orbit{position:absolute;width:44px;height:44px;border-radius:50%;background:#fff;border:1px solid #e9e4d8;display:grid;place-items:center;color:var(--green);box-shadow:var(--shadow-sm)}
.scan-orbit.o1{left:2%;top:8px}.scan-orbit.o2{left:0;bottom:4px;color:var(--gold)}
.scan-orbit.o3{left:27%;top:15px;color:var(--green)}

/* KPI */
.stats,.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:14px 0}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:15px 16px;display:flex;align-items:center;gap:13px;box-shadow:0 5px 18px rgba(44,38,24,.035);min-width:0}
.stat-icon{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--green-soft);color:var(--green);flex:0 0 auto}
.stat-icon.gold{background:var(--gold-soft);color:#df8c00}.stat-icon.blue{background:var(--blue-soft);color:var(--blue)}.stat-icon.red{background:var(--red-soft);color:var(--red)}
.stat-content{min-width:0}
.stat .label{font-size:11px;color:#666b74;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat .value{font-size:24px;font-weight:900;line-height:1.05;margin-top:2px;letter-spacing:-.04em}
.stat .sub{font-size:10px;color:var(--muted);margin-top:3px}
.stat .sub.good{color:var(--green)}.stat .sub.warn{color:#cb7900}.stat .sub.bad{color:var(--red)}

/* Cards */
.dashboard-grid{display:grid;grid-template-columns:1.05fr 1fr .74fr;gap:14px;align-items:stretch}
.grid2{display:grid;grid-template-columns:1.08fr .92fr;gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 7px 24px rgba(44,38,24,.04)}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}
.card h2{margin:0;font-size:16px;letter-spacing:-.02em}
.card-head p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.45}
.card-link{font-size:10px;color:#8c6922;font-weight:800;white-space:nowrap}
.items{display:grid;gap:0}
.item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;border-bottom:1px solid #f0eee8;padding:9px 2px}
.item:last-child{border-bottom:0}
.item img,.product-img{width:44px;height:44px;border-radius:10px;object-fit:contain;background:#f8f8f4;border:1px solid #f0eee8}
.item .placeholder{width:44px;height:44px;border-radius:10px;background:#f7f5ef;display:grid;place-items:center;font-size:20px}
.item strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta{font-size:10px;color:var(--muted);margin-top:2px}
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:900;background:#f1f1ee;color:#666b72;white-space:nowrap}
.badge.green{background:var(--green-soft);color:#2f8a5c}.badge.orange{background:var(--orange-soft);color:#bd6815}.badge.red{background:var(--red-soft);color:#bd4d4d}.badge.blue{background:var(--blue-soft);color:#3d79c9}.badge.gold{background:var(--gold-soft);color:#b17700}
.empty{padding:30px 16px;text-align:center;color:var(--muted)}
.empty .icon{font-size:30px}.empty h3{margin:10px 0 7px;color:var(--ink)}.empty p{font-size:12px;max-width:400px;margin:0 auto 14px}
.tip-line{display:flex;gap:7px;align-items:center;border-top:1px solid #f0eee8;margin-top:8px;padding-top:10px;color:#6d756e;font-size:10px}.tip-line strong{color:var(--green)}

/* Recipe assistant preview */
.ai-card{position:relative;overflow:hidden}
.ai-card:after{content:"";position:absolute;width:110px;height:110px;border-radius:50%;background:#fff8e2;right:-40px;top:-52px;pointer-events:none}
.ai-title{display:flex;align-items:center;gap:7px}.ai-title .ui-icon{color:var(--gold)}
.ai-prompt{display:flex;gap:7px;background:#faf9f5;border:1px solid #ece8dd;border-radius:12px;padding:6px;margin-bottom:12px}
.ai-prompt span{flex:1;padding:6px 8px;color:#9a9ca1;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-prompt a{width:34px;height:34px;border-radius:9px;background:var(--gold);display:grid;place-items:center;color:#211b0d}
.recipe-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.recipe-mini{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff}
.recipe-mini-visual{height:68px;background:linear-gradient(145deg,#f5ead8,#d9e9cb);position:relative;overflow:hidden}
.recipe-mini-visual:before{content:"";position:absolute;width:75px;height:35px;border-radius:50%;background:#f4d17f;left:50%;top:50%;transform:translate(-50%,-45%);box-shadow:inset 0 0 0 7px #fff7}
.recipe-mini:nth-child(2) .recipe-mini-visual{background:linear-gradient(145deg,#f3e1cc,#e9cbaa)}
.recipe-mini:nth-child(3) .recipe-mini-visual{background:linear-gradient(145deg,#f7e5d3,#e7ae72)}
.recipe-mini strong{font-size:9px;line-height:1.18;display:block;padding:7px 7px 2px}.recipe-mini small{display:block;color:var(--muted);font-size:8px;padding:0 7px 7px}

/* Scan preview card on dashboard */
.quick-scan-card{display:flex;flex-direction:column}
.quick-scan-view{background:linear-gradient(135deg,#24313a,#111a20);border-radius:13px;min-height:135px;position:relative;overflow:hidden;display:grid;place-items:center;color:#fff;margin-top:2px}
.quick-scan-product{width:62%;height:66px;background:#3c728a;border-radius:6px;box-shadow:0 9px 22px #0005;position:relative;display:grid;place-items:center}
.quick-scan-product:before{content:"LAIT\A DEMI-ÉCRÉMÉ";white-space:pre;font-size:10px;font-weight:900;text-align:center;position:absolute;left:9px;top:8px;color:#fff}
.quick-barcode{width:56px;height:31px;background:repeating-linear-gradient(90deg,#111 0 2px,#fff 2px 4px);position:absolute;right:7px;bottom:8px}
.scan-corner{position:absolute;width:28px;height:28px;border-color:var(--gold);border-style:solid}
.scan-corner.tl{left:15px;top:15px;border-width:2px 0 0 2px}.scan-corner.tr{right:15px;top:15px;border-width:2px 2px 0 0}.scan-corner.bl{left:15px;bottom:15px;border-width:0 0 2px 2px}.scan-corner.br{right:15px;bottom:15px;border-width:0 2px 2px 0}
.quick-scan-card .scan-note{text-align:center;color:var(--muted);font-size:10px;margin:8px 0}

/* Scanner page */
.scanner-layout{display:grid;grid-template-columns:minmax(0,1.08fr) .92fr;gap:16px}
.camera-card{background:#171b1d;border-radius:20px;padding:12px;color:#fff;box-shadow:var(--shadow)}
.camera{position:relative;aspect-ratio:4/3;background:radial-gradient(circle at center,#273238,#0d1012 70%);border-radius:15px;overflow:hidden}
.camera video{width:100%;height:100%;object-fit:cover}
.camera-frame{position:absolute;left:12%;right:12%;top:31%;height:35%;border:2px solid var(--gold);border-radius:12px;box-shadow:0 0 0 999px rgba(0,0,0,.19)}
.camera-frame:before,.camera-frame:after{content:"";position:absolute;inset:-5px;border-color:#fff4;border-style:solid;border-width:1px 0}
.camera-status{font-size:11px;color:#c8cdcf;padding:11px 3px 2px;text-align:center}
.manual{display:flex;gap:8px;margin-top:10px}
.manual input{flex:1;background:#23282b;border-color:#333b3f;color:#fff}.manual input::placeholder{color:#8d969b}
.form-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow-sm)}
.product-preview{display:grid;grid-template-columns:78px 1fr;gap:14px;align-items:center;background:#faf9f5;border:1px solid #efede7;border-radius:14px;padding:12px;margin-bottom:17px}
.product-preview img{width:78px;height:78px;object-fit:contain;background:white;border-radius:11px;border:1px solid #efede7}.product-preview h3{margin:0 0 4px}

/* Forms */
label{display:block;font-size:11px;font-weight:800;margin:0 0 6px;color:#4b4f56}
input,select,textarea{width:100%;border:1px solid #dfddd6;border-radius:11px;padding:11px 12px;background:#fff;color:var(--ink);outline:none;transition:.17s ease}
input:focus,select:focus,textarea:focus{border-color:#e4b645;box-shadow:0 0 0 3px #fff6dd}
input:disabled,select:disabled,textarea:disabled{background:#f5f5f2;color:#9b9da1}
textarea{resize:vertical}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{margin-bottom:13px}.field-help{font-size:10px;color:var(--muted);margin-top:6px;line-height:1.4}

/* Inventory */
.inventory-toolbar{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.inventory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}
.food-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px;box-shadow:0 7px 22px rgba(44,38,24,.035);transition:.18s ease}
.food-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(44,38,24,.07)}
.food-top{display:flex;gap:12px}.food-card img,.food-card .placeholder{width:70px;height:70px;object-fit:contain;border-radius:13px;background:#faf9f5;border:1px solid #eeece6}.food-card .placeholder{display:grid;place-items:center;font-size:26px}.food-card h3{margin:2px 0 4px;font-size:14px}.food-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #f0eee8;margin-top:12px;padding-top:10px}.inline-form{display:inline}

/* Recipes */
.recipe-box{white-space:pre-wrap;line-height:1.65;font-size:13px;background:#fcfbf8;border:1px solid var(--line);border-radius:14px;padding:18px}
.recipe-actions{display:grid;grid-template-columns:1fr auto;gap:10px}
.recipe-hero{background:linear-gradient(120deg,#fffaf0,#fff);border:1px solid #f2ead8;border-radius:18px;padding:18px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.recipe-hero h2{margin:0 0 5px;font-size:21px}.recipe-hero p{margin:0;color:var(--muted);font-size:11px}.recipe-hero-icon{width:58px;height:58px;border-radius:18px;background:var(--gold-soft);display:grid;place-items:center;color:#c88400}
.recipe-hero-icon .ui-icon{width:29px;height:29px}

/* Admin */
.admin-stats{margin-top:0;margin-bottom:14px}
.admin-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}
.create-user-card{position:sticky;top:20px}
.admin-search{display:flex;gap:7px;min-width:min(390px,100%)}.admin-search input{min-width:0}
.table-wrap{overflow:auto;margin:0 -4px}
.admin-table{width:100%;border-collapse:collapse;min-width:1030px}
.admin-table th{text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:10px 11px;border-bottom:1px solid var(--line);white-space:nowrap}
.admin-table td{padding:11px;border-bottom:1px solid #f0eee8;vertical-align:middle;font-size:11px}.admin-table tr:last-child td{border-bottom:0}.admin-table tbody tr:hover{background:#fffdf8}
.user-cell{display:flex;align-items:center;gap:9px;min-width:185px}.user-cell .avatar{width:34px;height:34px;font-size:11px}.user-cell strong,.user-cell small{display:block}.user-cell small{color:var(--muted);margin-top:1px;font-size:9px}.role-form select{padding:7px 9px;border-radius:9px;font-size:10px;min-width:105px}.admin-actions form{display:flex;gap:6px;white-space:nowrap}
.create-user-card .form-card-title{display:flex;align-items:center;gap:9px;margin-bottom:14px}.create-user-card .form-card-title .ui-icon{color:var(--gold)}

/* Account */
.account-grid{align-items:start}.account-profile-head{display:flex;align-items:center;gap:13px;background:#faf9f5;border:1px solid var(--line);border-radius:14px;padding:13px;margin-bottom:17px}.account-profile-head .avatar{width:52px;height:52px;font-size:17px}.account-profile-head strong{display:block;font-size:14px}.account-profile-head small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.account-role{display:flex;gap:8px;align-items:center;margin:6px 0 14px}.force-password{display:flex;gap:12px;align-items:center;background:var(--orange-soft);border:1px solid #f1d6b7;color:#754a18;border-radius:14px;padding:14px 16px;margin-bottom:16px}.force-password strong{white-space:nowrap}.force-password span{font-size:11px;line-height:1.45}

/* Authentication */
.auth-page{min-height:100vh;background:#f7f6f1;display:grid;grid-template-columns:minmax(360px,.9fr) 1.1fr}
.auth-panel{display:flex;align-items:center;justify-content:center;padding:34px;background:#fff}
.login-card{width:min(430px,100%)}
.login-brand{display:flex;align-items:center;gap:13px;margin-bottom:28px}.login-brand .brand-mark{width:45px;height:51px}.login-card h1{margin:0;font-size:28px;letter-spacing:-.04em}.login-card .auth-sub{margin:7px 0 23px;color:var(--muted);font-size:12px;line-height:1.5}.auth-title{margin-bottom:18px}.auth-title h2{margin:0;font-size:19px}.auth-title p{margin:5px 0 0;color:var(--muted);font-size:11px}.auth-foot{text-align:center;border-top:1px solid var(--line);margin-top:20px;padding-top:17px;color:var(--muted);font-size:11px}.auth-foot a{color:#aa6f00;font-weight:900}.wide-login{width:min(520px,100%)}
.auth-visual{position:relative;overflow:hidden;background:linear-gradient(145deg,#fff7dc,#f5ead0 46%,#eef7ef);display:flex;align-items:center;justify-content:center;padding:50px}
.auth-visual:before{content:"";position:absolute;width:390px;height:390px;border-radius:50%;background:#fff8;right:-110px;top:-120px}.auth-visual:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;background:#fff5;left:-80px;bottom:-90px}.auth-showcase{position:relative;z-index:2;width:min(620px,100%)}.auth-showcase .kicker{color:#a67411;font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.auth-showcase h2{font-size:38px;line-height:1.06;letter-spacing:-.045em;margin:8px 0 13px;max-width:580px}.auth-showcase p{font-size:13px;color:#666356;max-width:520px;line-height:1.6}.auth-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.auth-feature{background:#ffffffb8;backdrop-filter:blur(8px);border:1px solid #fff;border-radius:15px;padding:14px}.auth-feature .ui-icon{color:#b77c00;margin-bottom:9px}.auth-feature strong{display:block;font-size:11px}.auth-feature small{display:block;color:#747166;font-size:9px;margin-top:4px;line-height:1.4}
.auth-fridge{width:230px;height:275px;margin:32px auto 0;background:#f9fbfa;border:1px solid #dfe8e1;border-radius:28px;position:relative;box-shadow:0 24px 45px rgba(77,73,57,.12)}.auth-fridge:before{content:"";position:absolute;left:0;right:0;top:105px;border-top:1px solid #dbe5de}.auth-fridge:after{content:"";position:absolute;right:14px;top:36px;width:5px;height:38px;border-radius:6px;background:var(--gold)}.auth-fridge-door{position:absolute;left:18px;right:18px;top:124px;bottom:18px;border:1px solid #e5ebe6;border-radius:16px;background:linear-gradient(135deg,#fff,#f3f7f4)}.auth-fridge-door:before{content:"🥬  🍅  🧀";position:absolute;left:18px;top:24px;font-size:25px;letter-spacing:4px}.auth-fridge-door:after{content:"🥛  🥒";position:absolute;left:27px;bottom:27px;font-size:27px;letter-spacing:9px}
.admin-seed{display:flex;gap:10px;align-items:flex-start;background:#fff9e8;border:1px solid #f1e2b7;border-radius:13px;padding:13px;margin:4px 0 16px;font-size:11px}.admin-seed small{display:block;color:var(--muted);margin-top:4px;line-height:1.45}.status-dot{width:9px;height:9px;border-radius:50%;background:var(--green);margin-top:4px;flex:0 0 auto}

/* Mobile bottom nav */
.mobile-nav{display:none}

@media(max-width:1220px){
  .dashboard-grid{grid-template-columns:1fr 1fr}.quick-scan-card{grid-column:1/-1}.quick-scan-card .quick-scan-view{min-height:165px}
  .admin-layout{grid-template-columns:1fr}.create-user-card{position:static}
}
@media(max-width:1040px){
  :root{--sidebar:222px}.sidebar{padding-left:14px;padding-right:14px}.main{padding:22px 22px 54px}.hero{grid-template-columns:1fr .9fr}.hero h2{font-size:25px}.stats,.admin-stats{grid-template-columns:repeat(2,1fr)}.inventory-grid{grid-template-columns:repeat(2,1fr)}
  .auth-page{grid-template-columns:1fr}.auth-visual{display:none}.auth-panel{min-height:100vh}
}
@media(max-width:820px){
  .sidebar{transform:translateX(-100%);transition:.25s ease;box-shadow:10px 0 30px #00000010}.sidebar.open{transform:translateX(0)}.main{margin-left:0;padding:18px 16px 92px}.mobile-menu-btn{display:flex}.topbar{margin-bottom:17px}.topbar-sub{display:none}.user-chip{display:none}.icon-btn{display:none}.hero{grid-template-columns:1fr;min-height:auto}.hero-visual{display:none}.dashboard-grid,.grid2,.scanner-layout{grid-template-columns:1fr}.quick-scan-card{grid-column:auto}.mobile-nav{position:fixed;display:grid;grid-template-columns:1fr 1fr 68px 1fr 1fr;align-items:center;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);padding:7px 10px max(7px,env(safe-area-inset-bottom));z-index:90;box-shadow:0 -8px 24px #00000008}.mobile-nav a{font-size:0;text-align:center;color:#6d7178;display:grid;justify-items:center;gap:2px}.mobile-nav a .ui-icon{width:20px;height:20px}.mobile-nav a span{display:block;font-size:9px;font-weight:800}.mobile-nav .scan-fab{width:56px;height:56px;border-radius:18px;background:linear-gradient(135deg,var(--gold),var(--gold-2));color:#1e1a10;display:grid;place-items:center;margin:-26px auto 0;box-shadow:0 8px 22px rgba(245,181,27,.3)}.mobile-nav .scan-fab .ui-icon{width:26px;height:26px}.sidebar-overlay{position:fixed;inset:0;background:#0005;z-index:70;display:none}.sidebar-overlay.show{display:block}
}
@media(max-width:620px){
  .main{padding-left:11px;padding-right:11px}.topbar h1{font-size:23px}.scan-mini{padding:0 11px;font-size:11px}.scan-mini span{display:none}.hero{padding:20px;border-radius:17px}.hero h2{font-size:23px}.hero p{font-size:12px}.stats,.admin-stats{grid-template-columns:1fr 1fr;gap:8px}.stat{padding:12px 11px;gap:9px}.stat-icon{width:38px;height:38px}.stat-icon .ui-icon{width:18px;height:18px}.stat .label{font-size:9px}.stat .value{font-size:21px}.stat .sub{font-size:8px}.dashboard-grid{gap:10px}.card,.form-card,.camera-card{border-radius:15px;padding:14px}.recipe-mini-grid{grid-template-columns:1fr}.recipe-mini{display:grid;grid-template-columns:82px 1fr}.recipe-mini-visual{height:68px}.inventory-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.recipe-actions{grid-template-columns:1fr}.manual{flex-direction:column}.admin-search{display:grid;grid-template-columns:1fr;min-width:100%}.card-head{align-items:flex-start;flex-direction:column}.force-password{align-items:flex-start;flex-direction:column}.auth-panel{padding:24px 18px}.login-card h1{font-size:25px}
}


/* v0.3.1 - Navigation, sécurité et gestion des utilisateurs */
.sidebar nav a.nav-sub{min-height:42px;margin-left:14px;padding-left:14px;font-size:12px;position:relative}
.sidebar nav a.nav-sub:before{content:"";position:absolute;left:-7px;top:-7px;bottom:-7px;border-left:1px solid var(--line)}
.sidebar nav a.nav-sub .ui-icon{width:17px;height:17px}
.security-reminder{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:#fff8e7;border:1px solid #f1dfad;border-radius:15px;padding:11px 13px;margin:-4px 0 17px;box-shadow:0 5px 18px rgba(90,67,17,.04)}
.security-reminder-icon{width:38px;height:38px;border-radius:12px;background:#ffedb7;color:#a96f00;display:grid;place-items:center}
.security-reminder-icon .ui-icon{width:18px;height:18px}
.security-reminder strong,.security-reminder span{display:block}.security-reminder strong{font-size:12px}.security-reminder div>span{font-size:10px;color:#7b6a47;margin-top:2px}
.admin-hero{background:linear-gradient(115deg,#fff8e8,#fffdf8 55%,#f4faf5);border:1px solid #efe5cf;border-radius:20px;padding:22px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px;box-shadow:var(--shadow-sm);margin-bottom:14px}
.admin-kicker{display:inline-block;color:#a66b00;font-weight:900;text-transform:uppercase;letter-spacing:.1em;font-size:9px;margin-bottom:5px}.admin-hero h2{font-size:23px;letter-spacing:-.035em;margin:0 0 6px;max-width:680px}.admin-hero p{font-size:11px;color:var(--muted);margin:0;max-width:700px;line-height:1.55}.admin-hero-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.admin-overview-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:16px;align-items:start}.recent-users{display:grid}.recent-user{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 3px;border-bottom:1px solid #f0eee8}.recent-user:last-child{border-bottom:0}.recent-user:hover{background:#fffdf8}.recent-user-main strong,.recent-user-main small{display:block}.recent-user-main strong{font-size:12px}.recent-user-main small{font-size:9px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-user-state{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.admin-actions-card{display:grid;gap:3px}.admin-action-link{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 4px;border-top:1px solid #f0eee8}.admin-action-link:first-of-type{border-top:0}.admin-action-link:hover{background:#fffdf8}.admin-action-link .stat-icon{width:40px;height:40px}.admin-action-link strong,.admin-action-link small{display:block}.admin-action-link strong{font-size:11px}.admin-action-link small{font-size:9px;color:var(--muted);margin-top:2px;line-height:1.4}.admin-action-link>.ui-icon{width:16px;height:16px;color:#aaa59b}
.users-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:12px 14px;margin-bottom:14px}.users-toolbar strong,.users-toolbar span{display:block}.users-toolbar strong{font-size:12px}.users-toolbar span{font-size:10px;color:var(--muted);margin-top:2px}.users-layout{grid-template-columns:minmax(0,1fr) 370px}.users-list-card{min-width:0}.create-user-card{scroll-margin-top:20px}.create-user-card h2{margin:0;font-size:17px}.password-generator{display:flex;gap:7px}.password-generator input{min-width:0}
@media(max-width:1220px){.admin-overview-grid{grid-template-columns:1fr}.users-layout{grid-template-columns:1fr}.create-user-card{position:static}.admin-hero{align-items:flex-start;flex-direction:column}.admin-hero-actions{justify-content:flex-start}}
@media(max-width:820px){.security-reminder{grid-template-columns:auto 1fr}.security-reminder .btn{grid-column:1/-1;width:100%}.admin-hero{padding:18px}.admin-hero h2{font-size:20px}.users-toolbar{align-items:flex-start;flex-direction:column}.users-toolbar .btn{width:100%}.recent-user{grid-template-columns:auto minmax(0,1fr)}.recent-user-state{grid-column:2;justify-content:flex-start}}

/* v0.3.2 - Scan rapide smartphone */
.scan-fast-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px 16px;margin-bottom:14px;box-shadow:var(--shadow-sm)}
.scan-fast-toolbar>div:first-child{min-width:0}.scan-fast-kicker{display:block;font-size:9px;font-weight:900;letter-spacing:.12em;color:#a66b00;margin-bottom:3px}.scan-fast-toolbar strong{display:block;font-size:13px}.scan-fast-toolbar small{display:block;color:var(--muted);font-size:10px;margin-top:3px;line-height:1.45}
.scan-location-picker{display:flex;gap:6px;background:#f6f4ee;padding:4px;border-radius:13px;flex:0 0 auto}.scan-location{border:0;background:transparent;color:#666b73;border-radius:10px;min-height:36px;padding:0 11px;display:flex;align-items:center;gap:6px;font-weight:800;font-size:10px;cursor:pointer}.scan-location .ui-icon{width:16px;height:16px}.scan-location.active{background:#fff;color:#8f5e00;box-shadow:0 4px 12px #0000000b}
.scan-fast-layout{grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr)}.scan-camera-card{position:relative}.scan-camera-card .camera{aspect-ratio:16/11;min-height:300px}.scan-camera-card .camera-frame{left:9%;right:9%;top:34%;height:29%;border:0;box-shadow:0 0 0 999px rgba(0,0,0,.23)}.scan-camera-card .camera-frame:before,.scan-camera-card .camera-frame:after{display:none}.scan-camera-card .camera-frame{background:linear-gradient(var(--gold),var(--gold)) left top/36px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) left top/3px 36px no-repeat,linear-gradient(var(--gold),var(--gold)) right top/36px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) right top/3px 36px no-repeat,linear-gradient(var(--gold),var(--gold)) left bottom/36px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) left bottom/3px 36px no-repeat,linear-gradient(var(--gold),var(--gold)) right bottom/36px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) right bottom/3px 36px no-repeat}.scan-line{position:absolute;left:7%;right:7%;top:50%;height:2px;background:linear-gradient(90deg,transparent,var(--gold),#fff,var(--gold),transparent);box-shadow:0 0 12px rgba(245,181,27,.75);animation:scanLine 2.1s ease-in-out infinite}@keyframes scanLine{0%,100%{transform:translateY(-38px);opacity:.55}50%{transform:translateY(38px);opacity:1}}
.camera-live{position:absolute;left:13px;top:13px;background:#111b;color:#fff;border:1px solid #ffffff22;border-radius:999px;padding:6px 9px;display:flex;align-items:center;gap:6px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;backdrop-filter:blur(8px)}.camera-live span{width:7px;height:7px;border-radius:50%;background:#a9adb0}.camera-live.on span{background:#43cf83;box-shadow:0 0 0 4px #43cf8322}
.scan-feed-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:17px;box-shadow:var(--shadow);min-width:0}.scan-feed-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:1px solid #f0eee8;padding-bottom:13px;margin-bottom:13px}.scan-feed-head h2{font-size:18px;margin:0;letter-spacing:-.03em}.scan-feed-head p{font-size:10px;color:var(--muted);margin:4px 0 0}.session-counter{width:62px;height:62px;border-radius:16px;background:var(--gold-soft);display:grid;place-items:center;align-content:center;color:#8f5e00;flex:0 0 auto}.session-counter strong{font-size:22px;line-height:1}.session-counter span{font-size:8px;font-weight:800;margin-top:3px}
.scan-current{min-height:154px;border-radius:16px;border:1px solid var(--line);background:#faf9f5;padding:14px;display:grid;grid-template-columns:84px minmax(0,1fr);gap:14px;align-items:center;transition:.2s ease}.scan-current.empty-state{display:flex;flex-direction:column;text-align:center;justify-content:center;gap:5px;color:var(--muted)}.scan-current.empty-state strong{color:var(--ink)}.scan-current.empty-state span{font-size:10px}.scan-current-icon{width:44px;height:44px;border-radius:14px;background:var(--gold-soft);color:#b87800;display:grid;place-items:center}.scan-current img,.scan-product-fallback{width:84px;height:84px;object-fit:contain;background:#fff;border:1px solid #eeeae1;border-radius:13px}.scan-product-fallback{display:grid;place-items:center;font-size:31px}.scan-current-copy{min-width:0}.scan-current-copy h3{font-size:15px;margin:5px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-current-copy>small{font-size:9px;color:var(--muted)}.scan-current-copy p{font-size:10px;color:#646870;margin:7px 0 0;line-height:1.4}.scan-current-meta{display:flex;gap:8px;align-items:center;margin-top:9px}.scan-current-meta strong,.scan-current-meta span{font-size:9px;border-radius:999px;padding:4px 7px}.scan-current-meta strong{background:#eef8f2;color:#2b7d52}.scan-current-meta span{background:#f0f1f3;color:#62666d}.scan-current.success{border-color:#d4ecdf;background:#f8fcfa}.scan-current.duplicate{border-color:#f2d69d;background:#fffaf0}.scan-current.error{border-color:#efd0d0;background:#fff9f9}.scan-current.unknown{border-color:#f1ddb0;background:#fffaf0}.scan-result-badge{display:inline-flex;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.scan-result-badge.success{background:var(--green-soft);color:#2e8157}.scan-result-badge.duplicate,.scan-result-badge.unknown{background:#fff0c7;color:#a96d00}.scan-result-badge.error{background:var(--red-soft);color:#b24747}
.scan-current.working{display:flex;gap:12px;align-items:center}.scan-current.working strong,.scan-current.working span{display:block}.scan-current.working span{font-size:9px;color:var(--muted);margin-top:3px}.scan-spinner{width:38px;height:38px;border:3px solid #f0e8d5;border-top-color:var(--gold);border-radius:50%;animation:scanSpin .8s linear infinite}@keyframes scanSpin{to{transform:rotate(360deg)}}
.unknown-product-box{margin-top:11px;border:1px solid #f0ddb0;background:#fffbf1;border-radius:14px;padding:12px}.unknown-product-head{display:flex;align-items:center;gap:10px}.unknown-product-head .stat-icon{width:38px;height:38px}.unknown-product-head strong,.unknown-product-head small{display:block}.unknown-product-head strong{font-size:11px}.unknown-product-head small{font-size:8px;color:#8b7955;margin-top:2px}.unknown-product-box p{font-size:9px;color:#74684f;line-height:1.45}.unknown-product-form{display:flex;gap:7px}.unknown-product-form input{flex:1;min-width:0}.unknown-product-form .btn{min-height:39px}
.scan-history{display:grid;margin-top:11px}.scan-history-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:9px;align-items:center;border-top:1px solid #f0eee8;padding:9px 1px}.scan-history-row:first-child{border-top:0}.scan-history-row img,.scan-history-fallback{width:38px;height:38px;border-radius:9px;border:1px solid #eeeae1;background:#fff;object-fit:contain}.scan-history-fallback{display:grid;place-items:center;font-size:17px}.scan-history-row strong,.scan-history-row small{display:block}.scan-history-row strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-history-row small{font-size:8px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-history-qty{width:28px;height:28px;border-radius:9px;background:#f4f3ef;display:grid;place-items:center;font-size:10px;font-weight:900}.scan-history-row.duplicate .scan-history-qty{background:#fff0c7;color:#9b6500}.scan-feed-actions{display:flex;justify-content:flex-end;border-top:1px solid #f0eee8;padding-top:11px;margin-top:5px}
.scan-toast{position:fixed;right:24px;bottom:24px;z-index:200;max-width:min(420px,calc(100vw - 30px));display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;background:#18201d;color:#fff;box-shadow:0 14px 40px #0004;font-size:11px;font-weight:800;animation:scanToastIn .2s ease-out}.scan-toast .ui-icon{width:18px;height:18px}.scan-toast.success .ui-icon{color:#62d996}.scan-toast.duplicate{background:#5b4212;color:#fff5d6}.scan-toast.duplicate .ui-icon{color:#ffc64b}.scan-toast.error{background:#612c2c}.scan-toast.error .ui-icon{color:#ff9d9d}@keyframes scanToastIn{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}
@media(max-width:900px){.scan-fast-toolbar{align-items:flex-start;flex-direction:column}.scan-location-picker{width:100%}.scan-location{flex:1;justify-content:center}.scan-fast-layout{grid-template-columns:1fr}.scan-camera-card .camera{min-height:0;aspect-ratio:4/3}.scan-feed-card{border-radius:15px}.scan-toast{left:12px;right:12px;bottom:84px;max-width:none}}
@media(max-width:520px){.scan-location{font-size:0;padding:0 8px}.scan-location .ui-icon{width:19px;height:19px}.scan-location.active:after{content:attr(data-label);font-size:9px}.scan-current{grid-template-columns:68px minmax(0,1fr)}.scan-current img,.scan-product-fallback{width:68px;height:68px}.unknown-product-form{flex-direction:column}.unknown-product-form .btn{width:100%}.scan-feed-head{align-items:center}}

/* V0.3.4 — confirmation sonore iPhone */
.scan-sound-row{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:8px;min-height:34px}.scan-sound-row .btn{padding:7px 10px;font-size:10px;white-space:nowrap}.scan-sound-row>span{font-size:9px;color:var(--muted);line-height:1.35}.scan-sound-test .ui-icon{width:15px;height:15px}@media(max-width:560px){.scan-sound-row{align-items:stretch;flex-direction:column;text-align:center}.scan-sound-row .btn{width:100%}}


/* V0.3.5 — requête IA à copier, sans API */
.prompt-output-card{border-color:#eadfbf;background:linear-gradient(180deg,#fff 0%,#fffdf7 100%)}
.generated-prompt{width:100%;min-height:420px;resize:vertical;border:1px solid #e5dfcf;border-radius:14px;background:#fbfaf6;color:#252525;padding:16px;font:500 12px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;box-shadow:inset 0 1px 3px #00000008;outline:none}
.generated-prompt:focus{border-color:#e5b738;box-shadow:0 0 0 3px #ffd45a22}
.prompt-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:12px}.copy-status{font-size:10px;color:var(--green);font-weight:800}.prompt-actions .copied{background:#2f9b66;border-color:#2f9b66;color:#fff}.prompt-help{margin-top:12px;padding:11px 13px;border-radius:12px;background:#f7f5ee;color:#68645b;font-size:10px;line-height:1.55}.prompt-help strong{color:var(--ink)}
@media(max-width:700px){.generated-prompt{min-height:520px;font-size:11px}.prompt-actions .btn{width:100%;justify-content:center}.copy-status{width:100%;text-align:center}}

/* V0.3.6 — correction des aliments et DLC/DDM depuis Mes aliments */
.food-info{min-width:0;flex:1}.food-title-line{display:flex;align-items:flex-start;gap:7px;justify-content:space-between}.food-title-line h3{min-width:0;overflow-wrap:anywhere}.food-badges{margin-top:7px;display:flex;gap:5px;flex-wrap:wrap}
.food-card.needs-review{border-color:#f6d78b;box-shadow:0 8px 24px rgba(255,172,0,.08)}
.food-expiry{display:flex;align-items:center;gap:9px;margin-top:12px;padding:10px 11px;border-radius:12px;background:#faf9f5;border:1px solid #efede7}.food-expiry.has-date{background:#f7fbf7;border-color:#dcecdf}.food-expiry.missing-date{background:#fffaf0;border-color:#f5e2b4}.food-expiry-icon{width:30px;height:30px;border-radius:9px;background:#fff;display:grid;place-items:center;color:#bd7b00;flex:0 0 auto;border:1px solid rgba(0,0,0,.04)}.food-expiry-icon .ui-icon{width:16px;height:16px}.food-expiry>div:nth-child(2){display:flex;flex-direction:column;min-width:0}.food-expiry strong{font-size:10px;line-height:1.25}.food-expiry span{font-size:10px;color:var(--muted);margin-top:1px}.expiry-edit-link{margin-left:auto;background:none;border:0;color:#a86a00;font:inherit;font-size:10px;font-weight:800;cursor:pointer;padding:6px}.expiry-edit-link:hover{text-decoration:underline}
.food-actions-row{gap:8px}.food-actions-row>.btn{margin-right:auto}.food-actions-row .inline-form{margin-left:auto}
.item-edit-modal[hidden]{display:none!important}
.item-edit-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px}.item-edit-backdrop{position:absolute;inset:0;background:rgba(24,23,19,.45);backdrop-filter:blur(4px)}.item-edit-dialog{position:relative;width:min(620px,100%);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border:1px solid #ebe7dc;border-radius:22px;padding:22px;box-shadow:0 30px 80px rgba(26,22,13,.22)}.item-edit-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}.item-edit-head h2{font-size:21px;margin:3px 0 5px}.item-edit-head p{margin:0;color:var(--muted);font-size:11px;line-height:1.55}.modal-kicker{font-size:8px;font-weight:900;letter-spacing:.15em;color:#b87800}.icon-btn{width:38px;height:38px;border-radius:11px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;cursor:pointer;flex:0 0 auto}.icon-btn .ui-icon{width:17px;height:17px}.field-help{font-size:9px;color:var(--muted);margin-top:5px;line-height:1.45}.date-field-emphasis{padding:10px;border:1px solid #f2d794;background:#fffaf0;border-radius:13px}.date-field-emphasis label{color:#8d5d00}.edit-form-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:17px;padding-top:15px;border-top:1px solid #f0eee8}.modal-open{overflow:hidden}.refresh-identification{margin-right:auto}
@media(max-width:620px){.item-edit-modal{padding:0;align-items:end}.item-edit-dialog{width:100%;max-height:92vh;border-radius:22px 22px 0 0;padding:18px 14px 20px}.edit-form-actions{display:grid;grid-template-columns:1fr 1fr}.edit-form-actions .refresh-identification{grid-column:1/-1;order:-1}.food-title-line{display:block}.food-title-line .badge{display:inline-flex;margin-top:3px}.food-expiry{padding:9px}.expiry-edit-link{font-size:11px}.food-actions-row>.btn{font-size:10px}}

/* V0.3.7 — Mes aliments : inventaire complet + actions compactes */
.inventory-list-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:14px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 5px 18px rgba(44,38,24,.025)}
.inventory-list-head strong,.inventory-list-head span{display:block}.inventory-list-head strong{font-size:12px}.inventory-list-head span{font-size:9px;color:var(--muted);margin-top:2px}
.inventory-grid-all{grid-template-columns:repeat(3,minmax(0,1fr))}
.compact-food-card{position:relative;padding:14px 14px 12px;min-height:166px}
.compact-food-card .food-top{padding-right:76px;min-height:72px}.compact-food-card .food-info{min-width:0}.compact-food-card .food-title-line{padding-right:0}
.compact-food-card .simple-title-line{display:block}.compact-food-card .simple-title-line h3{padding-right:0;margin-top:1px;font-size:13px;line-height:1.3}.compact-food-card .simple-title-line .badge{margin-top:5px}
.food-card-tools{position:absolute;top:12px;right:12px;display:flex;gap:6px;z-index:2}
.food-tool-btn{width:32px;height:32px;padding:0;border:1px solid #e8e5dd;border-radius:10px;background:#fff;color:#555b63;display:grid;place-items:center;cursor:pointer;transition:.16s ease;box-shadow:0 2px 8px rgba(0,0,0,.025)}
.food-tool-btn:hover{border-color:#d8d2c4;background:#faf9f5;color:#15171a;transform:translateY(-1px)}.food-tool-btn .ui-icon{width:15px;height:15px}
.food-tool-btn.expiry-tool{background:#fff;border-color:var(--line);color:#6f7379}.food-tool-btn.expiry-tool:hover{background:#faf9f5;border-color:#d9d5cb;color:#34373b}.food-tool-btn.expiry-tool.has-expiry{background:#f4faf6;border-color:#d6e8dc;color:#2d8055}
.compact-food-bottom{gap:9px;margin-top:13px;padding-top:10px}.food-date-line{display:flex;align-items:center;gap:6px;min-width:0;color:#596068}.food-date-line .ui-icon{width:14px;height:14px;flex:0 0 auto}.food-date-line span{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-date-line.missing{color:#9a9da2}.food-date-line.missing .ui-icon{color:#aeb1b5}
.food-quick-actions{display:flex;gap:5px;margin-left:auto}.mini-action{width:30px;height:30px;padding:0;border:1px solid #e7e4dd;background:#fff;color:#687078;border-radius:9px;display:grid;place-items:center;cursor:pointer}.mini-action:hover{background:#f7f6f2}.mini-action .ui-icon{width:14px;height:14px}.mini-action.danger{color:#cf5151;border-color:#efd4d4;background:#fffafa}.mini-action.danger:hover{background:#fff0f0}
.expiry-dialog{width:min(470px,100%)}.expiry-focus-box{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:start;padding:14px;border:1px solid #f1d58e;background:#fffaf0;border-radius:15px}.expiry-focus-box .field{margin:0}.expiry-focus-icon{width:48px;height:48px;border-radius:14px;background:#fff0bd;color:#ad7300;display:grid;place-items:center}.expiry-focus-icon .ui-icon{width:23px;height:23px}
@media(max-width:1080px){.inventory-grid-all{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.inventory-list-head{align-items:flex-start}.inventory-list-head .btn{flex:0 0 auto}.inventory-grid-all{grid-template-columns:1fr}.compact-food-card{min-height:0}.compact-food-card .food-top{padding-right:70px}.food-card-tools{top:11px;right:11px}.food-tool-btn{width:34px;height:34px}.compact-food-bottom{align-items:center}.food-date-line span{max-width:185px}.expiry-focus-box{grid-template-columns:40px minmax(0,1fr);padding:11px}.expiry-focus-icon{width:40px;height:40px;border-radius:12px}.expiry-dialog .edit-form-actions{grid-template-columns:1fr}.expiry-dialog .edit-form-actions .btn{width:100%}}

/* V0.3.11 — mot de passe oublié + configuration Brevo */
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.field-label-row label{margin:0}.field-label-row a{font-size:10px;font-weight:850;color:#a66d00;text-decoration:none}.field-label-row a:hover{text-decoration:underline}
.reset-success-card{display:flex;align-items:flex-start;gap:12px;background:#f4faf6;border:1px solid #d7eadf;border-radius:14px;padding:14px;margin:0 0 16px}.reset-success-icon{width:40px;height:40px;border-radius:12px;background:#e7f6ec;color:#2f8a5c;display:grid;place-items:center;flex:0 0 auto}.reset-success-icon .ui-icon{width:19px;height:19px}.reset-success-card strong{display:block;font-size:12px}.reset-success-card p{font-size:10px;line-height:1.55;color:var(--muted);margin:4px 0 0}
.email-settings-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px;align-items:start}.email-settings-grid code{font-size:10px;background:#f5f3ed;border-radius:6px;padding:2px 5px}.brevo-status{display:flex;align-items:center;gap:11px;background:#faf9f5;border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:14px}.brevo-status>div:last-child{min-width:0}.brevo-status strong,.brevo-status span{display:block}.brevo-status strong{font-size:11px}.brevo-status span{font-size:9px;color:var(--muted);line-height:1.45;margin-top:2px}.settings-note{margin-top:14px;padding:12px;border-radius:12px;background:#fffaf0;border:1px solid #f0dfb6}.settings-note strong{font-size:10px}.settings-note p{font-size:9px;color:var(--muted);line-height:1.55;margin:4px 0 0}
@media(max-width:900px){.email-settings-grid{grid-template-columns:1fr}}@media(max-width:520px){.field-label-row{align-items:flex-start}.field-label-row a{font-size:9px}.reset-success-card{padding:12px}}

/* V0.3.11 — Cloudflare Turnstile */
.turnstile-box{margin:12px 0 15px;min-height:65px;width:100%;overflow:hidden}.turnstile-box .cf-turnstile{width:100%}
.security-settings-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:16px;align-items:start}.security-settings-grid code{font-size:10px;background:#f5f3ed;border-radius:6px;padding:2px 5px}
.toggle-setting{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px;margin-bottom:16px;background:#faf9f5;border:1px solid var(--line);border-radius:14px;cursor:pointer}.toggle-setting>span:first-child{min-width:0}.toggle-setting strong,.toggle-setting small{display:block}.toggle-setting strong{font-size:11px}.toggle-setting small{font-size:9px;color:var(--muted);line-height:1.5;margin-top:3px}.toggle-control{position:relative;flex:0 0 auto}.toggle-control input{position:absolute;opacity:0;pointer-events:none}.toggle-control span{display:block;width:42px;height:24px;border-radius:20px;background:#d9d9d4;position:relative;transition:.18s ease}.toggle-control span:after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);transition:.18s ease}.toggle-control input:checked+span{background:#ffbd24}.toggle-control input:checked+span:after{transform:translateX(18px)}
.protected-actions-list{display:grid;gap:8px}.protected-actions-list>div{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:13px;background:#fff}.protected-actions-list .stat-icon{width:38px;height:38px}.protected-actions-list p{margin:0;min-width:0}.protected-actions-list strong,.protected-actions-list small{display:block}.protected-actions-list strong{font-size:10px}.protected-actions-list small{font-size:8.5px;color:var(--muted);margin-top:2px;line-height:1.4}
@media(max-width:900px){.security-settings-grid{grid-template-columns:1fr}}@media(max-width:520px){.toggle-setting{align-items:flex-start}.protected-actions-list>div{grid-template-columns:36px minmax(0,1fr)}.protected-actions-list .badge{grid-column:2;justify-self:start}.protected-actions-list .stat-icon{width:34px;height:34px}}


/* V0.3.14 — page de connexion : photo plus visible, cadrage frigo + Turnstile */
.auth-visual-photo{
  background-image:url("../images/login-fridge.jpg");
  background-size:cover;
  background-position:12% center;
  background-repeat:no-repeat;
  background-color:#e8e8e3;
  justify-content:flex-start;
  padding:clamp(34px,4.2vw,72px);
  isolation:isolate;
}
.auth-visual-photo:before{
  content:"";
  position:absolute;
  inset:0;
  width:auto;
  height:auto;
  border-radius:0;
  background:linear-gradient(
    90deg,
    rgba(255,255,255,.16) 0%,
    rgba(255,255,255,.08) 30%,
    rgba(255,255,255,.02) 52%,
    rgba(255,255,255,0) 70%
  );
  z-index:0;
  pointer-events:none;
}
.auth-visual-photo:after{display:none}
.auth-visual-photo .auth-showcase{
  position:relative;
  z-index:2;
  width:min(430px,52%);
  padding:28px 30px;
  border:1px solid rgba(255,255,255,.82);
  border-radius:25px;
  background:rgba(255,255,255,.88);
  -webkit-backdrop-filter:blur(4px);
  backdrop-filter:blur(4px);
  box-shadow:0 18px 45px rgba(25,28,25,.13),0 2px 8px rgba(25,28,25,.04);
}
.auth-visual-photo .auth-showcase .kicker{color:#a86c00}
.auth-visual-photo .auth-showcase h2{font-size:40px;max-width:420px;color:#151719}
.auth-visual-photo .auth-showcase p{color:#5d6164;max-width:410px}
.auth-visual-photo .auth-feature-grid{grid-template-columns:1fr;gap:10px;margin-top:25px}
.auth-visual-photo .auth-feature{
  display:grid;
  grid-template-columns:36px minmax(0,1fr);
  column-gap:11px;
  row-gap:2px;
  align-items:center;
  padding:12px 14px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(255,255,255,.95);
  box-shadow:0 5px 16px rgba(20,25,20,.05);
}
.auth-visual-photo .auth-feature .ui-icon{grid-row:1/3;margin:0;width:23px;height:23px;color:#c48400}
.auth-visual-photo .auth-feature strong{grid-column:2;font-size:11px}
.auth-visual-photo .auth-feature small{grid-column:2;font-size:9px;margin:0;color:#666}
.auth-panel .turnstile-box{margin:13px 0 15px}
@media(max-width:1320px){
  .auth-visual-photo{background-position:8% center}
  .auth-visual-photo .auth-showcase{width:min(400px,53%);padding:24px}
  .auth-visual-photo .auth-showcase h2{font-size:34px}
}

/* V0.3.14 — confirmation d'un scan supplémentaire et correction rapide de quantité */
.scan-duplicate-dialog{width:min(520px,100%)}
.scan-duplicate-product{display:grid;grid-template-columns:64px minmax(0,1fr);gap:13px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:15px;background:#faf9f5;margin-bottom:13px}
.scan-duplicate-image,.scan-duplicate-image img,.scan-duplicate-image .scan-product-fallback{width:64px;height:64px;border-radius:12px}
.scan-duplicate-image img{display:block;object-fit:contain;background:#fff;border:1px solid #eeeae1}
.scan-duplicate-image .scan-product-fallback{display:grid;place-items:center;font-size:25px;background:#fff}
.scan-duplicate-product strong,.scan-duplicate-product small,.scan-duplicate-product span{display:block}
.scan-duplicate-product strong{font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scan-duplicate-product small{font-size:9px;color:var(--muted);margin-top:3px}
.scan-duplicate-product span{display:inline-flex;width:max-content;margin-top:6px;padding:4px 7px;border-radius:999px;background:#f0f1f3;color:#676b72;font-size:8px;font-weight:800}
.scan-duplicate-notice{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:flex-start;padding:12px 13px;border-radius:14px;border:1px solid #f0d08b;background:#fff9e9;color:#765416;margin-bottom:16px}
.scan-duplicate-notice>.ui-icon{width:20px;height:20px;margin:2px auto 0;color:#c48500}
.scan-duplicate-notice strong,.scan-duplicate-notice span{display:block}
.scan-duplicate-notice strong{font-size:10px;color:#6f4a00;margin-bottom:3px}
.scan-duplicate-notice span{font-size:9px;line-height:1.5;color:#806b42}
.scan-quantity-label{display:block;font-size:9px;font-weight:900;color:#383b3e;margin:0 0 7px}
.scan-quantity-stepper{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;gap:8px;align-items:stretch}
.scan-quantity-stepper button{border:1px solid var(--line);background:#fff;border-radius:12px;display:grid;place-items:center;cursor:pointer;color:#555b60;min-height:50px}
.scan-quantity-stepper button:hover{border-color:#e6bd56;background:#fffaf0;color:#a66e00}
.scan-quantity-stepper button .ui-icon{width:20px;height:20px}
.scan-quantity-stepper input{height:50px;text-align:center;font-size:19px;font-weight:900;color:var(--ink);border:1px solid #e8c36d;background:#fffdf7;border-radius:12px;padding:0 10px}
.scan-quantity-stepper input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(255,183,20,.12)}
.scan-duplicate-quantity-hint{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:8px;color:var(--muted)}
.scan-duplicate-quantity-hint strong{color:#55585d}
.scan-duplicate-actions{margin-top:18px}
.scan-duplicate-actions .btn.primary{min-width:190px}
@media(max-width:620px){.scan-duplicate-dialog{padding-bottom:max(20px,env(safe-area-inset-bottom))}.scan-duplicate-product{grid-template-columns:56px minmax(0,1fr)}.scan-duplicate-image,.scan-duplicate-image img,.scan-duplicate-image .scan-product-fallback{width:56px;height:56px}.scan-quantity-stepper{grid-template-columns:48px minmax(0,1fr) 48px}.scan-duplicate-actions{grid-template-columns:1fr}.scan-duplicate-actions .btn{width:100%;min-width:0}}

/* V0.3.14 — catalogue privé + photo personnalisée pour les produits inconnus */
.private-product-builder{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:stretch;margin-top:11px}
.private-photo-picker{display:block;cursor:pointer;min-width:0}
.private-photo-preview{min-height:142px;height:100%;border:1px dashed #e3b94f;border-radius:14px;background:#fffdf8;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:5px;padding:12px;overflow:hidden;position:relative;color:#9a6900;transition:.16s ease}
.private-photo-preview:hover{background:#fff8e8;border-color:#d89a00}.private-photo-preview>.ui-icon{width:25px;height:25px}.private-photo-preview strong{font-size:10px;color:#4c4536}.private-photo-preview small{font-size:8px;color:#8b8068;line-height:1.4;max-width:120px}
.private-photo-preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#f4f1e8}.private-photo-change{position:absolute;left:8px;right:8px;bottom:8px;display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 8px;border-radius:9px;background:rgba(20,20,18,.74);color:#fff;font-size:8px;font-weight:850;backdrop-filter:blur(5px)}.private-photo-change .ui-icon{width:13px;height:13px}
.private-product-fields{display:grid;gap:9px;align-content:start}.private-product-fields .field{margin:0}.field-optional{font-size:8px;color:#999;font-weight:600;margin-left:4px}.private-product-note{display:flex;align-items:flex-start;gap:7px;margin-top:10px;padding:9px 10px;border-radius:11px;background:#f4f8f5;color:#5f6c63;font-size:8.5px;line-height:1.45}.private-product-note .ui-icon{width:14px;height:14px;color:#35805a;flex:0 0 auto;margin-top:1px}.private-product-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}.private-product-actions .btn{min-height:38px}
@media(max-width:620px){.private-product-builder{grid-template-columns:108px minmax(0,1fr);gap:9px}.private-photo-preview{min-height:132px;padding:8px}.private-photo-preview small{font-size:7.5px}.private-product-actions{display:grid;grid-template-columns:1fr 1fr}.private-product-actions .btn{width:100%;padding-left:8px;padding-right:8px}}
