*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;color:#e0e0e0;background:#0f0f14}#root{min-height:100vh}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}a{color:#ffd400;text-decoration:none}a:hover{text-decoration:underline}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:linear-gradient(145deg,#0f0f14,#1a1a24,#0d0d12)}.login-card{width:100%;max-width:22rem;padding:1.75rem;background:#1a1a24e6;border:1px solid rgba(255,212,0,.2);border-radius:1rem;box-shadow:0 8px 32px #0006}.login-card h1{margin:0 0 .25rem;font-size:1.5rem;font-weight:600;color:#fff;text-align:center}.login-sub{margin:0 0 1.5rem;font-size:.875rem;color:#888;text-align:center}.login-form{display:flex;flex-direction:column;gap:.75rem}.login-form input{padding:.75rem 1rem;font-size:1rem;border:1px solid #333;border-radius:.5rem;background:#111;color:#fff;outline:none}.login-form input:focus{border-color:#ffd40080}.login-form button{padding:.75rem 1rem;font-size:1rem;font-weight:600;color:#0f0f14;background:#ffd400;border:none;border-radius:.5rem;cursor:pointer;margin-top:.25rem}.login-form button:disabled{opacity:.7;cursor:not-allowed}.login-error{margin:0;font-size:.875rem;color:#e55}.app{min-height:100vh}.app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:#888}.dashboard{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.75rem 1rem;background:#1a1a24f2;border-bottom:1px solid rgba(255,212,0,.15);position:sticky;top:0;z-index:10}.menu-btn{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;background:transparent;border:1px solid #333;border-radius:.5rem;color:#fff}.menu-btn:active{background:#222}.menu-icon{display:block;width:1.25rem;height:2px;background:currentColor;box-shadow:0 -5px 0 currentColor,0 5px 0 currentColor}.header-title{margin:0;font-size:1.125rem;font-weight:600;color:#fff;flex:1;text-align:center}.header-actions{display:flex;align-items:center;gap:.25rem}.notif-btn{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;font-size:1.25rem;background:transparent;border:1px solid transparent;border-radius:.5rem;color:#fff}.notif-btn:hover{background:#333}.logout-btn{padding:.5rem .75rem;font-size:.875rem;color:#ffd400;background:transparent;border:1px solid rgba(255,212,0,.4);border-radius:.5rem}.logout-btn:hover{background:#ffd4001a}.install-banner{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem;background:#ffd40026;border-bottom:1px solid rgba(255,212,0,.3)}.install-banner-text{font-size:.875rem;color:#e0e0e0;flex:1}.install-banner-actions{display:flex;align-items:center;gap:.5rem}.btn-sm{padding:.4rem .75rem;font-size:.875rem}.install-banner-dismiss{width:1.75rem;height:1.75rem;padding:0;font-size:1.25rem;line-height:1;color:#888;background:transparent;border:none;border-radius:.25rem}.install-banner-dismiss:hover{color:#fff;background:#333}.install-header-btn{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;font-size:1.2rem;background:transparent;border:1px solid transparent;border-radius:.5rem;color:#fff}.install-header-btn:hover{background:#333}.sidebar{position:fixed;top:0;left:0;width:85%;max-width:20rem;height:100vh;background:#1a1a24;border-right:1px solid #333;z-index:20;transform:translate(-100%);transition:transform .2s ease;display:flex;flex-direction:column;overflow:hidden}.sidebar-open{transform:translate(0)}.sidebar-backdrop{position:fixed;inset:0;background:#00000080;z-index:18}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #333}.sidebar-header h2{margin:0;font-size:1rem;font-weight:600;color:#fff}.sidebar-close{width:2rem;height:2rem;padding:0;font-size:1.5rem;line-height:1;color:#888;background:transparent;border:none;border-radius:.25rem}.sidebar-close:hover{color:#fff;background:#333}.preset-list{margin:0;padding:.5rem;list-style:none;overflow-y:auto}.preset-empty{padding:1rem;font-size:.875rem;color:#666}.preset-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.75rem 1rem;margin-bottom:.25rem;background:#222;border-radius:.5rem;cursor:pointer;border:1px solid transparent}.preset-item:hover{background:#2a2a36;border-color:#ffd40033}.preset-label{flex:1;font-size:.9rem;color:#e0e0e0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-delete{flex-shrink:0;width:1.75rem;height:1.75rem;padding:0;font-size:1.25rem;line-height:1;color:#888;background:transparent;border:none;border-radius:.25rem}.preset-delete:hover{color:#e55;background:#ee555526}.content{flex:1;padding:1rem 1rem 2rem}.form-section{margin-bottom:1.5rem}.form-card{background:#1a1a24e6;border:1px solid rgba(255,212,0,.2);border-radius:1rem;padding:1.25rem}.label{display:block;margin-bottom:.35rem;font-size:.875rem;font-weight:500;color:#b0b0b0}.textarea{width:100%;padding:.75rem 1rem;margin-bottom:1rem;font-size:.95rem;line-height:1.5;color:#fff;background:#111;border:1px solid #333;border-radius:.5rem;resize:vertical;min-height:4rem}.textarea:focus{outline:none;border-color:#ffd40080}.row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.field .label{margin-bottom:.35rem}.select{width:100%;padding:.65rem 1rem;font-size:.95rem;color:#fff;background:#111;border:1px solid #333;border-radius:.5rem}.select:focus{outline:none;border-color:#ffd40080}.save-preset-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;align-items:center}.preset-name-input{flex:1;min-width:0;padding:.5rem .75rem;font-size:.9rem;color:#fff;background:#111;border:1px solid #333;border-radius:.5rem}.preset-name-input:focus{outline:none;border-color:#ffd40080}.form-error{margin:0 0 .75rem;font-size:.875rem;color:#e55}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.25rem;font-size:1rem;font-weight:600;border-radius:.5rem;border:none;cursor:pointer;transition:opacity .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{width:100%;color:#0f0f14;background:#ffd400}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-secondary{color:#ffd400;background:transparent;border:1px solid rgba(255,212,0,.5)}.btn-secondary:hover{background:#ffd4001a}.prompt-final-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.prompt-final-row .label{margin-bottom:0}.btn-link{padding:.4rem .75rem;font-size:.8rem;color:#ffd400;background:transparent;border:none;text-decoration:underline}.btn-link:hover{text-decoration:none}.textarea-prompt{margin-bottom:1rem;min-height:5rem}.images-section{margin-top:1.5rem}.section-title{margin:0 0 1rem;font-size:1.125rem;font-weight:600;color:#fff}.images-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem}.images-empty{grid-column:1 / -1;padding:2rem;text-align:center;color:#666;font-size:.95rem}.image-card{background:#1a1a24e6;border:1px solid #333;border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.image-preview{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#111}.btn-download{display:block;padding:.6rem 1rem;font-size:.875rem;font-weight:500;text-align:center;color:#ffd400;background:transparent;border:none;border-top:1px solid #333;cursor:pointer;text-decoration:none}.btn-download:hover{background:#ffd40014;text-decoration:none}@media(min-width:768px){.header{padding:.75rem 1.5rem}.menu-btn{display:none}.sidebar{position:relative;width:16rem;max-width:none;height:auto;min-height:0;transform:none;flex-shrink:0;border-right:1px solid #333;overflow-y:auto}.sidebar-backdrop,.sidebar-close{display:none}.dashboard{flex-direction:row}.content{flex:1;min-width:0;padding:1.5rem}.form-card{padding:1.5rem}.images-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.25rem}}@media(min-width:1024px){.images-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}
