:root{color-scheme:dark;--service-bg:#0b1018;--service-panel:#162231;--service-text:#edf3f8;--service-muted:#a8b6c8;--service-line:#304358;--service-accent:#79d8c5}
.catalog-tools{margin-bottom:16px}.catalog-tools label{display:grid;gap:6px;font-size:14px;min-width:0}.catalog-tools input,.catalog-tools select{max-width:100%;min-width:0;min-height:44px;border:1px solid #425a73;background:#101923;color:var(--service-text);font-size:16px;border-radius:8px;padding:8px}.history-list .service-actions{padding:12px 0;border-top:1px solid #304358;font-size:14px}
.share-options,.community-help{margin:8px 0}.share-options summary,.community-help summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:14px;color:var(--service-muted)}.share-options .service-actions{padding:8px 0}
.admin-page,.track-page{margin:0;background:radial-gradient(ellipse at 90% 0%,#1b3546 0,transparent 45%),var(--service-bg);color:var(--service-text);font-family:Inter,'Segoe UI','Malgun Gothic',sans-serif;line-height:1.6;min-height:100vh}
.admin-page *,.track-page *,.service-panel *{box-sizing:border-box}
.admin-page [hidden],.track-page [hidden],.service-panel [hidden]{display:none!important}
.service-header{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1240px;margin:auto;padding:24px}
.service-header a{color:var(--service-text);text-decoration:none}.service-header>a{font-size:1.2rem;font-weight:800}.service-header b{color:var(--service-accent)}
.admin-main{max-width:1200px;margin:0 auto;padding:10px 24px 80px}.admin-main h1,.track-page h1{font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.2;margin:8px 0 16px}.admin-main h2,.service-panel h2{font-size:1.25rem;line-height:1.4;margin:8px 0 16px}
.eyebrow{font-size:.68rem;letter-spacing:.2em;color:var(--service-accent);font-weight:700}.muted,.service-panel small{color:var(--service-muted);font-size:.82rem;line-height:1.7}.service-panel{background:linear-gradient(135deg,#192838,#111b28);border:1px solid var(--service-line);border-radius:20px;padding:24px;margin:20px 0;color:var(--service-text);min-width:0;flex-shrink:0}
.service-panel a,.track-page a{color:#9de1d2}.service-panel button,.service-button,.admin-page button{border:1px solid #477c7a;background:#223548;color:var(--service-text);padding:10px 16px;border-radius:10px;font:inherit;font-size:.85rem;line-height:1.4;cursor:pointer;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:normal}
.service-panel button:hover,.admin-page button:hover{border-color:var(--service-accent);background:#2d485b}.service-panel button:disabled,.admin-page button:disabled{opacity:.5;cursor:wait}.service-panel button.primary,.admin-page button.primary{background:#79d8c5;color:#fff;border-color:#79d8c5}.service-panel button[aria-pressed=true]{background:#254c50;border-color:#79d8c5;color:#d9fff4}
.service-panel :focus-visible,.admin-page :focus-visible{outline:3px solid #9de1d2;outline-offset:3px}.service-form{display:grid;gap:18px}.service-form label,.section-heading label{display:grid;gap:7px;font-size:.85rem;min-width:0}.service-form input,.service-form textarea,.service-form select,.section-heading input,.section-heading select,.community-select{font:inherit;font-size:16px;color:var(--service-text);background:#101923;border:1px solid #425a73;border-radius:9px;padding:11px;width:100%;max-width:100%;min-width:0}.service-form textarea{resize:vertical}.service-form input[type=file]{font-size:.78rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.upload-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.upload-cover{width:150px;max-width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px}.service-form audio{width:100%}
.service-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.section-heading h2{margin:0}.section-heading p{margin:4px 0}.section-heading label{max-width:240px}.auth-panel{max-width:480px;margin:60px auto}.admin-nav{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:10px;position:sticky;top:0;padding:12px 0;background:#0b1018ed;z-index:10}.admin-nav a{flex-shrink:0;min-height:44px;display:flex;align-items:center;color:#d3e3ef;border:1px solid #304358;border-radius:20px;padding:6px 16px;text-decoration:none;font-size:.82rem}.admin-main section{scroll-margin-top:80px}
.admin-song-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.admin-song{display:flex;align-items:center;gap:12px;border:1px solid #304358;border-radius:12px;padding:12px;min-width:0}.admin-song>div{flex:1;min-width:0}.admin-song strong{overflow-wrap:anywhere;font-size:.9rem}.admin-song p{font-size:.72rem;color:#a8b6c8;margin:4px 0}.admin-song img{width:48px;height:48px;object-fit:cover;border-radius:8px}.badge{font-size:.7rem;padding:3px 8px;background:#233d49;color:#bdeade;border-radius:6px;white-space:nowrap}
#adminStatus:not(:empty){padding:14px 18px;border:1px solid #477c7a;border-radius:12px;margin:12px 0;background:#162231}.service-error{color:#ffb6bd}.service-success{color:#a7e5c4}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.82rem;text-align:left}th,td{border-bottom:1px solid #304358;padding:12px 10px;white-space:nowrap}tbody th{white-space:normal;min-width:160px;font-weight:500}
.comment-item{padding:18px 0;border-top:1px solid #304358}.comment-item p{white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0;font-size:.88rem}.comment-item strong{font-size:.8rem}.comment-item small{font-size:.72rem;color:#a8b6c8}.comment-item .section-heading{margin:0}.community-counts{display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 0;color:#b8cbda;font-size:.8rem}.community-counts b{color:#edf3f8}.community-buttons{margin:18px 0}.community-title{font-size:1.05rem!important}.community-form{margin:20px 0}.community-form .form-grid{grid-template-columns:2fr 1fr}.community-form textarea{min-height:100px}.community-status{font-size:.82rem;min-height:1.4em;color:#b8d8de}.community-more{margin-top:24px}.service-panel a.service-button{color:#edf3f8}
.ranking-list{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:6px}.ranking-list li:not(.rank-empty){display:grid;grid-template-columns:24px 46px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 0;border-top:1px solid #304358}.ranking-list img{width:46px;height:46px;border-radius:8px;object-fit:cover}.ranking-list a{font-size:.88rem;text-decoration:none;font-weight:600}.ranking-list p{margin:3px 0;color:#a8b6c8;font-size:.72rem}.ranking-list .rank-number{color:#9de1d2;font-size:1.1rem}.ranking-list .rank-score{font-size:.8rem;color:#c8b994}.ranking-periods{display:flex;gap:6px}.ranking-list .rank-empty{display:block;min-width:0;padding:24px 16px;border-top:1px solid #304358;color:#a8b6c8;text-align:center;font-size:.85rem;line-height:1.7;overflow-wrap:break-word}
.track-detail{max-width:1060px;margin:32px auto;padding:0 24px 60px;display:grid;grid-template-columns:minmax(220px,.85fr) minmax(0,1.15fr);gap:40px}.detail-cover{width:100%;aspect-ratio:1;object-fit:cover;border-radius:22px;box-shadow:0 20px 60px #0008}.track-description{white-space:pre-wrap;overflow-wrap:anywhere}.track-detail audio{width:100%;margin:14px 0}.track-detail>#songCommunity{grid-column:1/-1;margin-top:0}.admin-link{font-size:.75rem;color:#a8c4d7;padding:10px;text-decoration:none}
@media(max-width:700px){.admin-main{padding:0 14px 50px}.service-header{padding:18px 14px}.service-header>a{font-size:1rem}.service-panel{padding:18px;border-radius:16px}.form-grid,.upload-grid,.admin-song-list{grid-template-columns:1fr}.section-heading{align-items:flex-start;flex-wrap:wrap}.section-heading label{max-width:none}.track-detail{grid-template-columns:1fr;gap:24px;margin-top:10px;padding:0 16px 40px}.detail-cover{max-width:360px;justify-self:center}.track-detail>#songCommunity{grid-column:auto}.ranking-list li:not(.rank-empty){grid-template-columns:20px 40px minmax(0,1fr) auto;gap:8px}.ranking-list img{width:40px;height:40px}.community-form .form-grid{grid-template-columns:1fr}.service-header .service-actions{font-size:.75rem}.auth-panel{margin:25px auto}}

:where(button,a,input,select,textarea,summary):focus-visible{outline:2px solid #9de1d2;outline-offset:3px}
#uploadProgress{accent-color:#79d8c5;width:min(100%,420px)}

.service-panel button.primary,.admin-page button.primary{color:#09251f;font-weight:700}
/* Consistent controls across administration and public song pages. */
.service-panel button,.service-button,.admin-page button{border-radius:12px;border-color:#3b5066;background:#1c2b3d;font-weight:600;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease}
.service-panel button.primary,.admin-page button.primary{background:#79d8c5;border-color:#79d8c5;color:#09251f;box-shadow:inset 0 1px 0 #ffffff30,0 4px 12px #0002}
.service-panel button[aria-pressed=true]{background:#254c50;border-color:#79d8c5;color:#d9fff4}
#unpublishSong{background:#33242d;border-color:#835365;color:#ffc3cd}
.service-form input[type=file]::file-selector-button{min-height:44px;margin:0 12px 4px 0;padding:8px 12px;border:1px solid #425a73;border-radius:10px;background:#223548;color:#edf3f8;font:inherit;cursor:pointer}
.admin-nav a{border-radius:10px;background:#14202e}
@media(hover:hover) and (pointer:fine){.service-panel button:hover:not(:disabled),.admin-page button:hover:not(:disabled){background:#293f53;border-color:#729baf}.service-panel button.primary:hover:not(:disabled),.admin-page button.primary:hover:not(:disabled){background:#a2e8da;color:#09251f}.admin-nav a:hover{background:#223548}#unpublishSong:hover:not(:disabled){background:#50323f;border-color:#d98da1}}
.service-panel button:active:not(:disabled),.admin-page button:active:not(:disabled){filter:brightness(.9)}
.service-panel button:disabled,.admin-page button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
@media(prefers-reduced-motion:reduce){.service-panel button,.admin-page button,.admin-nav a{transition:none}}

/* Song community header and review rows shared with the TNP Music app (2026-09-26). */
.sc-head{display:flex;align-items:center;gap:12px;margin:4px 0 8px}.sc-head .community-title{margin:0}.sc-head .muted{margin:2px 0 0}
.sc-cover{width:64px;height:64px;border-radius:6px;object-fit:cover;flex-shrink:0}
.stars{color:#e8b93a;letter-spacing:1px}.comment-heading{font-size:1rem;margin:20px 0 8px}.fine-print{margin-top:14px}

/* List controls shared by 등록한 음악 · 음악별 통계 · 댓글 관리 (admin).
   Page buttons 44×44px; the current page is filled; count text 13px. */
.list-count{align-self:end;min-height:44px;display:inline-flex;align-items:center;font-size:13px;color:var(--service-muted);font-variant-numeric:tabular-nums}
.pager{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:16px}
.pager[hidden]{display:none}
.pager button{min-width:44px;min-height:44px;padding:0 10px;font-variant-numeric:tabular-nums}
.pager button[aria-current="page"]{background:#edf3f8;border-color:#edf3f8;color:#0b1018;cursor:default}
.pager button:disabled{opacity:.4;cursor:default}
#statsRows th small{display:block;margin-top:2px;font-size:12px;font-weight:400;color:var(--service-muted)}

/* Admin menu as tabs: one section at a time (admin.js showTab). */
.admin-nav a.active{background:#79d8c5;border-color:#79d8c5;color:#09251f;font-weight:700}
.admin-nav a.dirty::after{content:"";width:7px;height:7px;margin-left:7px;border-radius:50%;background:#ffb86b;flex-shrink:0}
.admin-nav a.active.dirty::after{background:#09251f}
.admin-nav{margin-bottom:4px;scrollbar-width:none}.admin-nav::-webkit-scrollbar{display:none}
#workspace>[role=tabpanel]{margin-top:12px}

/* Content creators (admin 크리에이터 tab, creator studio, review of publish requests).
   Buttons keep the 44px touch height; badges 11px; review panels use the amber accent. */
.admin-nav a[data-count]:not([data-count=""])::before{content:attr(data-count);order:2;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:10px;background:#ffb86b;color:#2a1a05;font-size:12px;font-weight:700;line-height:20px;text-align:center}
.badge.badge-alert{background:#4a3417;color:#ffd39c}
.owner-line{margin:2px 0 0;font-size:13px}
.review-box,.review-note{border:1px solid #7a5a2c;background:#241c12;border-radius:12px;padding:14px 16px;margin:0 0 16px}
.review-box p{margin:0 0 8px}.review-box label{display:grid;gap:6px;margin:8px 0}
.review-box textarea{width:100%;min-height:64px;border:1px solid #6c5532;background:#161109;color:var(--service-text);border-radius:8px;padding:8px;font:inherit;font-size:16px}
.review-note{color:#ffd39c;font-size:14px}
.review-note[hidden],.review-box[hidden]{display:none}
.original-fields{border:1px solid #304358;border-radius:12px;padding:12px 14px 14px;margin:0;min-width:0}
.original-fields legend{padding:0 6px;font-weight:700}.original-fields legend small{font-weight:400;color:var(--service-muted);margin-left:6px}
.original-fields>small{display:block;margin-top:8px;color:var(--service-muted)}
.admin-page button.danger{background:#33242d;border-color:#835365;color:#ffc3cd}
.creator-list{display:grid;gap:10px}
.creator-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;border:1px solid #304358;border-radius:12px;padding:12px 14px;min-width:0}
.creator-item>div:first-child{min-width:0;flex:1 1 240px}.creator-item p{margin:4px 0;overflow-wrap:anywhere}.creator-item small{display:block;overflow-wrap:anywhere}
.creator-item .service-actions{flex-wrap:wrap}
.signup-box{margin-top:20px;border-top:1px solid #304358;padding-top:16px}.signup-box summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:700}
.original-line a{color:#79d8c5}
@media(hover:hover) and (pointer:fine){.admin-page button.danger:hover:not(:disabled){background:#50323f;border-color:#d98da1}}

/* Song source: audio upload or a YouTube · Spotify · SoundCloud link. Radio rows 44px; thumbnail preview 160×90px. */
.source-type{border:1px solid #304358;border-radius:12px;padding:8px 14px 10px;margin:0 0 4px;display:flex;flex-wrap:wrap;gap:4px 20px;min-width:0}
.source-type legend{padding:0 6px;font-weight:700}
.source-type label{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}
.source-type input{width:20px;height:20px;margin:0;accent-color:#79d8c5}
.source-type small{color:var(--service-muted)}
.link-fields{display:grid;gap:10px;border:1px solid #304358;border-radius:12px;padding:14px;min-width:0}
.link-fields[hidden],#audioField[hidden],#lyricsField[hidden]{display:none}
.link-fields #linkState{overflow-wrap:anywhere}
.link-thumb{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.link-thumb>label{flex:1 1 240px;min-width:0}
#thumbPreview{width:160px;height:90px;object-fit:cover;border-radius:8px;background:#101923;flex-shrink:0}
.badge.channel{background:#3a1d24;color:#ffb3c0}

.catalog-tools #adminOwnerFilter{max-width:260px}

/* 검수 요청 알림 (admin): state line 15px, buttons 44px. */
.push-box{border:1px solid #304358;border-radius:12px;padding:14px 16px;margin-bottom:24px}
.push-box h2{margin:0 0 6px;font-size:1.05rem}
.push-state{margin:0 0 10px;font-size:15px;overflow-wrap:anywhere}
.push-box .muted{margin:10px 0 0;font-size:13px}

/* Site information line (share pages, creator studio) and sign-up consent. */
.site-foot{max-width:1100px;margin:24px auto 32px;padding:16px 20px 0;border-top:1px solid #304358;color:var(--service-muted);font-size:13px;line-height:1.8;overflow-wrap:anywhere}
.site-foot a{color:#d3e3ef}
.agree{display:flex !important;align-items:flex-start;gap:10px;min-height:44px;font-size:13px;line-height:1.6;color:var(--service-muted);cursor:pointer}
.agree input{flex-shrink:0;width:22px;height:22px;margin:1px 0 0;accent-color:#79d8c5}
.agree a{color:#d3e3ef}

/* Studio sign-in: Google button 48px (white, 20px mark), notes 14px. */
.google-login{display:flex;align-items:center;justify-content:center;gap:12px;height:48px;margin:16px 0 8px;border-radius:999px;background:#fff;color:#1f1f1f;font-weight:700;text-decoration:none}
.google-login[hidden]{display:none}
.google-login svg{width:20px;height:20px}
.google-login:hover{background:#f1f3f4}
.signup-note{font-size:14px;margin-top:16px}
#studioMemberHint{margin:8px 0}
a.google-login,a.google-login:visited{color:#1f1f1f}
.member-hint{margin:8px 0;padding:10px 12px;border-radius:10px;background:#241c12;color:#ffd39c;font-size:14px;line-height:1.6}
.member-hint[hidden]{display:none}

/* MP3 download permission in the song editor: 22px checkbox, 44px row, 13px note. */
.download-field{display:flex !important;align-items:flex-start;gap:10px;min-height:44px;cursor:pointer}
.download-field[hidden]{display:none !important}
/* Original channel name and address side by side; the hint under the address does not stretch the name box. */
.channel-grid{align-items:start}
.download-field input{flex-shrink:0;width:22px;height:22px;margin:2px 0 0;accent-color:#79d8c5}
.download-field small{display:block;margin-top:2px;color:var(--service-muted);font-weight:400}
