*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#f8f9fa;--color-surface:#fff;--color-border:#dee2e6;--color-primary:#228be6;--color-primary-hover:#1971c2;--color-danger:#fa5252;--color-danger-hover:#e03131;--color-success:#40c057;--color-warning:#fab005;--color-text:#212529;--color-text-muted:#868e96;--radius:8px;--shadow:0 1px 4px #00000014;--shadow-lg:0 4px 24px #00000021;font-size:16px}body{background:var(--color-bg);color:var(--color-text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;transition:background .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--danger{background:var(--color-danger);color:#fff}.btn--danger:hover:not(:disabled){background:var(--color-danger-hover)}.btn--ghost{color:var(--color-text);border:1px solid var(--color-border);background:0 0}.btn--ghost:hover:not(:disabled){background:var(--color-border)}.btn--sm{padding:4px 10px;font-size:13px}.form-group{flex-direction:column;gap:4px;display:flex}.form-label{font-size:14px;font-weight:500}.form-input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);outline:none;padding:9px 12px;font-size:14px;transition:border-color .15s}.form-input:focus{border-color:var(--color-primary)}.form-input--error{border-color:var(--color-danger)}.form-error{color:var(--color-danger);font-size:13px}.form-hint{color:var(--color-text-muted);font-size:13px}.radio-group{flex-wrap:wrap;gap:12px;display:flex}.radio-group label{cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.toggle-label{cursor:pointer;align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.auth-page{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.auth-box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow-lg);flex-direction:column;gap:20px;padding:32px;display:flex}.auth-box h1{text-align:center;font-size:22px;font-weight:700}.auth-footer{text-align:center;color:var(--color-text-muted);font-size:14px}.layout{flex-direction:column;flex:1;display:flex}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:100;justify-content:space-between;align-items:center;gap:16px;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.topbar__brand{color:var(--color-text);font-size:18px;font-weight:700;text-decoration:none}.topbar__nav{align-items:center;gap:4px;display:flex}.topbar__link{color:var(--color-text-muted);border-radius:var(--radius);padding:6px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.topbar__link:hover{background:var(--color-bg);color:var(--color-text)}.topbar__link--active{color:var(--color-primary);background:#6366f114}.topbar__actions{align-items:center;gap:10px;display:flex}.topbar__user{color:var(--color-text-muted);font-size:14px}.page{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:24px}.page__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.page__title{font-size:22px;font-weight:700}.quota-bar{align-items:center;gap:10px;font-size:14px;display:flex}.quota-bar__label{color:var(--color-text-muted)}.quota-bar__dots{gap:4px;display:flex}.quota-dot{background:var(--color-border);border-radius:50%;width:10px;height:10px}.quota-dot--used{background:var(--color-primary)}.packs-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.pack-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;color:inherit;flex-direction:column;gap:10px;padding:16px;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:flex}.pack-card:hover{box-shadow:var(--shadow-lg);border-color:var(--color-primary);text-decoration:none}.pack-card__title{font-size:15px;font-weight:600}.pack-card__name{color:var(--color-text-muted);font-family:monospace;font-size:12px}.pack-card__meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pack-card__count{color:var(--color-text-muted);font-size:13px}.packs-list{flex-direction:column;gap:10px;display:flex}.pack-row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);color:inherit;flex-direction:column;gap:8px;min-height:110px;padding:16px 20px;transition:box-shadow .15s,border-color .15s;display:flex;text-decoration:none!important}.pack-row:hover{box-shadow:var(--shadow-lg);border-color:var(--color-primary);text-decoration:none!important}.pack-row:hover *{text-decoration:none!important}.pack-row--feed{cursor:default}.pack-row--feed:hover{border-color:var(--color-border);box-shadow:var(--shadow)}.pack-row__top{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pack-row__title{font-size:16px;font-weight:600}.pack-row__meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pack-row__name{color:var(--color-text-muted);font-family:monospace;font-size:12px}.pack-row__count{color:var(--color-text-muted);font-size:13px}.pack-row__sep{color:var(--color-border);-webkit-user-select:none;user-select:none;font-size:13px}.pack-row__reactions-inline{color:var(--color-text-muted);font-size:13px}.pack-row__ext-link{color:var(--color-primary);font-size:13px;text-decoration:none}.pack-row__ext-link:hover{text-decoration:underline}.pack-row__previews{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pack-row__previews--empty{align-items:center;gap:8px}.pack-row__thumb{object-fit:contain;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;flex-shrink:0;width:68px;height:68px}.pack-row__thumb--empty{color:var(--color-text-muted);justify-content:center;align-items:center;font-size:28px;display:flex}.feed-section{border-top:2px solid var(--color-border);margin-top:40px;padding-top:32px}.feed-section__header{margin-bottom:16px}.feed-section__title{margin:0 0 4px;font-size:18px;font-weight:700}.feed-section__subtitle{color:var(--color-text-muted);margin:0;font-size:13px}.badge{border-radius:12px;padding:2px 8px;font-size:11px;font-weight:600}.badge--public{color:#065f46;background:#d1fae5}.sync-badge{border-radius:12px;padding:2px 7px;font-size:11px;font-weight:600}.sync-badge--not_synced{color:#495057;background:#e9ecef}.sync-badge--syncing{color:#1864ab;background:#d0ebff}.sync-badge--out_of_date{color:#7d5914;background:#fff3bf}.sync-badge--error{color:#c92a2a;background:#ffe3e3}.sync-badge--in_sync{color:#2f9e44;background:#d3f9d8}.packs-empty{text-align:center;color:var(--color-text-muted);padding:64px 24px}.packs-empty h3{color:var(--color-text);margin-bottom:8px;font-size:18px}.pack-detail{flex-direction:column;gap:24px;display:flex}.pack-detail__title{font-size:24px;font-weight:700}.pack-detail__name{color:var(--color-text-muted);font-family:monospace;font-size:13px}.pack-detail__actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pack-detail__sync-info{color:var(--color-text-muted);font-size:13px}.stickers-section{flex-direction:column;gap:12px;display:flex}.stickers-section__header{justify-content:space-between;align-items:center;gap:8px;display:flex}.stickers-section__title{font-size:16px;font-weight:600}.stickers-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;display:grid}.sticker-card{border-radius:var(--radius);aspect-ratio:1;background:var(--color-bg);-webkit-user-select:none;user-select:none;cursor:grab;border:2px solid #0000;justify-content:center;align-items:center;transition:border-color .15s,opacity .15s;display:flex;position:relative;overflow:hidden}.sticker-card--problem{border-color:var(--color-danger)}.sticker-card--hidden{opacity:.35;filter:grayscale(.8)}.sticker-card:hover .sticker-card__overlay{opacity:1}.sticker-card__img{object-fit:cover;width:100%;height:100%;display:block}.sticker-card__overlay{opacity:0;background:#000000a6;flex-direction:column;justify-content:center;align-items:center;gap:6px;transition:opacity .15s;display:flex;position:absolute;inset:0}.sticker-card__action-btn{color:#ffffffb3;cursor:pointer;opacity:0;z-index:2;background:#0000004d;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px 6px;font-size:16px;line-height:1;transition:background .15s,color .15s,transform .1s;display:flex;position:absolute}.sticker-card:hover .sticker-card__action-btn{opacity:1}.sticker-card__action-btn:hover{color:#fffffff2;background:#00000080;transform:scale(1.15)}.sticker-card__action-btn--hide{top:4px;left:4px}.sticker-card__action-btn--delete{top:4px;right:4px}.sticker-card__action-btn--delete:hover{color:#fff;background:#ef4444d9}.sticker-card__emoji-label{font-size:22px}.sticker-card__badge{background:var(--color-danger);color:#fff;border-radius:4px;padding:1px 4px;font-size:10px;font-weight:600;position:absolute;top:4px;left:4px}.sticker-card--dragging{opacity:.4}.stickers-empty{text-align:center;color:var(--color-text-muted);border:2px dashed var(--color-border);border-radius:var(--radius);padding:48px 24px}.tags{flex-wrap:wrap;gap:4px;display:flex}.tag{color:#495057;background:#e9ecef;border-radius:12px;padding:2px 8px;font-size:12px}.modal-overlay{z-index:200;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-width:480px;max-height:90vh;display:flex;overflow-y:auto}.modal--confirm{max-width:420px}.modal__header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal__title{font-size:17px;font-weight:600}.modal__close{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;padding:2px;font-size:20px;line-height:1}.modal__body{flex-direction:column;gap:16px;padding:20px;display:flex}.modal__footer{border-top:1px solid var(--color-border);justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}.spinner--lg{border-width:3px;width:40px;height:40px}.loading-screen{flex:1;justify-content:center;align-items:center;display:flex}.toasts{z-index:1000;flex-direction:column;gap:8px;max-width:360px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius);box-shadow:var(--shadow-lg);cursor:pointer;padding:12px 16px;font-size:14px;animation:.2s slideIn}@keyframes slideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.toast--success{background:var(--color-success);color:#fff}.toast--error{background:var(--color-danger);color:#fff}.toast--info{background:var(--color-primary);color:#fff}.problem-list{flex-direction:column;gap:4px;padding:0;list-style:none;display:flex}.problem-item{color:var(--color-danger);gap:6px;font-size:13px;display:flex}.problem-item:before{content:"⚠";flex-shrink:0}.back-link{color:var(--color-text-muted);align-items:center;gap:4px;margin-bottom:12px;font-size:14px;display:inline-flex}.back-link:hover{color:var(--color-primary);text-decoration:none}.emoji-picker-popup{z-index:50;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);grid-template-columns:repeat(6,1fr);gap:4px;width:240px;padding:8px;display:grid;position:absolute}.emoji-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:6px;font-size:20px;line-height:1;transition:background .1s;display:flex}.emoji-btn:hover{background:var(--color-bg)}.emoji-select-btn--empty{animation:1.5s ease-in-out infinite pulse-emoji;background:#fff3bf!important;border:2px dashed #ffd43b!important}@keyframes pulse-emoji{0%,to{opacity:1}50%{opacity:.7}}@media (width<=600px){.topbar{padding:0 12px}.page{padding:16px 12px}.packs-grid{grid-template-columns:1fr 1fr}.stickers-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}.auth-box{padding:20px}}
