:root{--trpg-radius:16px;--trpg-paper:#fff;--trpg-ink:var(--trpg-text,#434343);--trpg-muted:var(--trpg-text-55,rgba(67,67,67,.55));--trpg-line:var(--trpg-text-12,rgba(67,67,67,.12));--trpg-soft:var(--trpg-point-08,rgba(134,134,134,.08));--trpg-shadow:0 16px 42px rgba(0,0,0,.08)}
.trpg-write-shell,.trpg-archive-list,.trpg-view-shell{width:min(1180px,calc(100% - 32px));margin:32px auto 80px;color:var(--trpg-ink);font-family:Arial,"Noto Sans KR",sans-serif;box-sizing:border-box}.trpg-write-shell *,.trpg-archive-list *,.trpg-view-shell *,.trpg-view-stage *{box-sizing:border-box}.trpg-kicker{display:block;margin:0 0 8px;font:700 10px/1.2 "Courier New",monospace;letter-spacing:.16em;color:var(--trpg-muted)}
.trpg-write-heading h2,.trpg-list-header h2{margin:0;font-size:28px;letter-spacing:-.04em}.trpg-write-heading p,.trpg-list-header p{margin:8px 0 0;color:var(--trpg-muted);font-size:13px}.trpg-panel{margin-top:16px;padding:20px;background:var(--trpg-paper);border:1px solid var(--trpg-line);border-radius:var(--trpg-radius);box-shadow:var(--trpg-shadow)}.trpg-panel-title{display:flex;align-items:center;gap:12px;margin-bottom:18px}.trpg-panel-title>span{display:flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:9px;background:var(--trpg-point);color:var(--trpg-point-auto);font:700 10px/1 "Courier New",monospace}.trpg-panel-title strong{display:block;font-size:14px}.trpg-panel-title small{display:block;margin-top:3px;color:var(--trpg-muted);font-size:11px}.trpg-account-row,.trpg-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.trpg-compact-panel{display:flex;align-items:center;gap:12px}.trpg-field,.trpg-account-row label{display:flex;flex-direction:column;gap:7px;color:var(--trpg-muted);font-size:11px}.trpg-field-wide{grid-column:1/-1}.trpg-field-label{font-size:11px;font-weight:700;color:var(--trpg-ink)}.trpg-write-shell input[type=text],.trpg-write-shell input[type=password],.trpg-write-shell input[type=url],.trpg-write-shell input[type=date],.trpg-write-shell select,.trpg-write-shell textarea{width:100%;min-height:42px;padding:10px 12px;border:1px solid var(--trpg-line);border-radius:9px;background:#fff;color:var(--trpg-ink);font:13px/1.5 Arial,"Noto Sans KR",sans-serif;outline:none}.trpg-write-shell textarea{resize:vertical}.trpg-write-shell input:focus,.trpg-write-shell select:focus,.trpg-write-shell textarea:focus{border-color:var(--trpg-point);box-shadow:0 0 0 3px var(--trpg-point-08)}.trpg-write-shell input[type=file]{width:100%;padding:9px;border:1px dashed var(--trpg-line);border-radius:9px;background:var(--trpg-soft);font-size:11px}
.trpg-image-config{margin-top:16px;padding:15px;border:1px solid var(--trpg-line);border-radius:12px;background:linear-gradient(135deg,var(--trpg-soft),transparent)}.trpg-image-config-head{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.trpg-image-config-head strong{font-size:12px}.trpg-image-config-head small{color:var(--trpg-muted);font-size:10px}.trpg-current-image{display:flex;align-items:center;gap:10px;margin:8px 0 12px;color:var(--trpg-muted);font-size:10px}.trpg-current-image img{width:92px;height:62px;object-fit:cover;border:1px solid var(--trpg-line);border-radius:8px}.trpg-source-switch,.trpg-mini-switch{display:flex;gap:10px;margin-bottom:8px}.trpg-source-switch label,.trpg-mini-switch label{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--trpg-muted)}.trpg-source-pane{margin-top:8px}.trpg-delete-check{display:inline-flex;align-items:center;gap:5px;margin-top:9px;font-size:10px;color:var(--trpg-muted)}
.trpg-stack-editor{display:flex;flex-direction:column;gap:9px}.trpg-media-row{display:grid;grid-template-columns:24px 90px minmax(0,1fr) 34px;gap:10px;align-items:start;padding:12px;border:1px solid var(--trpg-line);border-radius:12px;background:#fff}.trpg-media-row.is-dragging,.trpg-bgm-row.is-dragging{opacity:.45}.trpg-drag-handle{align-self:center;cursor:grab;color:var(--trpg-muted);font-size:16px;text-align:center;user-select:none}.trpg-media-preview{display:flex;width:90px;height:90px;align-items:center;justify-content:center;border-radius:10px;overflow:hidden;background:var(--trpg-soft);border:1px solid var(--trpg-line);color:var(--trpg-muted);font:700 11px/1 "Courier New",monospace}.trpg-media-preview img{width:100%;height:100%;object-fit:cover}.trpg-media-fields{display:flex;flex-direction:column;gap:7px;min-width:0}.trpg-row-remove,.trpg-bgm-remove{display:flex;width:32px;height:32px;align-items:center;justify-content:center;border:1px solid var(--trpg-line);border-radius:8px;background:#fff;color:var(--trpg-muted);font-size:18px;cursor:pointer}.trpg-row-remove:hover,.trpg-bgm-remove:hover{border-color:var(--trpg-point);color:var(--trpg-point)}.trpg-add-row{margin-top:10px}.trpg-handout-insert-tools{display:flex;align-items:center;gap:8px}.trpg-inline-insert{border:1px solid var(--trpg-point);border-radius:8px;background:var(--trpg-point);color:var(--trpg-point-auto);padding:7px 10px;font-size:10px;font-weight:700;cursor:pointer}.trpg-handout-insert-tools span{font-size:10px;color:var(--trpg-muted)}.trpg-handout-insert-tools span.is-inserted{color:var(--trpg-point);font-weight:700}
.trpg-log-tabs{display:flex;gap:5px;margin-bottom:10px}.trpg-log-tabs button{border:1px solid var(--trpg-line);border-radius:8px;background:#fff;color:var(--trpg-muted);padding:8px 11px;font-size:11px;cursor:pointer}.trpg-log-tabs button.is-active{background:var(--trpg-point);border-color:var(--trpg-point);color:var(--trpg-point-auto)}.trpg-log-pane{display:none}.trpg-log-pane.is-active{display:block}.trpg-write-log-wrap{position:relative;min-height:320px;border:1px solid var(--trpg-line);border-radius:10px;overflow:hidden;background:#fff}.trpg-log-editor{display:block;width:100%;height:420px;border:0;background:#fff}.trpg-log-empty{position:absolute;inset:0;display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;padding:30px;text-align:center;color:var(--trpg-muted);font-size:12px;pointer-events:none}.trpg-log-empty b{color:var(--trpg-ink);font-size:13px}.trpg-log-empty span{max-width:680px;line-height:1.7}.trpg-log-empty code,.trpg-panel-title code,.trpg-help code{padding:2px 5px;border-radius:5px;background:var(--trpg-soft);font:11px/1.5 Consolas,"Courier New",monospace;color:var(--trpg-ink)}.trpg-log-source{min-height:420px!important;font:12px/1.6 Consolas,"Courier New",monospace!important;white-space:pre}.trpg-help{margin:9px 2px 0;color:var(--trpg-muted);font-size:11px;line-height:1.6}
.trpg-bgm-editor{display:flex;flex-direction:column;gap:8px}.trpg-bgm-row{display:grid;grid-template-columns:24px 1.1fr 1fr 1.5fr 34px;gap:8px;align-items:center;padding:8px;border:1px solid var(--trpg-line);border-radius:10px;background:#fff}
.trpg-primary-btn,.trpg-secondary-btn,.trpg-view-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 15px;border-radius:9px;text-decoration:none;font-size:12px;font-weight:700;cursor:pointer}.trpg-primary-btn{border:1px solid var(--trpg-point);background:var(--trpg-point);color:var(--trpg-point-auto)}.trpg-secondary-btn{border:1px solid var(--trpg-line);background:#fff;color:var(--trpg-ink)}.trpg-write-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
/* LIST ticket */
.trpg-list-header{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:20px}.trpg-category-nav{margin-bottom:16px;padding:10px 12px;background:#fff;border:1px solid var(--trpg-line);border-radius:10px}.trpg-category-nav ul{display:flex;gap:6px;flex-wrap:wrap;margin:0;padding:0;list-style:none}.trpg-category-nav a{display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--trpg-soft);color:var(--trpg-ink);text-decoration:none;font-size:11px}.trpg-list-adminbar{display:flex;gap:10px;align-items:center;margin-bottom:10px;padding:9px 11px;background:var(--trpg-soft);border-radius:9px;font-size:11px}.trpg-list-adminbar button{border:1px solid var(--trpg-line);background:#fff;padding:6px 9px;border-radius:7px;cursor:pointer}.trpg-ticket-list{display:flex;flex-direction:column;gap:15px}.trpg-session-ticket{position:relative;display:grid;grid-template-columns:minmax(260px,42%) minmax(0,1fr);min-height:230px;background:#fff;border:1px solid var(--trpg-line);border-radius:14px;overflow:hidden;box-shadow:var(--trpg-shadow);transition:.18s ease}.trpg-session-ticket:hover{transform:translateY(-2px);box-shadow:0 20px 48px rgba(0,0,0,.11)}.trpg-ticket-cover{display:flex;align-items:center;justify-content:center;background:var(--trpg-point);overflow:hidden;text-decoration:none}.trpg-ticket-cover img{width:100%;height:100%;object-fit:cover}.trpg-ticket-cover span{color:var(--trpg-point-auto);font:700 13px/1.8 "Courier New",monospace;letter-spacing:.12em;text-align:center}.trpg-ticket-info{position:relative;padding:28px 32px 54px;border-left:1px dashed var(--trpg-text-25);color:var(--trpg-ink);text-decoration:none;min-width:0}.trpg-ticket-info:before,.trpg-ticket-info:after{content:"";position:absolute;left:-10px;width:19px;height:19px;border-radius:50%;background:var(--trpg-base)}.trpg-ticket-info:before{top:-10px}.trpg-ticket-info:after{bottom:-10px}.trpg-ticket-subtitle{display:block;margin-bottom:6px;color:var(--trpg-muted);font-size:11px;font-style:italic}.trpg-ticket-info h3{margin:0;font-size:25px;letter-spacing:-.04em}.trpg-ticket-pills{display:flex;gap:6px;margin-top:9px}.trpg-ticket-pills span{padding:4px 8px;border-radius:999px;background:var(--trpg-point-08);color:var(--trpg-point);font-size:9px;font-weight:700}.trpg-ticket-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:13px;color:var(--trpg-muted);font-size:11px}.trpg-ticket-meta span+span:before{content:"·";margin-right:14px}.trpg-ticket-people{margin:10px 0 0;color:var(--trpg-muted);font-size:11px}.trpg-tag-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:11px}.trpg-tag-row span{display:inline-flex;padding:4px 7px;border-radius:6px;background:var(--trpg-soft);color:var(--trpg-muted);font-size:9px}.trpg-ticket-barcode-small{position:absolute;right:26px;bottom:20px;display:flex;height:25px;align-items:stretch;gap:2px}.trpg-ticket-barcode-small i,.trpg-ticket-barcode i{display:block;width:2px;background:var(--trpg-text-55)}.trpg-ticket-barcode-small i:nth-child(2n),.trpg-ticket-barcode i:nth-child(2n){width:4px}.trpg-ticket-barcode-small small{align-self:flex-end;margin-left:6px;color:var(--trpg-muted);font:9px/1 "Courier New",monospace}.trpg-list-clear{position:absolute;right:24px;top:22px;transform:rotate(-9deg);padding:5px 8px;border:2px solid var(--trpg-point);border-radius:4px;color:var(--trpg-point);font:700 10px/1 "Courier New",monospace;opacity:.55}.trpg-card-check{position:absolute;top:9px;left:9px;z-index:3;padding:4px;background:#fff;border-radius:5px}.trpg-empty{padding:70px 20px;text-align:center;background:#fff;border:1px dashed var(--trpg-line);border-radius:14px;color:var(--trpg-muted)}.trpg-pagination{text-align:center;margin-top:24px}
/* VIEW */
.trpg-view-stage{position:relative;min-height:100vh;padding:1px 0 70px;background:var(--trpg-base);background-image:linear-gradient(var(--trpg-point-08),var(--trpg-point-08)),var(--trpg-session-bg,none);background-size:cover;background-position:center;background-attachment:fixed}.trpg-view-shell{position:relative;z-index:2;max-width:1100px;margin-bottom:120px}.trpg-view-header{position:relative;display:grid;grid-template-columns:230px 1fr 130px;gap:24px;align-items:center;padding:28px;background:#fff;border:1px solid var(--trpg-line);border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.13);overflow:hidden}.trpg-ticket-head:after{content:"";position:absolute;left:230px;top:0;bottom:0;border-left:1px dashed var(--trpg-text-25)}.trpg-view-cover{position:relative;z-index:1;width:230px;height:170px;border-radius:10px;overflow:hidden;background:var(--trpg-point)}.trpg-view-cover img{width:100%;height:100%;object-fit:cover}.trpg-view-heading{position:relative;z-index:1;min-width:0}.trpg-view-subtitle{margin:0 0 7px;color:var(--trpg-muted);font-size:12px;font-style:italic}.trpg-view-category{display:inline-block;margin:0 0 6px;padding:4px 7px;border-radius:5px;background:var(--trpg-point-08);color:var(--trpg-point);font-size:9px}.trpg-view-heading h1{margin:0;font-size:32px;letter-spacing:-.05em}.trpg-view-meta{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:11px;color:var(--trpg-muted);font-size:11px}.trpg-status-pill{padding:4px 8px;border-radius:999px;background:var(--trpg-point-08);color:var(--trpg-point);font-weight:700}.trpg-participant-strip{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.trpg-participant-chip{display:flex;align-items:center;gap:6px;padding:4px 8px 4px 4px;border:1px solid var(--trpg-line);border-radius:999px;background:#fff;font-size:9px}.trpg-participant-chip img{width:30px;height:30px;border-radius:50%;object-fit:cover}.trpg-ticket-barcode{position:relative;z-index:1;display:flex;height:82px;align-items:stretch;justify-content:center;gap:4px;padding:0 6px}.trpg-ticket-barcode i{width:4px}.trpg-ticket-barcode i:nth-child(3n){width:7px}.trpg-ticket-barcode small{position:absolute;bottom:-15px;color:var(--trpg-muted);font:9px/1 "Courier New",monospace}.trpg-clear-stamp{position:absolute;right:30px;top:22px;transform:rotate(-12deg);padding:7px 10px;border:3px double var(--trpg-point);border-radius:5px;color:var(--trpg-point);font:800 12px/1 "Courier New",monospace;opacity:.35}.trpg-overview{margin:14px auto 0;padding:15px 19px;background:#fff;border:1px solid var(--trpg-line);border-left:4px solid var(--trpg-point);border-radius:12px;box-shadow:var(--trpg-shadow)}.trpg-overview span{font:700 9px/1 "Courier New",monospace;color:var(--trpg-point);letter-spacing:.12em}.trpg-overview p{margin:7px 0 0;font-size:12px;line-height:1.7}.trpg-view-section{margin-top:14px;padding:20px;background:#fff;border:1px solid var(--trpg-line);border-radius:16px;box-shadow:var(--trpg-shadow)}.trpg-section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.trpg-section-heading>div{display:flex;gap:8px;align-items:center}.trpg-section-heading>div>span{font:700 9px/1 "Courier New",monospace;color:var(--trpg-point)}.trpg-section-heading strong{font-size:12px;letter-spacing:.08em}.trpg-section-heading small{color:var(--trpg-muted);font-size:10px}.trpg-log-frame-wrap{overflow:hidden;border:1px solid var(--trpg-line);border-radius:10px;background:#fff}.trpg-log-frame{display:block;width:100%;height:720px;border:0;background:#fff}.trpg-empty-section{padding:60px 20px;text-align:center;color:var(--trpg-muted)}.trpg-view-nav{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin-top:18px}.trpg-view-nav a{color:var(--trpg-muted);font-size:11px;text-decoration:none}.trpg-view-nav a:last-child{text-align:right}.trpg-view-nav a:nth-child(2){padding:8px 12px;border:1px solid var(--trpg-line);border-radius:8px;background:#fff;color:var(--trpg-ink);text-align:center}
.trpg-view-rail{position:fixed;z-index:40;top:50%;right:18px;transform:translateY(-50%);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--trpg-line);border-radius:12px;background:#fff;box-shadow:0 12px 36px rgba(0,0,0,.14)}.trpg-view-rail a,.trpg-view-rail button{position:relative;display:flex;width:42px;height:42px;align-items:center;justify-content:center;border:0;border-bottom:1px solid var(--trpg-line);background:#fff;color:var(--trpg-ink);text-decoration:none;font-size:15px;cursor:pointer}.trpg-view-rail a:last-child,.trpg-view-rail button:last-child{border-bottom:0}.trpg-view-rail a:hover,.trpg-view-rail button:hover{background:var(--trpg-point);color:var(--trpg-point-auto)}.trpg-view-rail em{position:absolute;right:3px;top:3px;min-width:14px;height:14px;padding:0 3px;border-radius:9px;background:var(--trpg-point);color:var(--trpg-point-auto);font:700 8px/14px Arial,sans-serif;font-style:normal}
.trpg-side-drawer{position:fixed;z-index:80;top:0;right:0;width:min(390px,92vw);height:100vh;transform:translateX(105%);transition:transform .23s ease;background:#fff;border-left:1px solid var(--trpg-line);box-shadow:-18px 0 60px rgba(0,0,0,.18)}.trpg-side-drawer.is-open{transform:translateX(0)}.trpg-side-drawer>header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--trpg-line)}.trpg-side-drawer>header strong{font-size:18px}.trpg-side-drawer>header button{width:34px;height:34px;border:1px solid var(--trpg-line);border-radius:8px;background:#fff;font-size:18px;cursor:pointer}.trpg-drawer-body{height:calc(100vh - 76px);overflow:auto;padding:10px 18px 100px}.trpg-bgm-drawer-item{display:grid;grid-template-columns:34px 1fr 30px;gap:8px;align-items:center;padding:13px 4px;border-bottom:1px solid var(--trpg-line);cursor:pointer}.trpg-bgm-drawer-item:hover,.trpg-bgm-drawer-item.is-current{background:var(--trpg-soft)}.trpg-bgm-drawer-item strong{display:block;font-size:12px}.trpg-bgm-drawer-item small{display:block;margin-top:3px;color:var(--trpg-muted);font-size:10px}.trpg-bgm-drawer-item>a{display:flex;width:28px;height:28px;align-items:center;justify-content:center;border:1px solid var(--trpg-line);border-radius:7px;color:var(--trpg-muted);text-decoration:none}.trpg-track-no{color:var(--trpg-point);font:700 10px/1 "Courier New",monospace}
.trpg-bgm-player{position:fixed;z-index:60;left:50%;bottom:15px;transform:translateX(-50%);display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(130px,220px) 36px;align-items:center;gap:14px;width:min(760px,calc(100% - 34px));padding:10px 12px 10px 16px;border:1px solid var(--trpg-line);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 14px 45px rgba(0,0,0,.2);backdrop-filter:blur(12px)}.trpg-bgm-player-info{min-width:0}.trpg-bgm-player-info>span{display:block;color:var(--trpg-point);font:700 8px/1 "Courier New",monospace;letter-spacing:.1em}.trpg-bgm-player-info strong{display:block;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}.trpg-bgm-player-info small{display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--trpg-muted);font-size:9px}.trpg-bgm-controls{display:flex;gap:5px}.trpg-bgm-controls button,.trpg-bgm-list-open{display:flex;width:31px;height:31px;align-items:center;justify-content:center;border:1px solid var(--trpg-line);border-radius:8px;background:#fff;color:var(--trpg-ink);cursor:pointer}.trpg-bgm-controls .trpg-bgm-mainplay{background:var(--trpg-point);border-color:var(--trpg-point);color:var(--trpg-point-auto)}.trpg-bgm-volume{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center;color:var(--trpg-muted);font:700 8px/1 "Courier New",monospace}.trpg-bgm-volume input{accent-color:var(--trpg-point);width:100%}.trpg-youtube-player{position:absolute;width:1px;height:1px;overflow:hidden;opacity:.001;pointer-events:none}
.trpg-handout-modal{position:fixed;z-index:120;inset:0;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.72)}.trpg-handout-modal.is-open{display:flex}.trpg-handout-modal-card{width:min(900px,94vw);max-height:92vh;overflow:auto;border-radius:12px;background:#fff;box-shadow:0 30px 90px rgba(0,0,0,.35)}.trpg-handout-modal-card header{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:#fff;border-bottom:1px solid var(--trpg-line);z-index:2}.trpg-handout-modal-card header strong{font-size:12px}.trpg-handout-modal-card header button{width:32px;height:32px;border:1px solid var(--trpg-line);border-radius:8px;background:#fff;font-size:18px;cursor:pointer}.trpg-handout-modal-card>img{display:block;max-width:100%;height:auto;margin:0 auto}
@media(max-width:900px){.trpg-account-row,.trpg-form-grid{grid-template-columns:1fr}.trpg-field-wide{grid-column:auto}.trpg-session-ticket{grid-template-columns:220px 1fr}.trpg-view-header{grid-template-columns:180px 1fr}.trpg-ticket-head:after{left:180px}.trpg-view-cover{width:180px;height:150px}.trpg-ticket-barcode{display:none}.trpg-bgm-row{grid-template-columns:24px 1fr 1fr 34px}.trpg-bgm-row input[data-bgm-field="url"]{grid-column:2/4}.trpg-view-rail{right:8px}}
@media(max-width:650px){.trpg-write-shell,.trpg-archive-list,.trpg-view-shell{width:min(100% - 18px,1180px);margin-top:14px}.trpg-panel{padding:14px}.trpg-media-row{grid-template-columns:22px 62px 1fr 30px}.trpg-media-preview{width:62px;height:62px}.trpg-session-ticket{grid-template-columns:1fr;min-height:0}.trpg-ticket-cover{height:190px}.trpg-ticket-info{border-left:0;border-top:1px dashed var(--trpg-text-25);padding:20px 18px 50px}.trpg-ticket-info:before,.trpg-ticket-info:after{display:none}.trpg-ticket-info h3{font-size:21px}.trpg-view-stage{padding-bottom:96px}.trpg-view-header{grid-template-columns:1fr;padding:16px}.trpg-ticket-head:after{display:none}.trpg-view-cover{width:100%;height:210px}.trpg-view-heading h1{font-size:25px}.trpg-clear-stamp{right:22px;top:205px}.trpg-participant-strip{gap:5px}.trpg-view-section{padding:12px}.trpg-log-frame{height:620px}.trpg-view-rail{top:auto;right:9px;bottom:88px;transform:none;flex-direction:row}.trpg-view-rail a,.trpg-view-rail button{width:37px;height:37px;border-bottom:0;border-right:1px solid var(--trpg-line)}.trpg-bgm-player{bottom:8px;grid-template-columns:1fr auto 34px;gap:8px}.trpg-bgm-volume{grid-column:1/-1;grid-row:2}.trpg-bgm-player-info small{display:none}.trpg-bgm-row{grid-template-columns:20px 1fr 32px}.trpg-bgm-row input{grid-column:2}.trpg-bgm-row input[data-bgm-field="url"]{grid-column:2}.trpg-view-nav{grid-template-columns:1fr;text-align:center}.trpg-view-nav a:last-child{text-align:center}}
.trpg-ticket-info h3,.trpg-view-heading h1{font-family:var(--trpg-title-font,Arial,"Noto Sans KR",sans-serif)}

/* =========================================================
   v2.2 clean card layout
   Ticket/perforation/barcode decoration removed from LIST/VIEW.
   ========================================================= */
.trpg-card-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.trpg-session-card{position:relative;display:flex;min-width:0;flex-direction:column;overflow:hidden;border:1px solid var(--trpg-line);border-radius:18px;background:#fff;box-shadow:var(--trpg-shadow);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.trpg-session-card:hover{transform:translateY(-3px);border-color:var(--trpg-point-22);box-shadow:0 22px 52px rgba(0,0,0,.12)}
.trpg-session-card.is-notice{border-color:var(--trpg-point-45)}
.trpg-card-cover{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:linear-gradient(135deg,var(--trpg-point-14),var(--trpg-soft));text-decoration:none}
.trpg-card-cover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .28s ease}
.trpg-session-card:hover .trpg-card-cover img{transform:scale(1.025)}
.trpg-card-cover>span{display:block;width:100%;height:100%;background:radial-gradient(circle at 30% 30%,var(--trpg-point-22),transparent 55%)}
.trpg-card-body{display:flex;min-width:0;flex:1;flex-direction:column;padding:18px 18px 20px;color:var(--trpg-ink);text-decoration:none}
.trpg-card-topline{display:flex;min-height:22px;align-items:center;justify-content:space-between;gap:10px}
.trpg-card-pills{display:flex;flex-wrap:wrap;gap:5px}
.trpg-card-pills span{display:inline-flex;align-items:center;min-height:22px;padding:3px 8px;border-radius:999px;background:var(--trpg-soft);color:var(--trpg-muted);font-size:9px;font-weight:700}
.trpg-card-pills .is-status{background:var(--trpg-point-08);color:var(--trpg-point)}
.trpg-card-subtitle{display:block;margin:10px 0 3px;color:var(--trpg-muted);font-size:11px;font-style:italic;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trpg-card-body h3{margin:5px 0 0;color:var(--trpg-ink);font-family:var(--trpg-title-font,Arial,"Noto Sans KR",sans-serif);font-size:21px;line-height:1.3;letter-spacing:-.04em}
.trpg-card-meta{display:flex;flex-wrap:wrap;gap:5px 12px;margin-top:12px;color:var(--trpg-muted);font-size:10px}
.trpg-card-meta span+span:before{content:"·";margin-right:12px;color:var(--trpg-text-25)}
.trpg-card-people{margin:10px 0 0;color:var(--trpg-muted);font-size:10px;line-height:1.6}
.trpg-session-card .trpg-tag-row{margin-top:auto;padding-top:12px}
.trpg-card-list>.trpg-empty{grid-column:1/-1}

.trpg-view-card-header{position:relative;padding:24px 28px;border:1px solid var(--trpg-line);border-radius:18px;background:#fff;box-shadow:0 18px 54px rgba(0,0,0,.1)}
.trpg-view-card-header.has-cover{display:grid;grid-template-columns:150px minmax(0,1fr);gap:24px;align-items:center}
.trpg-view-card-header .trpg-view-cover{width:150px;height:150px;border:1px solid var(--trpg-line);border-radius:14px;background:var(--trpg-soft);overflow:hidden}
.trpg-view-card-header .trpg-view-cover img{display:block;width:100%;height:100%;object-fit:cover}
.trpg-view-card-header .trpg-view-heading{min-width:0}
.trpg-view-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px}
.trpg-view-card-header .trpg-view-category,.trpg-view-card-header .trpg-status-pill{display:inline-flex;align-items:center;min-height:24px;margin:0;padding:4px 9px;border-radius:999px;background:var(--trpg-soft);color:var(--trpg-muted);font-size:9px;font-weight:700}
.trpg-view-card-header .trpg-status-pill{background:var(--trpg-point-08);color:var(--trpg-point)}
.trpg-view-card-header .trpg-view-subtitle{margin:0 0 4px;color:var(--trpg-muted);font-size:11px;font-style:italic;line-height:1.5}
.trpg-view-card-header .trpg-view-heading h1{margin:0;font-family:var(--trpg-title-font,Arial,"Noto Sans KR",sans-serif);font-size:30px;line-height:1.2;letter-spacing:-.045em}
.trpg-view-card-header .trpg-view-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;color:var(--trpg-muted);font-size:11px}
.trpg-view-card-header .trpg-view-meta span+span:before{content:"·";margin-right:14px;color:var(--trpg-text-25)}
.trpg-view-card-header .trpg-participant-strip{margin-top:14px}
.trpg-view-card-header .trpg-tag-row{margin-top:10px}

/* The archived Roll20 area itself should look like the source, not like another ticket/card. */
.trpg-log-section{padding:16px}
.trpg-log-section .trpg-section-heading{padding:2px 4px 0}
.trpg-log-frame-wrap{overflow:hidden;border:0;border-radius:12px;background:#ececec}
.trpg-log-frame{background:#ececec}

@media(max-width:980px){.trpg-card-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.trpg-view-card-header.has-cover{grid-template-columns:112px minmax(0,1fr);gap:16px;padding:18px}.trpg-view-card-header{padding:18px}.trpg-view-card-header .trpg-view-cover{width:112px;height:112px}.trpg-view-card-header .trpg-view-heading h1{font-size:25px}}
@media(max-width:620px){.trpg-card-list{grid-template-columns:1fr}.trpg-card-cover{aspect-ratio:16/9}.trpg-view-card-header.has-cover{grid-template-columns:1fr}.trpg-view-card-header .trpg-view-cover{width:100%;height:auto;aspect-ratio:16/9}.trpg-view-card-header .trpg-view-heading h1{font-size:24px}.trpg-card-body h3{font-size:20px}.trpg-log-section{padding:10px}}

/* =========================================================
   v2.3 log-edit / auto-participant / handout-text / BGM fixes
   ========================================================= */
.trpg-participant-actions{display:flex;align-items:center;gap:10px;margin:0 0 10px}.trpg-participant-actions small,.trpg-row-note{color:var(--trpg-muted);font-size:10px;line-height:1.5}.trpg-empty-inline{padding:18px;border:1px dashed var(--trpg-line);border-radius:10px;background:var(--trpg-soft);color:var(--trpg-muted);font-size:11px;text-align:center}.trpg-participant-row{grid-template-columns:76px minmax(0,1fr) 34px;align-items:center}.trpg-participant-row .trpg-media-preview{width:76px;height:76px;border-radius:50%}.trpg-participant-row .trpg-media-fields input[data-media-field="name"]{font-weight:700}.trpg-inline-field{display:flex;flex-direction:column;gap:5px;color:var(--trpg-muted);font-size:10px}.trpg-handout-row textarea{min-height:94px}.trpg-write-log-wrap{background:#ececec}.trpg-log-editor{background:#ececec}.trpg-write-log-wrap:focus-within{border-color:var(--trpg-point);box-shadow:0 0 0 3px var(--trpg-point-08)}
.trpg-role-line{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:12px}.trpg-role-line span{display:inline-flex;align-items:center;gap:6px;color:var(--trpg-muted);font-size:10px}.trpg-role-line b{display:inline-flex;min-width:26px;align-items:center;justify-content:center;padding:3px 6px;border-radius:999px;background:var(--trpg-point);color:var(--trpg-point-auto);font-size:8px;letter-spacing:.05em}.trpg-card-people b{color:var(--trpg-point);font-size:9px}.trpg-header-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:15px}.trpg-header-actions a,.trpg-header-actions button{display:inline-flex;min-height:34px;align-items:center;justify-content:center;padding:7px 11px;border:1px solid var(--trpg-line);border-radius:9px;background:#fff;color:var(--trpg-ink);font-size:10px;font-weight:700;text-decoration:none;cursor:pointer}.trpg-header-actions .trpg-bgm-header-button{border-color:var(--trpg-point);background:var(--trpg-point);color:var(--trpg-point-auto)}.trpg-bgm-header-button em{margin-left:6px;font-style:normal;opacity:.72}
.trpg-bgm-archive{margin-top:14px;border:1px solid var(--trpg-line);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:var(--trpg-shadow);overflow:hidden}.trpg-bgm-archive summary{display:grid;grid-template-columns:auto auto 1fr;gap:9px;align-items:center;padding:13px 16px;cursor:pointer;list-style:none}.trpg-bgm-archive summary::-webkit-details-marker{display:none}.trpg-bgm-archive summary span{font-size:11px;font-weight:800}.trpg-bgm-archive summary b{padding:3px 7px;border-radius:999px;background:var(--trpg-point-08);color:var(--trpg-point);font-size:9px}.trpg-bgm-archive summary em{justify-self:end;color:var(--trpg-muted);font-size:9px;font-style:normal}.trpg-bgm-archive-list{padding:0 14px 12px;border-top:1px solid var(--trpg-line)}.trpg-bgm-archive-item{display:grid;grid-template-columns:30px minmax(0,1fr) 30px;gap:8px;align-items:center;padding:10px 2px;border-bottom:1px solid var(--trpg-line);cursor:pointer}.trpg-bgm-archive-item:last-child{border-bottom:0}.trpg-bgm-archive-item>span{color:var(--trpg-point);font:700 9px/1 "Courier New",monospace}.trpg-bgm-archive-item strong{display:block;font-size:11px}.trpg-bgm-archive-item small{display:block;margin-top:2px;color:var(--trpg-muted);font-size:9px}.trpg-bgm-archive-item>a{display:flex;width:27px;height:27px;align-items:center;justify-content:center;border:1px solid var(--trpg-line);border-radius:7px;color:var(--trpg-muted);text-decoration:none}.trpg-bgm-archive-item.is-current{background:var(--trpg-soft)}
.trpg-side-drawer{z-index:100020}.trpg-view-rail{z-index:100010}.trpg-bgm-player{z-index:100000}.trpg-handout-modal{z-index:100030}
body.trpg-view-page{background-color:var(--trpg-base)!important}.trpg-view-stage{width:100%;max-width:100%;min-height:100vh;margin-left:0;margin-right:0;padding:1px 0 100px;background:transparent!important}.trpg-view-shell{margin-top:32px}.trpg-log-frame-wrap{background:#ececec}.trpg-log-frame{min-height:320px;height:720px}.trpg-view-section{background:rgba(255,255,255,.97)}.trpg-view-card-header,.trpg-overview,.trpg-bgm-archive{backdrop-filter:blur(7px)}
@media(max-width:650px){.trpg-participant-row{grid-template-columns:58px minmax(0,1fr) 34px}.trpg-participant-row .trpg-media-preview{width:58px;height:58px}.trpg-participant-actions{align-items:flex-start;flex-direction:column}.trpg-view-shell{margin-top:12px}.trpg-header-actions{margin-top:12px}.trpg-bgm-archive summary{padding:12px}.trpg-view-stage{padding-bottom:112px}}
body.trpg-view-page #container{height:auto!important;min-height:100vh!important;overflow:visible!important}


/* =========================================================
   v2.4 Roll20 display fidelity / navigation fixes
   ========================================================= */
.trpg-write-log-wrap,.trpg-log-editor,.trpg-log-frame-wrap,.trpg-log-frame{background:#f7f7f7}
.trpg-log-frame-wrap{border:1px solid var(--trpg-line);border-radius:12px;overflow:hidden}
.trpg-log-frame{display:block;width:100%;border:0}
.trpg-section-heading{align-items:center}
.trpg-section-heading>div{display:flex;align-items:center;gap:8px}
.trpg-page-bottom{width:1px;height:1px;pointer-events:none}
.trpg-panel-title>div{min-width:0}
.trpg-panel-title>div>strong:only-child{margin:0}
.trpg-image-config-head>strong:only-child{margin:0}

/* Roll20 command style editor (LIST / admin only) */
.trpg-roll20-style-panel{margin:0 0 18px;border:1px solid var(--trpg-line);border-radius:16px;background:rgba(255,255,255,.88);overflow:hidden}
.trpg-roll20-style-panel>summary{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;list-style:none;color:var(--trpg-text)}
.trpg-roll20-style-panel>summary::-webkit-details-marker{display:none}
.trpg-roll20-style-panel>summary:after{content:'＋';margin-left:auto;color:var(--trpg-point);font-weight:800}
.trpg-roll20-style-panel[open]>summary:after{content:'−'}
.trpg-roll20-style-panel>summary span{font-size:11px;color:var(--trpg-muted)}
.trpg-roll20-style-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0 16px 16px}
.trpg-roll20-style-form fieldset{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;margin:0;padding:13px;border:1px solid var(--trpg-line);border-radius:12px;background:rgba(255,255,255,.7)}
.trpg-roll20-style-form legend{padding:0 7px;color:var(--trpg-point);font-size:11px;font-weight:800}
.trpg-roll20-style-form label{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--trpg-muted);font-size:11px}
.trpg-roll20-style-form label input[type=color]{width:38px;height:28px;padding:2px;border:1px solid var(--trpg-line);border-radius:7px;background:#fff}
.trpg-roll20-style-form label input[type=number],.trpg-roll20-style-form label select{min-width:76px;height:30px;padding:4px 7px;border:1px solid var(--trpg-line);border-radius:7px;background:#fff;color:var(--trpg-text)}
.trpg-roll20-style-form label.is-check{justify-content:flex-start}
.trpg-roll20-style-form label.is-check input{margin:0}
.trpg-style-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}
@media(max-width:760px){.trpg-roll20-style-form{grid-template-columns:1fr}.trpg-roll20-style-form fieldset{grid-template-columns:1fr}.trpg-roll20-style-form>fieldset:last-of-type{grid-column:auto}}
/* v2.11 direct Roll20 VIEW: iframe 제거 */
.trpg-log-frame-wrap{overflow:visible!important}
.trpg-log-frame.trpg-roll20-canvas{height:auto!important;min-height:320px!important;overflow:visible!important;border:0!important}

/* v2.13 unified isolated Roll20 renderer */
.trpg-log-frame-wrap{overflow:hidden!important}
iframe.trpg-log-frame{display:block!important;width:100%!important;min-height:0!important;height:1px;border:0!important;background:#f6f6f6!important}

/* =========================================================
   2026-08 design pass: compact chat + list style editor
   ========================================================= */
.trpg-list-header-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.trpg-style-icon-btn{display:inline-flex;width:40px;height:40px;align-items:center;justify-content:center;padding:0;border:1px solid var(--trpg-line);border-radius:9px;background:#fff;color:var(--trpg-muted);cursor:pointer;transition:.16s ease}
.trpg-style-icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.trpg-style-icon-btn:hover,.trpg-style-icon-btn.is-active{border-color:var(--trpg-point);background:var(--trpg-point-08);color:var(--trpg-point)}
.trpg-roll20-style-panel[hidden]{display:none!important}
.trpg-roll20-style-panel{margin:-4px 0 20px;border:1px solid var(--trpg-line);border-radius:18px;background:#fff;box-shadow:0 18px 54px rgba(0,0,0,.09);overflow:hidden}
.trpg-style-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid var(--trpg-line);background:linear-gradient(135deg,var(--trpg-soft),rgba(255,255,255,.94))}
.trpg-style-panel-head strong{display:block;font-size:15px;line-height:1.3}.trpg-style-panel-head span{display:block;margin-top:5px;color:var(--trpg-muted);font-size:10px;line-height:1.55}
.trpg-style-panel-close{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;flex:0 0 auto;border:1px solid var(--trpg-line);border-radius:8px;background:#fff;color:var(--trpg-muted);font-size:19px;line-height:1;cursor:pointer}
.trpg-roll20-style-form{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important;padding:16px 18px 18px!important}
.trpg-style-section{min-width:0;border:1px solid var(--trpg-line);border-radius:14px;background:rgba(255,255,255,.92);overflow:hidden}
.trpg-style-section>header{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--trpg-line);background:var(--trpg-soft)}
.trpg-style-section>header>span{display:inline-flex;min-width:54px;height:24px;align-items:center;justify-content:center;padding:0 8px;border-radius:7px;background:var(--trpg-point);color:var(--trpg-point-auto);font:700 9px/1 "Courier New",monospace;letter-spacing:.04em}
.trpg-style-section>header strong{display:block;font-size:11px;line-height:1.3}.trpg-style-section>header small{display:block;margin-top:2px;color:var(--trpg-muted);font-size:9px;line-height:1.35}
.trpg-style-section-body{padding:12px}
.trpg-style-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 12px}
.trpg-roll20-style-form .trpg-style-controls label{display:flex;min-height:31px;align-items:center;justify-content:space-between;gap:8px;color:var(--trpg-muted);font-size:10px}
.trpg-roll20-style-form .trpg-style-controls label.is-check{justify-content:flex-start;min-height:28px}
.trpg-roll20-style-form .trpg-style-controls select,.trpg-roll20-style-form .trpg-style-controls input[type=number]{height:29px;min-width:68px;padding:3px 6px;border:1px solid var(--trpg-line);border-radius:7px;background:#fff;color:var(--trpg-ink);font-size:10px}
.trpg-color-control{display:inline-flex;align-items:center;gap:5px}
.trpg-color-control input[type=color]{width:30px!important;height:28px!important;padding:2px!important;border:1px solid var(--trpg-line)!important;border-radius:7px!important;background:#fff!important}
.trpg-color-control code{min-width:58px;padding:3px 5px;border-radius:5px;background:var(--trpg-soft);color:var(--trpg-muted);font:9px/1.2 Consolas,"Courier New",monospace;text-align:center}
.trpg-unit-control{display:inline-flex;align-items:center;gap:4px}.trpg-unit-control input{width:58px!important;min-width:58px!important}.trpg-unit-control em{color:var(--trpg-muted);font-size:9px;font-style:normal}
.trpg-style-live-preview{margin-top:11px;min-height:50px;padding:12px;border:1px dashed var(--trpg-line);border-radius:10px;background:#f7f7f7;color:#555;line-height:1.65;overflow:hidden}
.trpg-preview-chat{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;align-items:start;text-align:left}.trpg-preview-chat>div{padding-top:2px}.trpg-preview-avatar{display:flex;width:28px;height:28px;align-items:center;justify-content:center;border-radius:5px;background:var(--trpg-point-10);color:var(--trpg-point);font:700 8px/1 Arial,sans-serif}
.trpg-preview-chat strong{display:inline}.trpg-preview-command{display:flex;align-items:center;justify-content:stretch;width:100%}
.trpg-style-actions{grid-column:1/-1!important;display:flex!important;justify-content:flex-end!important;gap:8px!important;padding-top:2px}

/* Card: no reserved empty row above subtitle. */
.trpg-card-topline{min-height:0!important;margin:0 0 7px}
.trpg-card-subtitle{margin:0 0 3px!important}
.trpg-card-topline+.trpg-card-subtitle{margin-top:0!important}
.trpg-card-body h3{margin-top:4px}

/* Whisper preview */
.trpg-preview-whisper{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;align-items:start;text-align:left}
.trpg-preview-whisper>div{min-width:0;padding-top:1px}.trpg-preview-whisper>div>b{display:inline-flex;margin:0 0 4px;padding:2px 6px;border-radius:999px;background:rgba(0,0,0,.06);font:800 8px/1.2 Arial,sans-serif;letter-spacing:.06em}.trpg-preview-whisper p{margin:0;line-height:1.55}.trpg-preview-whisper p strong{font-weight:800}

/* Roll table preset selector. This is a real board-level setting. */
.trpg-rolltable-settings{grid-column:1/-1;border:1px solid var(--trpg-line);border-radius:14px;background:var(--trpg-soft);overflow:hidden}
.trpg-rolltable-settings>header{padding:11px 13px;border-bottom:1px solid var(--trpg-line);background:#fff}.trpg-rolltable-settings>header strong{display:block;font-size:11px}.trpg-rolltable-settings>header small{display:block;margin-top:3px;color:var(--trpg-muted);font-size:9px;line-height:1.5}
.trpg-rolltable-preset-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px}
.trpg-rollpreset-card{position:relative;display:block;min-width:0;padding:9px;border:1px solid var(--trpg-line);border-radius:13px;background:#fff;cursor:pointer;transition:.15s ease}
.trpg-rollpreset-card:hover{border-color:var(--trpg-point);box-shadow:0 5px 16px rgba(0,0,0,.045)}
.trpg-rollpreset-card.is-selected{border-color:var(--trpg-point);box-shadow:0 0 0 2px var(--trpg-point-10)}
.trpg-rollpreset-card>input{position:absolute;top:8px;right:8px;width:14px!important;height:14px!important;margin:0!important;accent-color:var(--trpg-point)}
.trpg-rollpreset-title{display:block;margin:0 22px 8px 1px;color:var(--trpg-muted);font:700 8px/1.2 "Courier New",monospace;letter-spacing:.07em}
.trpg-rollsample{display:block;min-height:142px;padding:11px;border:1px solid var(--trpg-line);border-radius:10px;background:#fff;color:#454545;overflow:hidden}
.trpg-rollsample>strong{display:block;margin-bottom:7px;font-size:12px}.trpg-rollsample-row{display:flex;align-items:center;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--trpg-line)}.trpg-rollsample-row i{color:var(--trpg-muted);font-size:9px;font-style:normal}.trpg-rollsample-row b{font-size:11px}
.trpg-rollsample-outcomes{display:flex;flex-wrap:wrap;gap:4px;margin-top:9px}.trpg-rollsample-outcomes em{display:inline-flex;padding:4px 7px;border-radius:7px;font-size:8px;font-weight:800;font-style:normal}.trpg-rollsample-outcomes .is-success{background:#eaf3ed;color:#4a7057}.trpg-rollsample-outcomes .is-fail{background:#f7eaea;color:#985657}
.trpg-rollsample.is-compact{border-left:4px solid var(--trpg-point)}.trpg-rollsample.is-compact>strong{color:var(--trpg-point)}
.trpg-rollsample.is-ledger{border-radius:2px;box-shadow:inset 0 0 0 3px #fff;outline:1px solid #d7d3ca;background:repeating-linear-gradient(0deg,#fff 0,#fff 23px,#f1eee7 24px)}.trpg-rollsample.is-ledger>strong{padding-bottom:5px;border-bottom:2px solid #5f5b54;font-family:Georgia,serif}
.trpg-rollsample.is-minimal{text-align:center}.trpg-rollsample.is-minimal>strong{font-size:10px;color:var(--trpg-muted)}.trpg-rollsample-big{display:block;margin:7px 0 2px;font-size:31px;font-weight:900;line-height:1;color:var(--trpg-point)}.trpg-rollsample.is-minimal small{display:block;color:var(--trpg-muted);font-size:9px}.trpg-rollsample.is-minimal .trpg-rollsample-outcomes{justify-content:center}
.trpg-rollsample.is-terminal{border-color:#343434;border-radius:5px;background:#222;color:#e8e8e8;font-family:Consolas,"Courier New",monospace}.trpg-rollsample.is-terminal>strong{color:#fff;font-size:10px}.trpg-rollsample.is-terminal p{margin:12px 0;color:#bdbdbd;font-size:9px}.trpg-rollsample.is-terminal .trpg-rollsample-outcomes .is-success{background:#eaf3ed;color:#4a7057}.trpg-rollsample.is-terminal .trpg-rollsample-outcomes .is-fail{background:#f7eaea;color:#985657}

@media(max-width:900px){.trpg-roll20-style-form{grid-template-columns:1fr!important}.trpg-rolltable-preset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.trpg-list-header{align-items:flex-start}.trpg-list-header-actions{align-self:flex-end}.trpg-style-controls{grid-template-columns:1fr}.trpg-rolltable-preset-grid{grid-template-columns:1fr}.trpg-style-panel-head{padding:14px}.trpg-roll20-style-form{padding:12px!important}}

/* Design v2.6 — preset previews mirror the actual compact roll layouts. */
.trpg-rollsample{min-height:104px!important;padding:9px!important}
.trpg-rollsample-inline{display:flex;align-items:center;flex-wrap:wrap;gap:5px 9px;padding-top:7px;border-top:1px solid var(--trpg-line)}
.trpg-rollsample-inline>span{display:inline-flex;align-items:center;gap:4px;min-width:0}.trpg-rollsample-inline i{color:var(--trpg-muted);font-size:7px;font-style:normal}.trpg-rollsample-inline b{color:#555;font-size:9px;white-space:nowrap}.trpg-rollsample-inline b.is-roll{color:var(--trpg-point);font-size:14px}
.trpg-rollsample-inline>em,.trpg-rollsample-row>em{display:inline-flex;padding:3px 6px;border-radius:999px;font-size:7px;font-weight:800;font-style:normal;white-space:nowrap}.trpg-rollsample-inline>em.is-success,.trpg-rollsample-row>em.is-success{background:#eaf3ed;color:#4a7057}.trpg-rollsample-inline>em.is-fail,.trpg-rollsample-row>em.is-fail{background:#f7eaea;color:#985657}
.trpg-rollsample.is-compact{border-left:1px solid var(--trpg-line)!important}.trpg-rollsample.is-compact>strong{margin-bottom:0!important;color:#454545!important}.trpg-rollsample.is-compact .trpg-rollsample-inline{justify-content:space-between}
.trpg-rollsample.is-ledger{min-height:118px!important}.trpg-rollsample.is-ledger .trpg-rollsample-row{padding:4px 2px}.trpg-rollsample.is-ledger .trpg-rollsample-row.is-result{border-bottom:0}
.trpg-rollsample.is-minimal{min-height:88px!important;text-align:left!important;border:0!important;box-shadow:none!important}.trpg-rollsample.is-minimal>strong{margin-bottom:0!important;color:#4c4c4c!important;text-align:left!important}.trpg-rollsample.is-minimal .trpg-rollsample-inline{justify-content:flex-start}.trpg-rollsample.is-minimal .trpg-rollsample-outcomes{justify-content:flex-start!important}
.trpg-rollsample.is-terminal{min-height:96px!important}.trpg-rollsample.is-terminal>strong{margin-bottom:0!important}.trpg-rollsample.is-terminal>strong small{color:#777;font-size:7px;letter-spacing:.08em}.trpg-rollsample.is-terminal .trpg-rollsample-inline{border-top-color:#393939}.trpg-rollsample.is-terminal .trpg-rollsample-inline i{color:#777}.trpg-rollsample.is-terminal .trpg-rollsample-inline b{color:#ddd}

/* Design v2.7 — roll preset preview titles mirror the real skill header hierarchy. */
.trpg-rollsample.is-compact>strong{
  margin:-11px -11px 8px!important;
  padding:7px 9px!important;
  background:#4d5156!important;
  color:#fff!important;
  font-size:11px!important;
  font-weight:900!important;
}
.trpg-rollsample.is-ledger>strong{
  margin:-11px -11px 8px!important;
  padding:7px 10px 6px!important;
  border-bottom:2px solid #403c37!important;
  background:#5d574f!important;
  color:#fffdf8!important;
  font-family:Georgia,"Noto Serif KR",serif!important;
  font-size:12px!important;
  font-weight:900!important;
}
.trpg-rollsample.is-minimal>strong{
  display:table!important;
  margin:0 auto 8px!important;
  padding:4px 8px!important;
  border-radius:6px!important;
  background:#50545a!important;
  color:#fff!important;
  font-size:9px!important;
  font-weight:900!important;
}
.trpg-rollsample.is-terminal>strong{
  margin:-11px -11px 8px!important;
  padding:7px 9px!important;
  border-bottom:1px solid #515a66!important;
  background:#343b45!important;
  color:#f5f7fa!important;
  font-size:10px!important;
  font-weight:900!important;
}

/* Design v2.8 — whisper preview mirrors archive line ordering. */
.trpg-preview-whisper{align-items:center!important;gap:8px!important}
.trpg-preview-whisper>div{padding-top:0!important}
.trpg-preview-whisper p{display:flex!important;align-items:baseline!important;flex-wrap:wrap!important;gap:4px 6px!important;margin:0!important;line-height:1.55!important}
.trpg-preview-whisper p strong{white-space:nowrap!important}
.trpg-preview-whisper p b{display:inline-flex!important;align-items:center!important;margin:0!important;padding:2px 6px!important;border:1px solid currentColor!important;border-radius:999px!important;background:transparent!important;font:800 8px/1.2 Arial,sans-serif!important;letter-spacing:.06em!important}
.trpg-preview-whisper p span{min-width:0!important}
/* Design v2.8 — the published log is not a boxed panel.  Keep the horizontal
   section rhythm, but remove the dark vertical rails seen at both sides. */
.trpg-log-frame-wrap{border-left:0!important;border-right:0!important;box-shadow:none!important}

/* v3.2 published log auto-height guard: VIEW iframe follows actual Roll20 content height. */
.trpg-log-frame-wrap > iframe.trpg-log-frame{min-height:0!important;height:1px;overflow:hidden!important;}

/* =========================================================
   v3.3 participant editor / empty-row cleanup / long-log guard
   ========================================================= */
.trpg-participant-actions{flex-wrap:wrap}
.trpg-participant-row .trpg-row-remove{align-self:center}
.trpg-log-frame-wrap{overflow:hidden!important}
iframe.trpg-log-frame{display:block!important;width:100%!important;max-height:none!important;min-height:0!important;height:1px!important;border:0!important}

/* v3.4 participant display controls */
.trpg-participant-preview.is-empty{border-color:transparent!important;background:transparent!important;box-shadow:none!important}
.trpg-participant-preview.is-empty:before,.trpg-participant-preview.is-empty:after{display:none!important}
.trpg-participant-display-toggle{display:inline-flex;align-items:center;gap:7px;width:max-content;max-width:100%;margin-top:2px;color:var(--trpg-muted);font-size:10px;cursor:pointer}
.trpg-participant-display-toggle input{width:14px!important;height:14px!important;min-height:0!important;margin:0!important;padding:0!important;accent-color:var(--trpg-point)}

/* v3.5.8 storage migration warning */
.trpg-storage-warning{margin:0 0 14px;padding:10px 13px;border:1px solid #e7c9c9;border-radius:10px;background:#fff7f7;color:#8a4b4b;font-size:12px;line-height:1.55}

/* =========================================================
   v3.6.0 compact BGM dock + mobile tool menu
   ========================================================= */
/* The old fixed full-width BGM bar is replaced by a compact floating dock. */
.trpg-bgm-dock{position:fixed;z-index:100000;left:18px;bottom:18px;width:44px;height:44px}
.trpg-bgm-dock:before{content:"";position:absolute;left:0;bottom:40px;width:46px;height:16px}
.trpg-bgm-dock-toggle{position:relative;display:flex;width:44px;height:44px;align-items:center;justify-content:center;border:1px solid var(--trpg-line);border-radius:50%;background:rgba(255,255,255,.97);box-shadow:0 8px 26px rgba(0,0,0,.16);color:var(--trpg-ink);font-size:18px;cursor:pointer;backdrop-filter:blur(10px);transition:transform .18s ease,background .18s ease,color .18s ease,box-shadow .18s ease}
.trpg-bgm-dock-toggle:hover,.trpg-bgm-dock:focus-within .trpg-bgm-dock-toggle,.trpg-bgm-dock.is-open .trpg-bgm-dock-toggle{background:var(--trpg-point);color:var(--trpg-point-auto);transform:translateY(-1px);box-shadow:0 10px 30px rgba(0,0,0,.2)}
.trpg-bgm-dock.is-playing .trpg-bgm-dock-toggle{box-shadow:0 0 0 4px var(--trpg-point-10),0 10px 30px rgba(0,0,0,.18)}
.trpg-bgm-dock-toggle em{position:absolute;right:-3px;top:-4px;min-width:17px;height:17px;padding:0 4px;border-radius:10px;background:var(--trpg-point);color:var(--trpg-point-auto);font:700 8px/17px Arial,sans-serif;font-style:normal}
.trpg-bgm-dock:hover .trpg-bgm-dock-toggle em,.trpg-bgm-dock:focus-within .trpg-bgm-dock-toggle em,.trpg-bgm-dock.is-open .trpg-bgm-dock-toggle em{background:#fff;color:var(--trpg-point)}
.trpg-bgm-dock .trpg-bgm-player{position:absolute!important;left:0!important;right:auto!important;top:auto!important;bottom:50px!important;transform:translateY(8px) scale(.985)!important;display:grid!important;grid-template-columns:minmax(160px,1fr) auto minmax(100px,150px) 34px!important;align-items:center;gap:10px;width:min(540px,calc(100vw - 36px))!important;padding:10px 11px 10px 14px!important;border:1px solid var(--trpg-line)!important;border-radius:14px!important;background:rgba(255,255,255,.97)!important;box-shadow:0 16px 45px rgba(0,0,0,.18)!important;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility .18s ease;backdrop-filter:blur(12px)}
.trpg-bgm-dock:hover .trpg-bgm-player,.trpg-bgm-dock:focus-within .trpg-bgm-player,.trpg-bgm-dock.is-open .trpg-bgm-player{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0) scale(1)!important}
.trpg-bgm-dock .trpg-bgm-player-info strong{max-width:220px}

/* Bottom-left collapsible edit/tools menu.
   Keep it away from the home SLOT/CAPTCHA dock on the right.
   When BGM exists, the edit button sits next to the BGM button. */
.trpg-view-rail{top:auto!important;right:auto!important;bottom:18px!important;left:18px!important;transform:none!important;display:block!important;overflow:visible!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
.trpg-view-rail.has-bgm{left:72px!important}
.trpg-view-rail-toggle{display:flex!important;width:44px!important;height:44px!important;align-items:center;justify-content:center;border:1px solid var(--trpg-line)!important;border-radius:50%!important;background:rgba(255,255,255,.97)!important;box-shadow:0 8px 26px rgba(0,0,0,.16);color:var(--trpg-ink)!important;font-size:17px!important;cursor:pointer;backdrop-filter:blur(10px);transition:transform .18s ease,background .18s ease,color .18s ease,box-shadow .18s ease}
.trpg-view-rail-toggle:hover,.trpg-view-rail:focus-within .trpg-view-rail-toggle,.trpg-view-rail.is-open .trpg-view-rail-toggle{background:var(--trpg-point)!important;color:var(--trpg-point-auto)!important;transform:translateY(-1px)!important;box-shadow:0 10px 30px rgba(0,0,0,.2)}
.trpg-view-rail-menu{position:absolute;left:0;right:auto;top:auto;bottom:50px;display:flex!important;min-width:126px;flex-direction:column!important;padding:5px;border:1px solid var(--trpg-line);border-radius:12px;background:rgba(255,255,255,.98);box-shadow:0 12px 34px rgba(0,0,0,.16);opacity:0;visibility:hidden;pointer-events:none;transform:translateY(6px);transition:opacity .16s ease,transform .16s ease,visibility .16s ease;overflow:hidden}
.trpg-view-rail.is-open .trpg-view-rail-menu{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}
.trpg-view-rail-menu a,.trpg-view-rail-menu button{display:grid!important;grid-template-columns:24px 1fr;width:100%!important;height:35px!important;min-height:35px;gap:6px;align-items:center;justify-items:center;padding:0 9px!important;border:0!important;border-radius:8px!important;background:transparent!important;color:var(--trpg-ink)!important;text-decoration:none;font-size:13px!important;cursor:pointer;text-align:left}
.trpg-view-rail-menu a:hover,.trpg-view-rail-menu button:hover{background:var(--trpg-soft)!important;color:var(--trpg-ink)!important}
.trpg-view-rail-menu span{display:block;justify-self:start;font-size:10px;font-weight:700;white-space:nowrap}

/* The compact player no longer requires a large reserved footer. */
.trpg-view-stage{padding-bottom:42px!important}

@media(max-width:650px){
  /* Header actions are duplicated by the compact floating controls on phones. */
  .trpg-header-actions{display:none!important}
  .trpg-view-stage{padding-bottom:34px!important}

  /* BGM becomes a small top-left icon. Tap toggles the panel; playback keeps running while closed. */
  .trpg-bgm-dock{left:10px;top:calc(10px + env(safe-area-inset-top));bottom:auto;width:40px;height:40px}
  .trpg-bgm-dock:before{display:none}
  .trpg-bgm-dock-toggle{width:40px;height:40px;font-size:16px;box-shadow:0 5px 20px rgba(0,0,0,.14)}
  .trpg-bgm-dock .trpg-bgm-player{left:0!important;top:48px!important;bottom:auto!important;width:min(340px,calc(100vw - 20px))!important;grid-template-columns:minmax(0,1fr) auto 34px!important;gap:7px!important;padding:9px 10px!important;transform:translateY(-6px) scale(.985)!important}
  .trpg-bgm-dock.is-open .trpg-bgm-player,.trpg-bgm-dock:focus-within .trpg-bgm-player{transform:translateY(0) scale(1)!important}
  /* No hover-only opening on touch-sized layouts. */
  .trpg-bgm-dock:not(.is-open) .trpg-bgm-player{opacity:0;visibility:hidden;pointer-events:none}
  .trpg-bgm-player-info>span{display:none}
  .trpg-bgm-player-info strong{margin-top:0;max-width:none;font-size:10px}
  .trpg-bgm-player-info small{display:none!important}
  .trpg-bgm-volume{grid-column:1/-1;grid-row:2;display:grid!important}
  .trpg-bgm-controls button,.trpg-bgm-list-open{width:29px;height:29px}

  /* Keep the edit/tools button at bottom-left on phones.
     BGM already moves to the top-left in this breakpoint. */
  .trpg-view-rail,.trpg-view-rail.has-bgm{top:auto!important;right:auto!important;bottom:calc(10px + env(safe-area-inset-bottom))!important;left:10px!important;transform:none!important}
  .trpg-view-rail-toggle{width:40px!important;height:40px!important;box-shadow:0 5px 20px rgba(0,0,0,.14);font-size:16px!important}
  .trpg-view-rail-menu{left:0;right:auto;top:auto;bottom:47px;transform:translateY(6px)}
  .trpg-view-rail.is-open .trpg-view-rail-menu{transform:translateY(0)}
}

@media(hover:none) and (pointer:coarse){
  .trpg-bgm-dock:hover .trpg-bgm-player{opacity:0;visibility:hidden;pointer-events:none}
  .trpg-bgm-dock.is-open .trpg-bgm-player{opacity:1;visibility:visible;pointer-events:auto}
}

@media(prefers-reduced-motion:reduce){
  .trpg-bgm-dock-toggle,.trpg-bgm-dock .trpg-bgm-player,.trpg-view-rail-menu{transition:none!important}
}

/* =========================================================
   v3.8.0 TRPG / 공용 위젯 좌표계 정리
   =========================================================
   #container_wr, 공용 widget-container, 스티커 좌표계는 TRPG가 재정의하지 않습니다.
   TRPG는 자신의 stage/shell 내부만 스타일링하고 세션 배경은 body에서만 처리합니다.
*/
body.trpg-view-page .trpg-view-stage{
    width:100%;
    max-width:100%;
    margin-left:0;
    margin-right:0;
    background:transparent!important;
}

/* =========================================================
   v3.8.1 desktop session BGM dock placement
   =========================================================
   The site already owns the lower-left edge with global controls.
   Keep TRPG session BGM independent by centering its compact dock
   along the bottom on desktop. The expanded player opens upward
   from the same center point. Mobile keeps the existing top-left UI.
*/
@media (min-width:651px){
  body.trpg-view-page .trpg-bgm-dock{
    left:50%!important;
    right:auto!important;
    bottom:18px!important;
    transform:translateX(-50%)!important;
  }
  body.trpg-view-page .trpg-bgm-dock:before{
    left:50%!important;
    transform:translateX(-50%)!important;
  }
  body.trpg-view-page .trpg-bgm-dock .trpg-bgm-player{
    left:50%!important;
    right:auto!important;
    transform:translate(-50%,8px) scale(.985)!important;
  }
  body.trpg-view-page .trpg-bgm-dock:hover .trpg-bgm-player,
  body.trpg-view-page .trpg-bgm-dock:focus-within .trpg-bgm-player,
  body.trpg-view-page .trpg-bgm-dock.is-open .trpg-bgm-player{
    transform:translate(-50%,0) scale(1)!important;
  }
  /* BGM no longer occupies the lower-left slot, so the TRPG tool
     button does not need the old 54px BGM offset. */
  body.trpg-view-page .trpg-view-rail.has-bgm{
    left:18px!important;
  }
}

/* =========================================================
   v3.9.0 global taskbar coexistence
   ========================================================= */
body.ra0-taskbar-active.trpg-view-page .trpg-view-stage{
  padding-bottom:calc(42px + var(--ra0-taskbar-height,52px))!important;
}
body.ra0-taskbar-active.trpg-view-page .trpg-view-rail,
body.ra0-taskbar-active.trpg-view-page .trpg-view-rail.has-bgm{
  bottom:calc(var(--ra0-taskbar-height,52px) + 14px)!important;
}
@media (min-width:651px){
  body.ra0-taskbar-active.trpg-view-page .trpg-bgm-dock{
    bottom:calc(var(--ra0-taskbar-height,52px) + 14px)!important;
  }
}
@media (max-width:650px){
  body.ra0-taskbar-active.trpg-view-page .trpg-view-stage{
    padding-bottom:calc(34px + var(--ra0-taskbar-height,46px))!important;
  }
  body.ra0-taskbar-active.trpg-view-page .trpg-view-rail,
  body.ra0-taskbar-active.trpg-view-page .trpg-view-rail.has-bgm{
    bottom:calc(var(--ra0-taskbar-height,46px) + 10px + env(safe-area-inset-bottom))!important;
  }
}

/* =========================================================
   v4.0.5 taskbar-shell / TRPG coexistence
   =========================================================
   v4.0.4부터 #main iframe 자체가 작업표시줄 높이만큼 짧아집니다.
   따라서 child frame 안에서는 taskbar 높이를 다시 더하지 않고,
   실제 parent toolbar와 frame이 겹친 픽셀(--trpg-shell-overlap)만 보정합니다.
*/
body.ra0-taskbar-child-frame.trpg-view-page{
  --trpg-shell-overlap:0px;
}
body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-stage{
  padding-bottom:calc(42px + var(--trpg-shell-overlap,0px))!important;
}
body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-rail,
body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-rail.has-bgm{
  bottom:calc(18px + var(--trpg-shell-overlap,0px))!important;
}
@media (min-width:651px){
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-bgm-dock{
    bottom:calc(22px + var(--trpg-shell-overlap,0px))!important;
  }
}
@media (max-width:650px){
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-stage{
    padding-bottom:calc(34px + var(--trpg-shell-overlap,0px))!important;
  }
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-rail,
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-rail.has-bgm{
    bottom:calc(10px + env(safe-area-inset-bottom) + var(--trpg-shell-overlap,0px))!important;
  }
}

/* =========================================================
   v4.0.6 TRPG session BGM side placement
   =========================================================
   The session BGM control belongs to the TRPG view itself, not to the
   global bottom taskbar.  On desktop, keep it on the left edge at the
   vertical center of the viewport and open the player inward (to the right).
   This also keeps the right edge free for the session playlist drawer.
*/
@media (min-width:651px){
  body.trpg-view-page .trpg-bgm-dock,
  body.ra0-taskbar-active.trpg-view-page .trpg-bgm-dock,
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-bgm-dock{
    left:18px!important;
    right:auto!important;
    top:50%!important;
    bottom:auto!important;
    width:44px!important;
    height:44px!important;
    transform:translateY(-50%)!important;
  }

  /* Invisible hover bridge between the round button and the side panel. */
  body.trpg-view-page .trpg-bgm-dock:before{
    display:block!important;
    left:40px!important;
    right:auto!important;
    top:50%!important;
    bottom:auto!important;
    width:18px!important;
    height:68px!important;
    transform:translateY(-50%)!important;
  }

  body.trpg-view-page .trpg-bgm-dock .trpg-bgm-player{
    left:54px!important;
    right:auto!important;
    top:50%!important;
    bottom:auto!important;
    width:min(540px,calc(100vw - 90px))!important;
    transform:translate(-8px,-50%) scale(.985)!important;
    transform-origin:left center!important;
  }

  body.trpg-view-page .trpg-bgm-dock:hover .trpg-bgm-player,
  body.trpg-view-page .trpg-bgm-dock:focus-within .trpg-bgm-player,
  body.trpg-view-page .trpg-bgm-dock.is-open .trpg-bgm-player{
    transform:translate(0,-50%) scale(1)!important;
  }

  /* The TRPG tools remain bottom-left; BGM no longer shares that slot. */
  body.trpg-view-page .trpg-view-rail,
  body.trpg-view-page .trpg-view-rail.has-bgm,
  body.ra0-taskbar-active.trpg-view-page .trpg-view-rail,
  body.ra0-taskbar-active.trpg-view-page .trpg-view-rail.has-bgm,
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-rail,
  body.ra0-taskbar-child-frame.trpg-view-page .trpg-view-rail.has-bgm{
    left:18px!important;
  }
}

/* v4.1 VIEW: keep Roll20 log as a scrollable viewport instead of expanding it. */
.trpg-log-frame-wrap{overflow:hidden!important;}
iframe.trpg-log-frame{display:block!important;width:100%!important;height:min(72vh,760px)!important;min-height:520px!important;max-height:760px!important;overflow:auto!important;border:0!important;background:#f6f6f6!important;}
@media(max-width:650px){iframe.trpg-log-frame{height:68vh!important;min-height:420px!important;max-height:680px!important;}}


/* v4.2 — published Roll20 log follows document height; page owns scrolling */
.trpg-log-frame-wrap{overflow:visible!important;height:auto!important;max-height:none!important;}
iframe.trpg-log-frame{display:block!important;width:100%!important;height:1px!important;min-height:0!important;max-height:none!important;overflow:hidden!important;border:0!important;}
@media(max-width:650px){iframe.trpg-log-frame{height:1px!important;min-height:0!important;max-height:none!important;}}
