:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-soft: #eff6ff;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-soft: #fef2f2;--color-bg: #f3f4f6;--color-surface: #ffffff;--color-border: #e5e7eb;--color-text: #111827;--color-text-muted: #6b7280;--radius-sm: .5rem;--radius-md: .75rem;--radius-pill: 999px;--shadow-card: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .08);--shadow-raised: 0 4px 12px rgba(16, 24, 40, .12)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.6;color:var(--color-text);background:var(--color-bg)}#root{min-height:100vh}.app-header{display:flex;align-items:center;gap:.6rem;padding:.9rem 1.25rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.app-header__logo{width:28px;height:28px;flex-shrink:0}.app-header__title{font-size:1.05rem;font-weight:700;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{max-width:640px;margin:0 auto;padding:1.25rem 1rem 3rem}.back-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.9rem;font-weight:600;color:var(--color-text-muted);text-decoration:none;margin-bottom:1rem}.back-link:hover{color:var(--color-text)}h1{font-size:1.3rem;margin:0 0 .75rem}a{color:var(--color-primary)}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem 1.1rem;margin-bottom:1.25rem;box-shadow:var(--shadow-card)}.project-card__description{margin:0 0 .85rem;color:var(--color-text)}.project-card__meta{display:flex;flex-direction:column;gap:.5rem;margin:0;font-size:.9rem}.project-card__meta-row{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;padding-top:.5rem;border-top:1px solid var(--color-border)}.project-card__meta-row:first-child{padding-top:0;border-top:none}.project-card__meta-label{color:var(--color-text-muted);flex-shrink:0}.project-card__meta-value{text-align:right;overflow-wrap:anywhere}.project-card__version-tag{display:inline-block;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.85em;background:var(--color-primary-soft);color:var(--color-primary-hover);padding:.1em .5em;border-radius:var(--radius-sm)}input,textarea,button{font:inherit;font-size:16px}label{display:block;font-weight:600;margin-top:.9rem;margin-bottom:.3rem}input[type=email],input[type=text],textarea{display:block;width:100%;min-height:44px;padding:.55rem .8rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);transition:border-color .15s ease}input[type=email]:focus,input[type=text]:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}textarea{min-height:100px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.6rem 1.4rem;border-radius:var(--radius-sm);font-weight:600;border:1px solid transparent;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,opacity .15s ease;margin-top:.9rem}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.btn-danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover)}.btn-danger-outline{background:var(--color-danger-soft);border-color:var(--color-danger-soft);color:var(--color-danger-hover)}.btn-danger-outline:hover:not(:disabled){background:#fee2e2}.cta-link{display:inline-flex;align-items:center;gap:.4rem;margin-bottom:1rem}.feedback-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.feedback-card{display:block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.85rem 1rem;text-decoration:none;color:var(--color-text);box-shadow:var(--shadow-card);transition:box-shadow .15s ease,border-color .15s ease}.feedback-card:hover{box-shadow:var(--shadow-raised);border-color:#d1d5db}.feedback-card__top{display:flex;align-items:center;gap:.5rem;margin-bottom:.45rem}.feedback-card__unread-dot{width:8px;height:8px;border-radius:50%;background:var(--color-primary);flex-shrink:0}.feedback-card__comment{color:var(--color-text);margin:0 0 .4rem}.feedback-card__footer{display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--color-text-muted)}.empty-state{text-align:center;color:var(--color-text-muted);padding:2.5rem 1rem;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.thread-images{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0 1rem}.thread-images img{max-width:150px;border-radius:var(--radius-sm);border:1px solid var(--color-border)}.reply-list{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-direction:column;gap:.6rem}.reply-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.7rem .9rem}.reply-item__author{display:block;font-size:.82rem;font-weight:700;color:var(--color-primary-hover);margin-bottom:.15rem}.reply-item--admin .reply-item__author{color:var(--color-danger-hover)}.button-row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.button-row .btn{margin-top:.5rem}[role=alert]{background:var(--color-danger-soft);color:var(--color-danger-hover);border:1px solid #fecaca;border-radius:var(--radius-sm);padding:.6rem .85rem;margin-top:.75rem;font-size:.92rem}dialog{border:none;border-radius:var(--radius-md);padding:1.25rem;max-width:90vw;width:340px;box-shadow:0 10px 30px #0003}dialog::backdrop{background:#11182780}dialog p{margin:0 0 1rem}dialog .button-row{justify-content:flex-end}dialog .btn{margin-top:0}img{max-width:100%}
