.star-rating{display:inline-flex;align-items:center;gap:1px}.star-rating__star{color:var(--border, #e5e7eb);line-height:1;-webkit-user-select:none;user-select:none;transition:color .15s,transform .15s}.star-rating__star--filled{color:var(--gold, #f5a623)}.star-rating--editable .star-rating__star{cursor:pointer}.star-rating--editable .star-rating__star:hover{transform:scale(1.15);color:var(--gold, #f5a623)}.star-rating--editable .star-rating__star:focus-visible{outline:2px solid var(--primary, #00897B);outline-offset:2px;border-radius:2px}:root{--primary: #00897B;--primary-light: #E0F2F1;--primary-dark: #00695C;--primary-gradient: linear-gradient(135deg, #00897B 0%, #4DB6AC 100%);--success: #00b894;--success-light: #e6faf5;--warning: #e17055;--warning-light: #fff3f0;--danger: #ff6b6b;--danger-light: #ffe8e8;--gold: #f5a623;--text: #1a1a2e;--text-secondary: #6b7280;--text-muted: #9ca3af;--bg: #f9fafb;--bg-card: #ffffff;--border: #e5e7eb;--border-light: #f3f4f6;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit;font-size:16px}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:#fffffff2;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding-top:env(safe-area-inset-top)}.header-inner{max-width:1280px;margin:0 auto;padding:0 max(24px,env(safe-area-inset-left));height:60px;display:flex;align-items:center;justify-content:space-between}.logo{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700;color:var(--text);transition:opacity .2s;letter-spacing:-.3px}.logo:hover{opacity:.7}.logo svg{flex-shrink:0}.nav-links{display:flex;gap:2px}.nav-link{padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;color:var(--text-secondary);transition:background .2s,color .2s}.nav-link:hover{background:var(--border-light);color:var(--text)}.nav-link.active{background:var(--primary);color:#fff}.main-content{flex:1;max-width:1280px;width:100%;margin:0 auto;padding:24px}.card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border-light);box-shadow:var(--shadow);padding:20px;transition:box-shadow .25s,transform .2s}.card-clickable{cursor:pointer}.card-clickable:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;transition:all .2s;border:none}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-success{background:var(--success);color:#fff}.btn-warning{background:var(--warning);color:#fff}.btn-danger-outline{background:transparent;color:var(--danger);border:1.5px solid var(--danger)}.btn-danger-outline:hover{background:var(--danger-light);box-shadow:none}.btn-secondary{background:var(--border-light);color:var(--text-secondary)}.btn-secondary:hover{box-shadow:none;background:var(--border)}.btn-sm{padding:8px 16px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.input{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:15px;color:var(--text);background:#fff;transition:border-color .2s,box-shadow .2s}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #00897b1a}.input::placeholder{color:var(--text-muted)}textarea.input{resize:vertical;min-height:100px}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:600;letter-spacing:.2px}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-success{background:var(--success-light);color:var(--success)}.badge-primary{background:var(--primary-light);color:var(--primary)}.badge-danger{background:var(--danger-light);color:var(--danger)}.badge-neutral{background:var(--border-light);color:var(--text-secondary)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;color:var(--text-muted)}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:80px 24px;color:var(--text-muted)}.empty-state-icon{font-size:64px;margin-bottom:16px;opacity:.3}.empty-state-text{font-size:16px;font-weight:500;margin-bottom:8px}.empty-state-sub{font-size:14px;color:var(--text-muted);margin-bottom:20px}.cover-thumb{width:56px;height:84px;border-radius:6px;object-fit:cover;background:var(--border-light);flex-shrink:0}.cover-placeholder{width:56px;height:84px;border-radius:6px;background:var(--border-light);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-muted)}.cover-placeholder svg{width:24px;height:24px}.cover-large{width:180px;height:270px;border-radius:var(--radius);object-fit:cover;box-shadow:var(--shadow-xl)}.cover-placeholder-large{width:180px;min-height:270px;border-radius:var(--radius);background:var(--border-light);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted)}.cover-placeholder-large>svg{width:48px;height:48px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--border-light) 25%,#e8e8e8 50%,var(--border-light) 75%);background-size:800px 100%;animation:shimmer 1.5s infinite linear;border-radius:var(--radius-sm)}.skeleton-cover{width:100%;aspect-ratio:2/3;border-radius:var(--radius)}.skeleton-text{height:14px;margin-top:10px;width:80%}.skeleton-text-short{height:12px;margin-top:6px;width:60%}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:1rem}.auth-card{background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);padding:2.5rem;width:100%;max-width:400px}.auth-logo{text-align:center;margin-bottom:1.5rem}.auth-logo svg{display:block;margin:0 auto .5rem}.auth-logo h1{font-size:1.5rem;font-weight:700;color:var(--text);margin:0}.auth-card h2{text-align:center;font-size:1.1rem;font-weight:600;color:var(--text-secondary);margin:0 0 1.5rem}.auth-error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca;border-radius:8px;padding:.75rem 1rem;font-size:.875rem;margin-bottom:1rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:.375rem}.auth-submit{width:100%;margin-top:.5rem;padding:.75rem;font-size:1rem}.auth-switch{text-align:center;margin-top:1.5rem;font-size:.875rem;color:var(--text-secondary)}.auth-switch a{color:var(--primary);text-decoration:none;font-weight:600}.auth-switch a:hover{text-decoration:underline}.header-user{display:flex;align-items:center;gap:.75rem}.header-username{font-size:.875rem;font-weight:500;color:var(--text-secondary)}.btn-small{padding:.35rem .75rem;font-size:.8rem}.btn-outline{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.btn-outline:hover{background:var(--bg);color:var(--text);box-shadow:none}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:100vh}@media(max-width:600px){.header-inner{padding:0 16px;height:52px}.logo-text{display:none}.nav-link{padding:6px 10px;font-size:13px}.main-content{padding:16px}.header-username{display:none}.auth-card{padding:1.5rem}}.app-footer{text-align:center;padding:12px;font-size:11px;color:#ccc}
