body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #121212; color: #ffffff; margin: 0; overflow-x: hidden; display: flex; } .main-panel { flex-grow: 1; display: flex; justify-content: center; align-items: center; min-height: 100vh; padding: 2rem; transition: 0.3s; } .container { background-color: #1e1e1e; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 16px rgba(0,0,0,0.5); width: 90%; max-width: 650px; /* ZWIĘKSZONE Z 500px - panel na komputerze jest teraz szerszy */ text-align: center; box-sizing: border-box; } h1 { color: #00ff88; margin-top: 0; } .mode-indicator { color: #aaa; font-size: 0.9rem; margin-bottom: 20px; } input[type="file"] { display: none; } .custom-file-upload { border: 2px dashed #00ff88; padding: 1.5rem; cursor: pointer; border-radius: 8px; display: block; margin-bottom: 1rem; transition: 0.3s; } .custom-file-upload:hover { background-color: rgba(0, 255, 136, 0.1); } #preview { max-width: 100%; border-radius: 8px; margin-bottom: 1rem; display: none; max-height: 300px; object-fit: cover; width: 100%; } button { background-color: #00ff88; color: #121212; border: none; padding: 10px 20px; font-size: 1rem; font-weight: bold; border-radius: 6px; cursor: pointer; width: 100%; transition: 0.3s; } button:hover { background-color: #00cc6a; } button:disabled { background-color: #555; cursor: not-allowed; } .results { margin-top: 1.5rem; text-align: left; display: none; background-color: #2a2a2a; padding: 1rem; border-radius: 8px; } table { width: 100%; border-collapse: collapse; margin-top: 10px; } th, td { text-align: left; padding: 8px; border-bottom: 1px solid #444; } th { color: #888; font-size: 0.9rem; } .emoji-col { width: 30px; text-align: center; } .val-model { color: #00ff88; font-weight: bold; } .val-truth { color: #ffaa00; } .val-diff { color: #ff4444; font-size: 0.9rem; } .sidebar { position: fixed; right: -400px; top: 0; width: 350px; height: 100vh; background-color: #1a1a1a; border-left: 1px solid #333; transition: right 0.3s ease-in-out; padding: 1.5rem; box-sizing: border-box; overflow-y: auto; z-index: 100; } .sidebar.open { right: 0; } #sidebarTitle { color: #00ff88; margin-top: 0; } #sidebarDesc { font-size: 0.85rem; color: #888; } /* PRZYCISKI ZAKŁADEK */ .toggle-btn { position: fixed; right: 20px; background-color: #333; color: white; width: 180px; height: 45px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; z-index: 101; transition: all 0.3s ease-in-out; border-radius: 6px; box-shadow: -2px 0 5px rgba(0,0,0,0.5); } #btnTest { top: 20px; } #btnExternal { top: 75px; } #btnUser { top: 130px; } .toggle-btn.shifted { right: 350px; } .toggle-btn.open { background-color: #00ff88; color: #121212; border-radius: 6px 0 0 6px; } .meal-card { background-color: #2a2a2a; border-radius: 8px; padding: 10px; margin-bottom: 15px; cursor: pointer; border: 1px solid transparent; transition: 0.2s; } .meal-card:hover { border-color: #00ff88; } .meal-card img { width: 100%; height: 120px; object-fit: cover; border-radius: 4px; } .meal-card-title { font-weight: bold; margin: 8px 0 4px 0; font-size: 1.1rem; } .meal-card-macro { font-size: 0.85rem; color: #aaa; } .add-meal-form { background-color: #222; padding: 15px; border-radius: 8px; margin-top: 20px; border: 1px dashed #555; } .add-meal-form input[type="number"], .add-meal-form input[type="text"] { width: 100%; padding: 8px; margin-bottom: 8px; background-color: #333; border: 1px solid #444; color: white; border-radius: 4px; box-sizing: border-box; } .form-label { font-size: 0.85rem; color: #aaa; display: block; margin-bottom: 5px; } .form-file { display: block !important; margin-bottom: 10px; font-size: 0.8rem; } .form-row { display: flex; gap: 5px; } .btn-save { margin-top: 10px; background-color: #444; color: white; } /* --- RESPONSYWNOŚĆ I PRZYCISK MENU - FINALNA, KULOODPORNA POPRAWKA UX --- */ .mobile-hamburger-wrapper { display: none; /* Całkowicie ukrywamy przycisk na komputerze */ } @media (max-width: 800px) { /* Bezwzględne wymuszenie układu pionowego, bez tego wszystko się rozsypuje */ body { flex-direction: column !important; align-items: center !important; } /* Mniejsze paddingi zewnętrzne, żeby panel główne miał więcej miejsca na oddychanie */ .main-panel { width: 100% !important; min-height: auto !important; padding: 10px !important; box-sizing: border-box !important; } /* KULOODPORNE CENTROWANIE NA 90% SZEROKOŚCI - Twoja sugestia, to jest Source of Truth */ .container { width: 90% !important; /* Agresywne wymuszenie szerokości na telefonie */ max-width: 650px !important; /* Ale nie szerszy niż wersja PC */ margin: 0 auto !important; /* Gwarantuje idealne centrowanie */ box-sizing: border-box !important; } /* Menu pod przyciskiem również ułożone Flexboxem */ .menu-container { display: none; flex-direction: column; align-items: center; width: 100%; gap: 10px; margin-top: 10px; margin-bottom: 20px; } .menu-container.show { display: flex; } /* Wyśrodkowane Hamburger Menu - ma taką samą szerokość jak kontener! */ .mobile-hamburger-wrapper { display: flex !important; justify-content: center !important; width: 100% !important; margin-top: 20px; margin-bottom: 10px; } .hamburger-btn { display: block !important; background-color: #333; color: #00ff88; border: 1px solid #00ff88; padding: 12px 20px; font-size: 1.1rem; font-weight: bold; border-radius: 6px; cursor: pointer; width: 90% !important; /* Zrównane z szerokością kontenera */ max-width: 650px !important; } /* Przyciski zakładek - teraz idealnie dopasują się do szerokości panelu */ .toggle-btn { display: block !important; width: 90% !important; max-width: 650px !important; position: static !important; margin: 0 auto !important; } /* --- FINAŁOWA POPRAWKA TABELI NA MOBILE (Gdzie uciekały litery) --- */ .results { padding: 8px !important; } /* Ukrywamy kolumny/ikony na mobile, jeśli są, żeby tekst miał luz */ .emoji-col { display: none !important; } /* Panel boczny rozciągamy na całą szerokość telefonu */ .sidebar { width: 100%; right: -100%; } .sidebar.open { right: 0; } }