@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Manrope:wght@500;600&display=swap";:root{--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Manrope", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--color-bg: #f7f8fa;--color-surface: #ffffff;--color-surface-muted: #f1f2f4;--color-surface-hover: #eceef1;--color-primary: #1a1a2e;--color-primary-strong: #12121f;--color-primary-soft: rgba(26, 26, 46, .06);--color-primary-contrast: #ffffff;--color-accent: #1a1a2e;--color-accent-soft: rgba(26, 26, 46, .06);--color-text: #1a1a2e;--color-text-muted: #5b6472;--color-text-subtle: #9aa1ab;--color-border: #e6e8eb;--color-border-strong: #d0d4da;--color-success: #2b8a3e;--color-success-soft: rgba(43, 138, 62, .08);--color-danger: #c92a2a;--color-danger-soft: rgba(201, 42, 42, .08);--color-warning: #8a6d1f;--color-warning-soft: rgba(138, 109, 31, .1);--color-info: #4a6072;--color-info-soft: rgba(74, 96, 114, .1);--shadow-xs: 0 1px 2px rgba(16, 24, 40, .04);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05);--shadow-md: 0 4px 12px rgba(16, 24, 40, .06);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .1);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--radius-xl: 16px;--radius-full: 999px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--layout-width: 1200px;--header-height: 72px;--bottom-nav-height: 64px;--sidebar-width: 248px;--transition-fast: .15s ease;--transition-base: .25s ease}:root[data-theme=dark]{color-scheme:dark;--color-bg: #12141a;--color-surface: #1a1d24;--color-surface-muted: #23262e;--color-surface-hover: #2a2e38;--color-primary: #f2f3f5;--color-primary-strong: #ffffff;--color-primary-soft: rgba(242, 243, 245, .08);--color-primary-contrast: #12141a;--color-accent: #f2f3f5;--color-accent-soft: rgba(242, 243, 245, .08);--color-text: #eef0f3;--color-text-muted: #aab1bd;--color-text-subtle: #6f7683;--color-border: #2a2e38;--color-border-strong: #3a3f4b;--color-success: #57b46b;--color-success-soft: rgba(87, 180, 107, .12);--color-danger: #e06060;--color-danger-soft: rgba(224, 96, 96, .12);--color-warning: #d4a72c;--color-warning-soft: rgba(212, 167, 44, .14);--color-info: #93a7ba;--color-info-soft: rgba(147, 167, 186, .14);--shadow-xs: 0 1px 2px rgba(2, 6, 23, .3);--shadow-sm: 0 2px 6px rgba(2, 6, 23, .28);--shadow-md: 0 8px 24px rgba(2, 6, 23, .34);--shadow-lg: 0 18px 48px rgba(2, 6, 23, .38)}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.6;letter-spacing:-.011em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-base),color var(--transition-base);overflow-x:hidden}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-strong)}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;color:var(--color-text)}h1{font-size:clamp(1.7rem,2.6vw,2.1rem);line-height:1.15}h2{font-size:clamp(1.25rem,1.8vw,1.45rem);line-height:1.25}h3{font-size:1.0625rem;line-height:1.35}p{margin:0}strong{font-weight:600}.page{display:grid;gap:var(--space-5)}.page-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4)}.page-title{font-family:var(--font-display);font-size:clamp(1.75rem,2.2vw,2.1rem);letter-spacing:-.03em}.page-subtitle{color:var(--color-text-muted);font-size:1rem;line-height:1.65;max-width:68ch}.stack{display:grid;gap:var(--space-3)}.stack-lg{display:grid;gap:var(--space-5)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.muted{color:var(--color-text-muted)}.subtle{color:var(--color-text-subtle);font-size:.875rem}.grid-cards{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5)}.card-compact{padding:var(--space-4)}.card-hover{transition:transform var(--transition-base),box-shadow var(--transition-base),border-color var(--transition-base)}.card-hover:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-border-strong)}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3)}.dash-tile{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text);transition:border-color var(--transition-fast),background var(--transition-fast)}.dash-tile:hover{border-color:var(--color-border-strong);background:var(--color-surface-muted);text-decoration:none}.dash-tile__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-text);flex-shrink:0}.dash-tile__meta{display:grid;gap:0;min-width:0}.dash-tile__value{font-family:var(--font-display);font-size:1.4rem;font-weight:600;letter-spacing:-.03em;line-height:1.15}.dash-tile__label{font-size:.875rem;color:var(--color-text-muted)}.dash-tile__hint{color:var(--color-text-subtle);font-size:.8125rem;max-width:48ch}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:.625rem 1rem;border-radius:var(--radius-md);border:1px solid transparent;font-weight:600;font-size:.95rem;letter-spacing:-.01em;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast);white-space:nowrap;min-height:40px}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--color-primary-strong)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover)}.btn-ghost{background:transparent;color:var(--color-text-muted)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.95)}.theme-toggle{display:inline-flex;align-items:center;gap:var(--space-3);flex-shrink:0}.theme-toggle__control{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;display:inline-block;width:52px;height:30px;padding:0;border:1px solid var(--color-border-strong);border-radius:var(--radius-full);background:var(--color-surface-muted);cursor:pointer;flex-shrink:0;transition:background var(--transition-base),border-color var(--transition-base)}.theme-toggle__control:hover{border-color:var(--color-primary)}.theme-toggle__control:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-primary-soft)}.theme-toggle__control:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--color-surface);box-shadow:var(--shadow-xs);transition:transform var(--transition-base),background var(--transition-base)}.theme-toggle__control.is-active{background:var(--color-primary-soft);border-color:var(--color-primary)}.theme-toggle__control.is-active:after{transform:translate(22px)}.settings-row{align-items:flex-start}.settings-row__main{flex:1 1 260px;min-width:0}.settings-row__action{display:flex;align-items:center;justify-content:flex-end;flex:0 0 auto}.btn-block{width:100%}.btn-sm{padding:.4rem .75rem;min-height:32px;font-size:.875rem}.form{display:grid;gap:var(--space-4)}.field{display:grid;gap:var(--space-2)}.field-label{font-size:.875rem;font-weight:600;letter-spacing:-.01em;color:var(--color-text)}.field-hint{font-size:.8125rem;color:var(--color-text-subtle)}.input,.select,.textarea{width:100%;padding:.625rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:.95rem;line-height:1.5;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input:hover,.select:hover,.textarea:hover{border-color:var(--color-border-strong)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.input::placeholder,.textarea::placeholder{color:var(--color-text-subtle)}.input-with-icon{position:relative}.input-with-icon .input{padding-left:2.5rem}.input-with-icon .input-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--color-text-subtle);pointer-events:none}.field-error{display:flex;align-items:center;gap:var(--space-2);font-size:.8125rem;color:var(--color-danger)}.badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:.25rem .625rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:600;letter-spacing:-.01em;background:var(--color-surface-muted);color:var(--color-text-muted)}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary-strong)}.badge-accent{background:var(--color-accent-soft);color:var(--color-accent)}.badge-success{background:var(--color-success-soft);color:var(--color-success)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger)}.badge-info{background:var(--color-info-soft);color:var(--color-info)}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:.875rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);font-size:.9rem;line-height:1.55}.alert-info{background:var(--color-info-soft);border-color:#0369a140;color:var(--color-info)}.alert-success{background:var(--color-success-soft);border-color:#15803d40;color:var(--color-success)}.alert-warning{background:var(--color-warning-soft);border-color:#b4530940;color:var(--color-warning)}.alert-danger{background:var(--color-danger-soft);border-color:#b91c1c40;color:var(--color-danger)}.notification-center{position:fixed;top:var(--space-4);right:var(--space-4);z-index:1000;display:grid;gap:var(--space-3);width:min(360px,calc(100vw - 2rem))}.notification{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-md);font-size:.9rem;line-height:1.55;animation:notif-in .18s ease}.notification--info{border-left:4px solid var(--color-info)}.notification--success{border-left:4px solid var(--color-success)}.notification--warning{border-left:4px solid var(--color-warning)}.notification--danger{border-left:4px solid var(--color-danger)}@keyframes notif-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.loading-card{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-muted);padding:var(--space-5) 0}.spinner{width:18px;height:18px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--color-surface-muted) 0%,var(--color-surface-hover) 50%,var(--color-surface-muted) 100%);background-size:200% 100%;animation:shimmer 1.2s linear infinite;border-radius:var(--radius-sm)}@keyframes shimmer{to{background-position:-200% 0}}.empty-state{display:grid;justify-items:center;gap:var(--space-3);text-align:center;padding:var(--space-7) var(--space-5);color:var(--color-text-muted);line-height:1.6}.empty-state-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-text)}.pub-card{padding:0;overflow:hidden;display:flex;flex-direction:column}.pub-card__thumb{position:relative;width:100%;aspect-ratio:4 / 3;background:var(--color-surface-muted);display:grid;place-items:center;overflow:hidden}.pub-card__thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--transition-base)}.pub-card:hover .pub-card__thumb img{transform:scale(1.03)}.pub-card__thumb--placeholder{color:var(--color-text-subtle);background:linear-gradient(135deg,var(--color-surface-muted),var(--color-surface-hover))}.pub-card__badges{position:absolute;top:var(--space-3);left:var(--space-3);display:flex;gap:var(--space-2);flex-wrap:wrap}.pub-card__price{position:absolute;bottom:var(--space-3);right:var(--space-3)}.pub-card__body{padding:var(--space-4);display:grid;gap:var(--space-2);flex:1}.pub-card__title{font-family:var(--font-display);font-size:1.0625rem;font-weight:700;line-height:1.3;color:var(--color-text);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pub-card__desc{color:var(--color-text-muted);font-size:.9rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pub-card__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2);font-size:.8125rem;color:var(--color-text-subtle)}.pub-media{width:100%;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-border);background:var(--color-surface-muted)}.pub-media img{width:100%;height:auto;display:block}.pub-media iframe{width:100%;height:70vh;min-height:480px;border:0;display:block;background:var(--color-surface)}.divider{height:1px;background:var(--color-border);border:0;margin:0}.shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;background:var(--color-bg)}.shell__header{position:sticky;top:0;z-index:30;height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-xs)}.shell__header-inner{width:min(calc(100% - 2rem),var(--layout-width));height:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.shell__brand{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:800;font-size:1.125rem;color:var(--color-text);letter-spacing:-.02em}.shell__brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-primary-contrast)}.shell__hamburger{display:none;place-items:center;width:40px;height:40px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);transition:background var(--transition-fast)}.shell__hamburger:hover{background:var(--color-surface-muted)}.shell__desktop-nav{display:none;align-items:center;gap:var(--space-2)}.shell__nav-link,.shell__sidebar-link,.shell__bottom-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:.5rem .875rem;border-radius:var(--radius-md);color:var(--color-text-muted);font-size:.9rem;font-weight:500;transition:background var(--transition-fast),color var(--transition-fast);min-height:40px}.shell__nav-link:hover,.shell__sidebar-link:hover{background:var(--color-surface-muted);color:var(--color-text)}.shell__nav-link.is-active,.shell__sidebar-link.is-active,.shell__bottom-link.is-active{background:var(--color-primary-soft);color:var(--color-primary-strong)}.shell__nav-link svg,.shell__sidebar-link svg,.shell__bottom-link svg{flex-shrink:0}.shell__main{padding:var(--space-5) 0 calc(var(--bottom-nav-height) + var(--space-5))}.shell__body{width:min(calc(100% - 2rem),var(--layout-width));margin:0 auto}.shell__content{display:grid;gap:var(--space-4)}.shell__sidebar{display:none}.shell__drawer{position:fixed;inset:var(--header-height) 0 0 0;background:#0f172a66;z-index:25;display:none;opacity:0;pointer-events:none;transition:opacity var(--transition-base)}.shell__drawer.is-open{opacity:1;pointer-events:auto}.shell__drawer-panel{width:min(82vw,320px);height:100%;background:var(--color-surface);padding:var(--space-4);display:grid;align-content:start;gap:var(--space-2);transform:translate(-100%);transition:transform var(--transition-base);box-shadow:var(--shadow-lg)}.shell__drawer.is-open .shell__drawer-panel{transform:translate(0)}.shell__sidebar-link{justify-content:flex-start}.shell__bottom-nav{position:fixed;left:0;right:0;bottom:0;height:var(--bottom-nav-height);background:var(--color-surface);border-top:1px solid var(--color-border);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;z-index:20;box-shadow:0 -4px 16px #0f172a0a}.shell__bottom-link{flex-direction:column;gap:2px;font-size:.7rem;padding:.4rem;border-radius:0;min-height:var(--bottom-nav-height);color:var(--color-text-muted)}.shell__bottom-link.is-active{background:transparent;color:var(--color-primary)}.shell__footer{display:none;background:var(--color-surface);border-top:1px solid var(--color-border)}.shell__footer-inner{width:min(calc(100% - 2rem),var(--layout-width));margin:0 auto;padding:var(--space-5) 0;color:var(--color-text-muted);font-size:.875rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3)}@media(min-width:768px)and (max-width:1023px){.shell__hamburger{display:inline-grid}.shell__drawer{display:block}.shell__bottom-nav{display:none}.shell__main{padding:var(--space-5) 0 var(--space-6)}}@media(min-width:1024px){.shell__hamburger,.shell__drawer,.shell__bottom-nav,.shell__desktop-nav{display:none}.shell__footer{display:block}.shell__main{padding:var(--space-5) 0 var(--space-6)}.shell__body{display:grid;grid-template-columns:var(--sidebar-width) 1fr;gap:var(--space-5)}.shell__sidebar{display:block;position:sticky;top:calc(var(--header-height) + var(--space-5));align-self:start;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3);display:grid;gap:var(--space-1)}}
