:root{color-scheme:light;--bg: #f5f5f5;--bg-elevated: #fff;--text: #333;--text-secondary: #555;--text-muted: #777;--text-faint: #888;--text-ghost: #666;--text-placeholder: #999;--border: #ddd;--border-subtle: #eee;--primary: #4a90d9;--primary-soft: #eef5fc;--danger: #e74c3c;--danger-soft: #fdd;--danger-text: #c0392b;--btn-secondary-bg: #e8e8e8;--btn-icon-hover: #eee;--category-checked: #7a8a99;--overlay: rgba(0, 0, 0, .35);--shadow: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 2px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .12);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .18)}html[data-theme=dark]{color-scheme:dark;--bg: #121416;--bg-elevated: #1e2126;--text: #e6e8ea;--text-secondary: #c4c8cc;--text-muted: #9aa0a6;--text-faint: #8b9198;--text-ghost: #a8adb3;--text-placeholder: #7a8088;--border: #3a3f46;--border-subtle: #2c3036;--primary: #5a9ee0;--primary-soft: #1a2d42;--danger: #e74c3c;--danger-soft: #4a2020;--danger-text: #ff8a7a;--btn-secondary-bg: #2c3036;--btn-icon-hover: #2c3036;--category-checked: #5a6570;--overlay: rgba(0, 0, 0, .6);--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 2px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .45);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .5)}*{margin:0;padding:0;box-sizing:border-box}html,body{background:var(--bg);color:var(--text)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased}::placeholder{color:var(--text-placeholder);opacity:1}.app{max-width:600px;margin:0 auto;padding:0 12px 80px}.app-header{display:flex;align-items:center;gap:8px;padding:16px 0;position:sticky;top:0;background:var(--bg);z-index:10}.app-header-main{flex:1;min-width:0}.app-header h1{font-size:1.3rem}.app-magasin-btn{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;padding:6px 10px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;font-size:.95rem;font-weight:600;color:var(--text);cursor:pointer}.app-magasin-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-magasin-caret{color:var(--text-faint);font-size:.75rem}.magasin-pick{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:none;border:none;padding:0;text-align:left;cursor:pointer;font:inherit;color:inherit}.magasin-pick.is-current .rayon-name{font-weight:600}.magasin-current-mark{flex-shrink:0;font-size:.7rem;text-transform:uppercase;letter-spacing:.3px;color:var(--primary)}.switch-actions{display:flex;flex-direction:column;gap:8px}.switch-help{font-size:.8rem;color:var(--text-muted);margin:-4px 0 8px}.empty-cta{display:block;margin:16px auto 0;width:auto;max-width:280px}.empty-key{color:var(--text);font-weight:700}.btn{border:none;border-radius:8px;padding:10px 16px;font-size:.95rem;cursor:pointer;font-weight:500;transition:opacity .2s}.btn:active{opacity:.7}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff;width:100%}.btn-secondary{background:var(--btn-secondary-bg);color:var(--text);width:100%}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{background:transparent;color:var(--text-ghost);padding:6px 10px}.btn-sm{padding:6px 12px;font-size:.85rem}.btn-icon{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:4px 8px;border-radius:4px;color:inherit;transition:background .2s}.btn-icon:hover{background:var(--btn-icon-hover)}.btn-icon-danger:hover{background:var(--danger-soft)}.add-items{margin-bottom:16px}.add-textarea{width:100%;padding:12px;border:2px solid var(--border);border-radius:8px;font-size:1rem;font-family:inherit;resize:vertical;margin-bottom:8px;background:var(--bg-elevated);color:var(--text);transition:border-color .2s}.add-textarea:focus{outline:none;border-color:var(--primary)}.add-suggest-wrap{position:relative;margin-bottom:8px}.add-suggest-wrap .add-textarea{margin-bottom:0}.suggestions{position:absolute;left:0;right:0;top:100%;z-index:20;list-style:none;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-lg);max-height:220px;overflow:auto;margin-top:4px}.suggestions-item{display:flex;align-items:center;gap:4px;padding:6px 6px 6px 12px;cursor:pointer;font-size:.95rem}.suggestions-label{flex:1;min-width:0;word-break:break-word}.suggestions-dismiss{flex-shrink:0;color:var(--text-placeholder);font-size:.85rem}.suggestions-dismiss:hover{background:var(--danger-soft);color:var(--danger-text)}.suggestions-item.active,.suggestions-item:hover{background:var(--primary-soft)}.shopping-list{margin-top:8px}.shopping-list.is-reordering{-webkit-user-select:none;user-select:none;touch-action:none}.drag-ghost{position:fixed;z-index:50;pointer-events:none;background:var(--bg-elevated);border-radius:8px;padding:10px 12px;box-shadow:var(--shadow-xl);font-size:1rem;opacity:.95;box-sizing:border-box}.category-group{margin-bottom:16px}.category-title{font-size:.85rem;font-weight:600;color:#fff;background:var(--primary);padding:6px 12px;border-radius:6px;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.category-group-checked .category-title{background:var(--category-checked)}.shopping-item{background:var(--bg-elevated);border-radius:8px;padding:10px 12px;margin-bottom:3px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;transition:opacity .2s;box-shadow:var(--shadow)}.shopping-item.checked{opacity:.5}.shopping-item.checked .item-label{text-decoration:line-through;color:var(--text-placeholder)}.shopping-item.dragging{opacity:.35}.drag-handle{cursor:grab;touch-action:none;color:var(--text-placeholder);padding:4px 2px}.shopping-item.dragging .drag-handle{cursor:grabbing}.item-edit{flex:1;display:flex;align-items:center;gap:4px;min-width:0}.item-edit-input{flex:1;min-width:0;padding:8px;border:2px solid var(--primary);border-radius:6px;font-size:1rem;font-family:inherit;background:var(--bg-elevated);color:var(--text)}.item-main{flex:1;display:flex;align-items:center;gap:10px;cursor:pointer;min-width:0;-webkit-tap-highlight-color:transparent}.item-checkbox{font-size:1.3rem;flex-shrink:0}.item-label{font-size:1rem;word-break:break-word}.item-actions{display:flex;gap:2px;flex-shrink:0;align-items:center}.qty-spinner{display:inline-flex;flex-direction:column;flex-shrink:0;margin-right:2px;border:1px solid var(--border);border-radius:6px;overflow:hidden}.qty-spinner .qty-btn{padding:0;width:30px;height:20px;font-size:.85rem;line-height:1;border-radius:0}.qty-spinner .qty-btn+.qty-btn{border-top:1px solid var(--border)}.qty-spinner .qty-btn:disabled{opacity:.35;cursor:not-allowed}.qty-spinner .qty-btn:disabled:hover{background:none}.category-select{width:100%;display:flex;gap:8px;padding-top:8px;align-items:center}.category-select select{flex:1;padding:8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;background:var(--bg-elevated);color:var(--text)}.loading,.empty{text-align:center;padding:40px 20px;color:var(--text-placeholder);font-size:1rem}@media(min-width:640px){.app{padding:0 20px 40px}.app-header h1{font-size:1.5rem}}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}.gate-card{width:100%;max-width:420px;background:var(--bg-elevated);border-radius:12px;padding:24px 20px;box-shadow:var(--shadow-md)}.gate-card h1{font-size:1.4rem;margin-bottom:8px}.gate-lead{color:var(--text-secondary);margin-bottom:16px}.gate-label{display:block;font-size:.85rem;font-weight:600;margin-bottom:6px}.gate-input{width:100%;padding:12px;border:2px solid var(--border);border-radius:8px;font-size:1rem;font-family:inherit;margin-bottom:12px;background:var(--bg-elevated);color:var(--text)}.gate-input:focus{outline:none;border-color:var(--primary)}.gate-error{color:var(--danger);font-size:.9rem;margin-bottom:8px}.gate-hint{margin-top:16px;font-size:.8rem;color:var(--text-faint);line-height:1.4}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:30;display:flex;align-items:flex-end;justify-content:center}.modal{background:var(--bg-elevated);width:100%;max-width:600px;max-height:85vh;overflow:auto;border-radius:16px 16px 0 0;padding:16px}.modal-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.modal-header h2{flex:1;font-size:1.1rem}.modal-hint{font-size:.85rem;color:var(--text-muted);margin-bottom:12px}.rayon-list{list-style:none}.rayon-row{display:flex;align-items:center;gap:8px;padding:10px 8px;border-bottom:1px solid var(--border-subtle)}.rayon-name{flex:1;font-size:.95rem;min-width:0;word-break:break-word}.rayon-edit{flex:1;display:flex;align-items:center;gap:4px;min-width:0}.rayon-edit-input{flex:1;margin-bottom:0;padding:8px;font-size:.95rem}.rayon-actions{display:flex;gap:2px}.empty-rayons{color:var(--text-placeholder);font-size:.9rem;margin-bottom:12px}.rayon-add{display:flex;gap:8px;align-items:flex-start;margin-top:12px}.rayon-add-input{flex:1;margin-bottom:0}.rayon-add .btn{width:auto;flex-shrink:0}@media(min-width:640px){.modal-overlay{align-items:center}.modal{border-radius:12px;max-height:70vh}}.settings-section{background:var(--bg-elevated);border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:var(--shadow)}.settings-title{font-size:.85rem;font-weight:600;color:var(--primary);text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px}.settings-hint{font-size:.85rem;color:var(--text-muted);line-height:1.4;margin-bottom:12px}.settings-current-key{font-size:.95rem;margin-bottom:12px;word-break:break-all}.settings-key-form .gate-input{margin-bottom:12px}.settings-check{display:flex;align-items:flex-start;gap:12px;cursor:pointer}.settings-check+.settings-check{margin-top:16px}.settings-check input{width:20px;height:20px;margin-top:2px;flex-shrink:0;accent-color:var(--primary)}.settings-check-text{display:flex;flex-direction:column;gap:4px;min-width:0}.settings-check-text strong{font-size:.95rem;font-weight:600}.settings-check-text .settings-hint{margin-bottom:0}.theme-options{display:flex;gap:8px}.theme-option{flex:1;padding:10px 8px;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;font-family:inherit}.theme-option.is-active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}
