*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;color:#333;background:#f5f5f5}.container{max-width:1200px;margin:0 auto;padding:0 20px}.header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem 0}.header-content{display:flex;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:1rem}.header-content>div:first-child{flex:1;min-width:0}.header h1{font-size:2.5rem;font-weight:700;margin:0;cursor:pointer;transition:opacity .2s ease}.header h1:hover{opacity:.8}.tagline{font-size:1.1rem;opacity:.9;margin-top:.5rem;line-height:1.4;overflow-wrap:break-word;max-width:60vw}.auth-section{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;flex-shrink:0}.auth-section button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:6px;cursor:pointer;backdrop-filter:blur(10px);transition:all .2s;font-size:.9rem}.auth-section button:hover{background:#ffffff4d;transform:translateY(-1px)}.demo-btn{background:#10b981!important;border-color:#059669!important}.demo-btn:hover{background:#059669!important}.user-info{display:flex;align-items:center;gap:.5rem;background:#ffffff1a;padding:.5rem 1rem;border-radius:6px;backdrop-filter:blur(10px)}.main-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0}.card{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.card h2{margin-bottom:1.5rem;color:#1f2937;font-size:1.5rem;font-weight:600}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#374151}.form-group input,.form-group textarea,.form-group select{width:100%;padding:.75rem;border:1px solid #d1d5db;border-radius:6px;font-size:1rem;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-group textarea{min-height:120px;resize:vertical}.checkbox-group{display:flex;align-items:flex-start;gap:1rem;margin:1rem 0;padding:1rem;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.checkbox-group input[type=checkbox]{margin:0;flex-shrink:0;margin-top:.25rem;width:18px;height:18px;accent-color:#3b82f6}.checkbox-group label{margin:0;cursor:pointer;line-height:1.4;font-weight:500;color:#374151}.form-hint{display:block;color:#6b7280;font-size:.875rem;margin-top:.25rem}.location-group{display:flex;gap:.5rem;align-items:flex-start}.location-input{flex:1}.get-location-btn{background:#059669;color:#fff;border:none;padding:.75rem 1rem;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background .2s}.get-location-btn:hover{background:#047857}.get-location-btn:disabled{background:#9ca3af;cursor:not-allowed}.form-feedback{margin-top:.5rem;font-size:.875rem}.form-feedback.success{color:#059669}.form-feedback.error{color:#dc2626}.location-label-input{margin-top:.5rem;font-size:.9rem;opacity:.8}.privacy-info{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:1rem;margin-top:.5rem}.privacy-info h4{color:#0369a1;margin-bottom:.5rem;font-size:.95rem}.privacy-info code{background:#e0f2fe;color:#0c4a6e;padding:.2rem .4rem;border-radius:4px;font-family:Monaco,Menlo,monospace;font-size:.85rem}button[type=submit]{background:#3b82f6;color:#fff;border:none;padding:.75rem 2rem;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}button[type=submit]:hover{background:#2563eb}button[type=submit]:disabled{background:#9ca3af;cursor:not-allowed}.status-message{padding:1rem;border-radius:8px;margin-bottom:1rem;font-weight:500;display:none;position:relative;animation:statusSlideIn .3s ease-out;border-left:4px solid}@keyframes statusSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.status-message.success{background:linear-gradient(135deg,#dcfce7,#f0fdf4);color:#166534;border-color:#22c55e;box-shadow:0 4px 12px #22c55e26}.status-message.error{background:linear-gradient(135deg,#fef2f2,#fef7f7);color:#991b1b;border-color:#ef4444;box-shadow:0 4px 12px #ef444426}.status-message.info{background:linear-gradient(135deg,#dbeafe,#eff6ff);color:#1e40af;border-color:#3b82f6;box-shadow:0 4px 12px #3b82f626}.status-success{background:linear-gradient(135deg,#dcfce7,#f0fdf4);color:#166534;border:1px solid #bbf7d0;border-left:4px solid #22c55e}.status-error{background:linear-gradient(135deg,#fef2f2,#fef7f7);color:#991b1b;border:1px solid #fecaca;border-left:4px solid #ef4444}#map{height:300px;border-radius:6px;margin-top:1rem}.issues-list{max-height:500px;overflow-y:auto}.issue-item{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:1.5rem;margin-bottom:1rem;transition:all .2s;cursor:pointer}.issue-item:hover{background:#f3f4f6;border-color:#d1d5db}.issue-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.issue-title{font-weight:600;color:#1f2937;font-size:1.1rem}.issue-distance{color:#6b7280;font-size:.875rem}.issue-description{color:#4b5563;margin-bottom:1rem;line-height:1.5}.issue-meta{display:flex;justify-content:space-between;align-items:center;font-size:.875rem;color:#6b7280}.hashtag{background:#dbeafe;color:#1e40af;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;margin-right:.5rem}.issue-actions{display:flex;gap:.5rem;margin-top:1rem}.action-btn{background:#f3f4f6;border:1px solid #d1d5db;color:#374151;padding:.5rem .75rem;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s}.action-btn:hover{background:#e5e7eb;transform:translateY(-1px)}.retry-btn{background:#fef3c7;border-color:#f59e0b;color:#92400e}.retry-btn:hover{background:#fcd34d;border-color:#d97706}.edit-btn{background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}.edit-btn:hover{background:#bfdbfe;border-color:#2563eb}.post-btn{background:#dcfce7;border-color:#10b981;color:#065f46}.post-btn:hover{background:#bbf7d0;border-color:#059669}.demo-notice{background:linear-gradient(135deg,#fef3c7,#fef9e7);color:#92400e;padding:1.5rem;border-radius:12px;margin-bottom:2rem;border:2px solid #fbbf24;border-left:6px solid #f59e0b;box-shadow:0 4px 16px #fbbf2426;position:relative;overflow:hidden}.demo-notice:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#f59e0b,#fbbf24,#f59e0b);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.welcome-message{background:linear-gradient(135deg,#dcfce7,#f0fdf4);color:#166534;padding:1.5rem;border-radius:12px;margin-bottom:2rem;border:2px solid #22c55e;border-left:6px solid #16a34a;box-shadow:0 4px 16px #22c55e26;text-align:center;font-size:1.1rem}.welcome-message .emoji{font-size:1.5rem;margin-right:.5rem}.loading-spinner{display:inline-block;width:16px;height:16px;border:2px solid #f3f3f3;border-top:2px solid #3498db;border-radius:50%;animation:spin 1s linear infinite;margin-right:8px}.loading-indicator{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 0}.loading-indicator .loading-spinner{width:20px;height:20px;border-width:3px;border-color:#3b82f6;border-top-color:transparent}button.loading{opacity:.6;cursor:not-allowed;position:relative}button.loading:after{content:"";position:absolute;top:50%;left:50%;width:16px;height:16px;margin-top:-8px;margin-left:-8px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-modal-overlay{position:fixed;inset:0;background-color:#00000080;backdrop-filter:blur(4px);z-index:1000;display:none;justify-content:center;align-items:center;padding:20px;box-sizing:border-box}.login-modal{background:#fff;border-radius:12px;padding:32px;width:100%;max-width:400px;box-shadow:0 20px 50px #0000004d;position:relative;animation:modalAppear .2s ease-out}@keyframes modalAppear{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.login-modal-close{position:absolute;top:16px;right:16px;background:none;border:none;font-size:24px;cursor:pointer;color:#666;line-height:1;padding:4px;border-radius:4px;transition:background-color .2s}.login-modal-close:hover{background:#f3f4f6}.login-submit-btn{width:100%;padding:12px 24px;background:#1d4ed8;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s;position:relative}.login-submit-btn:hover{background:#1e40af}.login-submit-btn:disabled{background:#9ca3af;cursor:not-allowed}.status-message.info{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}.form-feedback.loading{color:#3b82f6}.location-loading,.location-success,.location-error{padding:.5rem;border-radius:4px;font-size:.875rem}.location-loading{background:#dbeafe;color:#1e40af}.location-success{background:#dcfce7;color:#166534}.location-error{background:#fef2f2;color:#991b1b}.no-issues{text-align:center;padding:3rem 2rem;color:#6b7280}.no-issues-icon{font-size:3rem;margin-bottom:1rem}.no-issues-text{font-size:1.125rem;font-weight:500;color:#374151;margin-bottom:.5rem}.no-issues-subtext{font-size:.875rem;color:#6b7280}.issue-hashtags{display:flex;flex-wrap:wrap;gap:.25rem}.issue-author{margin-top:.25rem}.bluesky-status{display:inline-flex;align-items:center;font-size:.75rem;font-weight:500;padding:.25rem .5rem;border-radius:4px;margin-left:.5rem}.bluesky-status.posted{background:#dcfce7;color:#166534;border:1px solid #bbf7d0;text-decoration:none;transition:all .2s ease}.bluesky-status.posted:hover{background:#bbf7d0;color:#14532d;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.bluesky-status.failed{background:#fee2e2;color:#dc2626;border:1px solid #fecaca}.bluesky-status.pending{background:#fef3c7;color:#d97706;border:1px solid #fed7aa}.bluesky-status.local-only{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db}.issue-modal-overlay{backdrop-filter:blur(4px)}.issue-modal{box-shadow:0 25px 50px #00000040;animation:modalSlideIn .3s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.comment-form textarea:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.comment-form button:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.form-feedback.loading .location-loading{position:relative}.form-feedback.loading .location-loading:before{content:"";display:inline-block;width:12px;height:12px;border:2px solid #3b82f6;border-top:2px solid transparent;border-radius:50%;animation:spin 1s linear infinite;margin-right:8px;vertical-align:middle}.issue-stats-container{margin-bottom:1rem}.issue-stats{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.875rem;color:#6b7280}.stat-item{background:#f3f4f6;padding:.25rem .5rem;border-radius:.375rem;border:1px solid #e5e7eb;display:inline-flex;align-items:center;gap:.25rem}.stat-item:hover{background:#e5e7eb}@media (max-width: 768px){.header-content{text-align:center}.header h1{font-size:2rem}.main-grid{grid-template-columns:1fr}.auth-section{justify-content:center;width:100%}.container{padding:0 1rem}.card{padding:1.5rem}.location-group{flex-direction:column}.get-location-btn{width:100%}}@media (max-width: 480px){.header{padding:1rem 0}.header-content{flex-direction:column;align-items:flex-start;gap:1rem}.header h1{font-size:1.75rem}.tagline{font-size:1rem;max-width:100%;margin-top:.25rem}.auth-section{width:100%;justify-content:flex-start}.main-grid{margin:1rem 0;gap:1rem}.card{padding:1rem}.auth-section{flex-direction:column;gap:.5rem}.auth-section button{width:100%}}.comments-section{margin-top:1rem;padding:1rem;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.comments-section h4{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#374151}.comment{padding:.75rem;background:#fff;border-radius:6px;border:1px solid #e5e7eb;margin-bottom:.75rem}.comment:last-child{margin-bottom:0}.comment-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.comment-author{font-weight:600;color:#3b82f6;font-size:.875rem}.comment-time{font-size:.75rem;color:#6b7280}.comment-text{font-size:.875rem;line-height:1.5;color:#374151;word-wrap:break-word}.toolbar{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:1rem;margin:1rem 0;display:flex;justify-content:space-between;align-items:center;gap:1rem;box-shadow:0 1px 3px #0000001a}.toolbar-btn{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s ease}.toolbar-btn:hover{background:#f9fafb;border-color:#9ca3af}.toolbar-btn.primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.toolbar-btn.primary:hover{background:#2563eb;border-color:#2563eb}.search-container{display:flex;gap:.5rem;align-items:center}.search-input{padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:6px;min-width:250px;font-size:.875rem}.search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.map-view{background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin:1rem 0;position:relative;box-shadow:0 4px 6px #0000001a}.map-view h2{padding:1.5rem 1.5rem 1rem;margin:0;border-bottom:1px solid #e5e7eb;color:#111827;font-size:1.25rem}.map-view #map{height:500px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.issue-creation-view{background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin:1rem 0;padding:1.5rem;position:relative;box-shadow:0 4px 6px #0000001a}.issue-creation-view h2{margin:0 0 1.5rem;color:#111827;font-size:1.5rem;padding-right:2rem}.close-btn{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:#6b7280;line-height:1;padding:.25rem;border-radius:4px;transition:all .2s ease;z-index:1000}.close-btn:hover{background:#f3f4f6;color:#374151}.hidden{display:none!important}@media (max-width: 768px){.toolbar{flex-direction:column;align-items:stretch;gap:.75rem}.search-container{width:100%}.search-input{flex:1;min-width:0}.map-view #map{height:300px}.issue-creation-view{padding:1rem}.close-btn{top:.75rem;right:.75rem}}@media (max-width: 480px){.toolbar{margin:.5rem 0;padding:.75rem}.toolbar-btn{padding:.75rem 1rem;font-size:.875rem}.search-input{min-width:0;font-size:1rem}}
