/*!
 * XROBOTICS Poster Contest — frontend stylesheet
 * Design language ported verbatim from the approved poster-contest demo.
 * All custom properties are namespaced --xrpc-* and every selector is scoped
 * under .xrpc-app, so nothing collides with Astra, Elementor or any theme.
 */
/*!
 * Theme neutralisation — must load BEFORE the design stylesheet.
 *
 * Astra and other themes style headings, paragraphs, lists, buttons and form
 * controls inside .entry-content, and those rules outrank a plain universal
 * reset. Two things make this work:
 *
 *   1. The doubled .xrpc-app class gives a weight of two classes, which beats
 *      a theme selector like .entry-content p.
 *   2. :where() contributes nothing to specificity, so the element list does
 *      not push the weight above the design's own class rules.
 *
 * Together with loading first, that means: themes lose, and the design's own
 * spacing wins. Putting this block after the design instead is what broke the
 * modal title's 18px gap and made it collide with the first field — do not
 * move it back.
 */

.xrpc-app.xrpc-app :where(h1, h2, h3, h4, h5, h6, p, ul, ol, li, dl, dt, dd, figure, blockquote) {
  margin: 0;
  padding: 0;
  color: inherit;
  font-family: inherit;
  letter-spacing: normal;
  text-transform: none;
}

.xrpc-app.xrpc-app :where(ul, ol) {
  list-style: none;
}

.xrpc-app.xrpc-app :where(button, input, select, textarea) {
  font-family: inherit;
  letter-spacing: normal;
  text-transform: none;
  box-shadow: none;
  min-height: 0;
  line-height: normal;
}

.xrpc-app.xrpc-app :where(button) {
  border: 0;
  width: auto;
  text-shadow: none;
}

.xrpc-app.xrpc-app :where(button):hover,
.xrpc-app.xrpc-app :where(button):focus {
  box-shadow: none;
}

.xrpc-app.xrpc-app :where(a) {
  box-shadow: none;
  text-decoration: none;
}

.xrpc-app.xrpc-app :where(img) {
  border-radius: 0;
  box-shadow: none;
}
.xrpc-app{
    --xrpc-ink:#0A0E1A;
    --xrpc-ink-panel:#161c36;
    --xrpc-ink-panel-2:#1c2340;
    --xrpc-hairline:rgba(245,245,240,0.16);
    --xrpc-hairline-strong:rgba(245,245,240,0.30);
    --xrpc-text:#FFFFFF;
    --xrpc-text-muted:rgba(245,245,240,0.82);
    --xrpc-text-faint:rgba(245,245,240,0.64);
    --xrpc-gold:#FACC23;
    --xrpc-orange:#F83600;
    --xrpc-grad:linear-gradient(90deg,var(--xrpc-gold),var(--xrpc-orange));
    --xrpc-grad-diag:linear-gradient(135deg,var(--xrpc-gold),var(--xrpc-orange));
  }
  .xrpc-app *{box-sizing:border-box;margin:0;padding:0;}
  .xrpc-app{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
  .xrpc-app{
    background:var(--xrpc-ink);
    color:var(--xrpc-text);
    font-family:'Inter',sans-serif;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  .xrpc-app a{color:inherit;text-decoration:none;}
  .xrpc-app img{display:block;max-width:100%;}
  .xrpc-app button{font-family:inherit;}
  .xrpc-app .mono{font-family:'JetBrains Mono',monospace;}
  .xrpc-app .wrap{max-width:1140px;margin:0 auto;padding:0 20px;}

  .xrpc-app::before{
    content:"";
    position:fixed;inset:0;
    background:radial-gradient(1100px 600px at 15% -10%, rgba(250,204,35,0.08), transparent 60%),
               radial-gradient(900px 500px at 100% 0%, rgba(248,54,0,0.06), transparent 55%);
    pointer-events:none;
    z-index:0;
  }

  

.xrpc-app .hero{
    position:relative;
    padding:36px 0 28px;
    border-bottom:1px solid var(--xrpc-hairline);
  }
  .xrpc-app .eyebrow-row{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    margin-bottom:16px;
  }
  .xrpc-app .pill-tag{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.08em;text-transform:uppercase;
    padding:6px 12px;
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:100px;
    color:var(--xrpc-text-muted);
    position:relative;
  }
  .xrpc-app .pill-tag::before{
    content:"";
    display:inline-block;
    width:6px;height:6px;
    border-radius:50%;
    background:var(--xrpc-grad);
    margin-right:8px;
    vertical-align:middle;
  }
  .xrpc-app .cohort-tag{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.08em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .page-title{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:clamp(32px,8vw,52px);
    line-height:1.04;
    letter-spacing:-0.01em;
    max-width:14ch;
  }
  .xrpc-app .page-title em{
    font-style:italic;
    font-weight:400;
    background:var(--xrpc-grad-diag);
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
    -webkit-text-fill-color:transparent;
  }
  .xrpc-app .page-sub{
    margin-top:14px;
    color:var(--xrpc-text-muted);
    font-size:15px;
    max-width:46ch;
  }
  .xrpc-app .btn-grad{
    display:inline-flex;
    align-items:center;
    gap:8px;
    background:var(--xrpc-grad);
    color:#0A0E1A;
    font-weight:600;
    font-size:14px;
    padding:13px 22px;
    border-radius:100px;
    border:none;
    cursor:pointer;
    margin-top:22px;
  }
  .xrpc-app .btn-grad svg{width:16px;height:16px;stroke:#0A0E1A;stroke-width:2.4;}

  

  .xrpc-app .stats-strip{border-bottom:1px solid var(--xrpc-hairline);}
  .xrpc-app .stats-grid{display:grid;grid-template-columns:repeat(3,1fr);}
  .xrpc-app .stat-cell{padding:20px 16px;border-right:1px solid var(--xrpc-hairline);}
  .xrpc-app .stat-cell:last-child{border-right:none;}
  .xrpc-app .stat-value{
    font-family:'Fraunces',serif;font-weight:500;
    font-size:clamp(20px,5vw,28px);line-height:1;
  }
  .xrpc-app .stat-label{
    font-family:'JetBrains Mono',monospace;font-size:11px;
    letter-spacing:0.06em;text-transform:uppercase;
    color:var(--xrpc-text-faint);margin-top:8px;
  }

  

  .xrpc-app .section{padding:40px 0;border-bottom:1px solid var(--xrpc-hairline);position:relative;z-index:1;}
  .xrpc-app .section-head{display:flex;align-items:baseline;gap:12px;margin-bottom:20px;}
  .xrpc-app .section-num{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--xrpc-text-faint);}
  .xrpc-app .section-title{font-family:'Fraunces',serif;font-weight:500;font-size:22px;letter-spacing:-0.01em;}

  

  .xrpc-app .partner-banner{
    position:relative;border-radius:18px;overflow:hidden;
    border:1px solid var(--xrpc-hairline-strong);background:var(--xrpc-ink-panel);
  }
  .xrpc-app .partner-banner::before{
    content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--xrpc-grad);
  }
  .xrpc-app .partner-banner-inner{
    display:flex;flex-direction:column;align-items:flex-start;gap:20px;
    padding:28px 22px 26px;
  }
  .xrpc-app .partner-lockup{display:flex;align-items:center;gap:16px;width:100%;}
  .xrpc-app .partner-logo-plate{
    background:#FFFFFF;border-radius:12px;padding:10px 14px;
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
    box-shadow:0 8px 24px rgba(0,0,0,0.28);
  }
  .xrpc-app .partner-logo-plate img{height:48px;width:auto;border-radius:3px;}
  .xrpc-app .partner-copy{display:flex;flex-direction:column;gap:4px;}
  .xrpc-app .partner-name{font-family:'Fraunces',serif;font-weight:500;font-size:19px;}
  .xrpc-app .partner-role{
    font-family:'JetBrains Mono',monospace;font-size:11.5px;
    letter-spacing:0.08em;text-transform:uppercase;
    color:transparent;background:var(--xrpc-grad);
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;
  }
  .xrpc-app .partner-statement{
    font-size:14px;color:var(--xrpc-text-muted);line-height:1.6;
    border-top:1px solid var(--xrpc-hairline);padding-top:18px;width:100%;
  }
  .xrpc-app .partner-statement strong{color:var(--xrpc-text);font-weight:500;}

  

  .xrpc-app .leaderboard-list{display:flex;flex-direction:column;
    background:var(--xrpc-ink-panel);
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:14px;
    padding:6px 14px;
  }
  .xrpc-app .leaderboard-row{
    display:flex;
    align-items:center;
    gap:14px;
    padding:14px 4px;
    border-top:1px solid var(--xrpc-hairline);
    background:none;
    border-left:none;border-right:none;border-bottom:none;
    width:100%;
    text-align:left;
    cursor:pointer;
    color:var(--xrpc-text);
  }
  .xrpc-app .leaderboard-row:first-child{border-top:none;}
  .xrpc-app .leaderboard-rank{
    flex-shrink:0;
    width:34px;height:34px;
    border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
    font-size:13px;
    background:var(--xrpc-ink-panel-2);
    border:1px solid var(--xrpc-hairline-strong);
    color:var(--xrpc-text-muted);
  }
  .xrpc-app .leaderboard-rank.top1{background:var(--xrpc-grad);color:#0A0E1A;border-color:transparent;}
  .xrpc-app .leaderboard-rank.top2{background:linear-gradient(135deg,#E5E7EB,#9CA3AF);color:#0A0E1A;border-color:transparent;}
  .xrpc-app .leaderboard-rank.top3{background:linear-gradient(135deg,#D6A15C,#9C6B2E);color:#0A0E1A;border-color:transparent;}
  .xrpc-app .leaderboard-info{flex:1;min-width:0;}
  .xrpc-app .leaderboard-title{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:15px;
    line-height:1.3;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .xrpc-app .leaderboard-sub{
    font-size:12.5px;
    color:var(--xrpc-text-faint);
    margin-top:3px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .xrpc-app .leaderboard-votes{
    flex-shrink:0;
    text-align:right;
  }
  .xrpc-app .leaderboard-votes-num{
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
    font-size:16px;
    color:var(--xrpc-text);
  }
  .xrpc-app .leaderboard-votes-label{
    font-family:'JetBrains Mono',monospace;
    font-size:9px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .live-dot{
    display:inline-flex;align-items:center;gap:6px;
    font-family:'JetBrains Mono',monospace;
    font-size:10.5px;letter-spacing:0.06em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .live-dot span.pulse{
    width:7px;height:7px;border-radius:50%;
    background:#4ADE80;
    box-shadow:0 0 0 rgba(74,222,128,0.5);
    animation:pulse 1.8s infinite;
  }
  @keyframes pulse{
    0%{box-shadow:0 0 0 0 rgba(74,222,128,0.5);}
    70%{box-shadow:0 0 0 7px rgba(74,222,128,0);}
    100%{box-shadow:0 0 0 0 rgba(74,222,128,0);}
  }

  

  .xrpc-app .tab-switch{
    display:flex;
    gap:6px;
    background:var(--xrpc-ink-panel);
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:100px;
    padding:4px;
    margin-bottom:22px;
  }
  .xrpc-app .tab-btn{
    flex:1;
    background:none;
    border:none;
    color:var(--xrpc-text-faint);
    font-size:12px;letter-spacing:0.04em;text-transform:uppercase;
    font-weight:600;
    padding:10px 12px;
    border-radius:100px;
    cursor:pointer;
    transition:all .15s ease;
  }
  .xrpc-app .tab-btn.active{
    background:var(--xrpc-grad);
    color:#0A0E1A;
  }

  

  .xrpc-app .idea-panel{display:none;}
  .xrpc-app .idea-panel.active{display:block;}
  .xrpc-app .leaderboard-panel-head{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:16px;
  }
  .xrpc-app .leaderboard-panel-title{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:17px;
  }

  

  .xrpc-app .search-row{
    display:flex;flex-direction:column;gap:12px;margin-bottom:18px;
  }
  .xrpc-app .search-box{
    position:relative;
    display:flex;align-items:center;
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:12px;
    background:var(--xrpc-ink-panel);
    padding:0 14px;
    transition:border-color .15s ease;
  }
  .xrpc-app .search-box:focus-within{border-color:var(--xrpc-gold);}
  .xrpc-app .search-box svg{width:17px;height:17px;stroke:var(--xrpc-text-faint);flex-shrink:0;}
  .xrpc-app .search-box input{
    flex:1;background:transparent;border:0;outline:0;
    color:var(--xrpc-text);font-family:'Inter',sans-serif;font-size:16px;
    padding:14px 10px;
  }
  .xrpc-app .search-box input::placeholder{color:var(--xrpc-text-faint);}
  .xrpc-app .search-clear{
    display:none;
    background:none;border:0;color:var(--xrpc-text-faint);
    cursor:pointer;padding:4px;
  }
  .xrpc-app .search-clear.show{display:flex;}
  .xrpc-app .search-clear svg{width:14px;height:14px;stroke:currentColor;}

  .xrpc-app .filter-scroll{
    display:flex;gap:8px;overflow-x:auto;
    padding-bottom:4px;
    -webkit-overflow-scrolling:touch;
  }
  .xrpc-app .filter-scroll::-webkit-scrollbar{display:none;}
  .xrpc-app .filter-chip{
    flex-shrink:0;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.05em;text-transform:uppercase;
    padding:8px 14px;
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:100px;
    color:var(--xrpc-text-muted);
    background:transparent;
    cursor:pointer;
    white-space:nowrap;
    transition:all .15s ease;
  }
  .xrpc-app .filter-chip.active{
    color:#0A0E1A;
    background:var(--xrpc-grad);
    border-color:transparent;
    font-weight:600;
  }
  .xrpc-app .results-count{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
    margin:16px 0 18px;
  }

  

  .xrpc-app .idea-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
  }
  .xrpc-app .idea-card{
    text-align:left;
    width:100%;
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:14px;
    background:var(--xrpc-ink-panel);
    color:var(--xrpc-text);
    padding:18px;
    cursor:pointer;
    transition:border-color .15s ease, transform .15s ease;
  }
  .xrpc-app .idea-card:hover{border-color:var(--xrpc-gold);}
  .xrpc-app .idea-card:focus-visible{outline:2px solid var(--xrpc-gold);outline-offset:2px;}
  .xrpc-app .idea-card:active{transform:scale(0.99);}
  .xrpc-app .poster-thumb{
    position:relative;
    aspect-ratio:3/4;
    border-radius:12px;
    overflow:hidden;
    margin-bottom:14px;
    border:1px solid var(--xrpc-hairline);
  }
  .xrpc-app .poster-thumb-tag{
    position:absolute;
    top:10px;left:10px;
    font-family:'JetBrains Mono',monospace;
    font-size:9.5px;letter-spacing:0.05em;text-transform:uppercase;
    color:rgba(245,245,240,0.75);
    border:1px solid rgba(245,245,240,0.3);
    padding:4px 9px;
    border-radius:100px;
    background:rgba(10,14,26,0.4);
    backdrop-filter:blur(3px);
  }
.xrpc-app .idea-card-top{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
    margin-bottom:12px;
  }
  .xrpc-app .idea-track-chip{
    display:inline-block;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.06em;text-transform:uppercase;
    padding:5px 11px;
    border-radius:100px;
    border:1px solid var(--xrpc-hairline-strong);
    color:var(--xrpc-text-muted);
    margin-bottom:10px;
  }
  .xrpc-app .idea-title{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:18px;
    line-height:1.25;
    color:var(--xrpc-text);
  }
  .xrpc-app .idea-vote-badge{
    flex-shrink:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:2px;
    padding:8px 12px;
    border-radius:10px;
    background:var(--xrpc-ink-panel-2);
    border:1px solid var(--xrpc-hairline);
  }
  .xrpc-app .idea-vote-badge svg{width:13px;height:13px;stroke:var(--xrpc-gold);}
  .xrpc-app .idea-vote-count{
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
    font-size:15px;
    color:var(--xrpc-text);
  }
  .xrpc-app .idea-vote-label{
    font-family:'JetBrains Mono',monospace;
    font-size:9.5px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .idea-meta{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px 16px;
    border-top:1px solid var(--xrpc-hairline);
    padding-top:14px;
  }
  .xrpc-app .idea-meta-item{display:flex;flex-direction:column;gap:3px;}
  .xrpc-app .idea-meta-label{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .idea-meta-value{font-size:14.5px;color:var(--xrpc-text);}
  .xrpc-app .idea-card-footer{
    margin-top:16px;
    padding-top:14px;
    border-top:1px solid var(--xrpc-hairline);
  }
  .xrpc-app .idea-vote-btn{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    background:var(--xrpc-grad);
    color:#0A0E1A;
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
    font-size:12.5px;letter-spacing:0.05em;text-transform:uppercase;
    border:none;
    border-radius:100px;
    padding:11px 16px;
    cursor:pointer;
  }
  .xrpc-app .idea-vote-btn svg{width:14px;height:14px;stroke:#0A0E1A;stroke-width:2.4;}
  .xrpc-app .idea-vote-btn.voted{
    background:var(--xrpc-ink-panel-2);
    color:var(--xrpc-text-faint);
    border:1px solid var(--xrpc-hairline-strong);
  }
  .xrpc-app .idea-vote-btn.voted svg{stroke:var(--xrpc-text-faint);}
  .xrpc-app .idea-vote-btn:disabled{cursor:default;}

  .xrpc-app .empty-state{
    text-align:center;
    padding:50px 20px;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .empty-state svg{width:32px;height:32px;stroke:var(--xrpc-text-faint);margin:0 auto 14px;}
  .xrpc-app .empty-state p{font-size:14px;}

  

  .xrpc-app .form-group{margin-bottom:16px;}
  .xrpc-app .form-label{
    display:block;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
    margin-bottom:8px;
  }
  .xrpc-app .form-label .req{color:var(--xrpc-gold);margin-left:2px;}
  .xrpc-app .form-input,
.xrpc-app .form-select{
    width:100%;
    background:var(--xrpc-ink-panel-2);
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:10px;
    color:var(--xrpc-text);
    font-family:'Inter',sans-serif;
    font-size:16px;
    padding:13px 14px;
    outline:0;
    transition:border-color .15s ease;
  }
  .xrpc-app .form-input:focus,
.xrpc-app .form-select:focus{border-color:var(--xrpc-gold);}
  .xrpc-app .form-input::placeholder{color:var(--xrpc-text-faint);}
  .xrpc-app .form-select{appearance:none;-webkit-appearance:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 14px center;background-size:16px;
    padding-right:38px;
  }
  .xrpc-app .form-select option{background:#161c36;color:#fff;}
  .xrpc-app .form-hint{
    font-size:12.5px;color:var(--xrpc-text-faint);margin-top:6px;
  }
  .xrpc-app .otp-row{display:flex;gap:10px;}
  .xrpc-app .otp-row .form-input{flex:1;}
  .xrpc-app .btn-secondary{
    flex-shrink:0;
    background:var(--xrpc-ink-panel-2);
    border:1px solid var(--xrpc-hairline-strong);
    color:var(--xrpc-text);
    font-family:'JetBrains Mono',monospace;
    font-size:11.5px;letter-spacing:0.04em;text-transform:uppercase;
    font-weight:600;
    padding:0 16px;
    border-radius:10px;
    cursor:pointer;
    white-space:nowrap;
    transition:border-color .15s ease;
  }
  .xrpc-app .btn-secondary:hover{border-color:var(--xrpc-gold);}
  .xrpc-app .btn-secondary:disabled{opacity:0.4;cursor:not-allowed;}
  .xrpc-app .otp-status{
    display:flex;align-items:center;gap:8px;
    font-family:'JetBrains Mono',monospace;
    font-size:12px;letter-spacing:0.03em;
    margin-top:10px;
  }
  .xrpc-app .otp-status svg{width:14px;height:14px;flex-shrink:0;}
  .xrpc-app .otp-status.pending{color:var(--xrpc-text-faint);}
  .xrpc-app .otp-status.verified{color:#4ADE80;}
  .xrpc-app .otp-status.verified svg{stroke:#4ADE80;}
  .xrpc-app .file-drop{
    display:flex;
    align-items:center;
    gap:12px;
    border:1px dashed var(--xrpc-hairline-strong);
    border-radius:10px;
    padding:14px;
    cursor:pointer;
    background:var(--xrpc-ink-panel-2);
    transition:border-color .15s ease;
  }
  .xrpc-app .file-drop:hover{border-color:var(--xrpc-gold);}
  .xrpc-app .file-drop input[type="file"]{display:none;}
  .xrpc-app .file-drop-icon{
    width:40px;height:40px;
    border-radius:8px;
    background:var(--xrpc-ink-panel);
    border:1px solid var(--xrpc-hairline-strong);
    display:flex;align-items:center;justify-content:center;
    flex-shrink:0;
    overflow:hidden;
  }
  .xrpc-app .file-drop-icon svg{width:18px;height:18px;stroke:var(--xrpc-text-faint);}
  .xrpc-app .file-drop-icon img{width:100%;height:100%;object-fit:cover;}
  .xrpc-app .file-drop-text{font-size:13px;color:var(--xrpc-text-muted);}
  .xrpc-app .file-drop-text strong{color:var(--xrpc-text);font-weight:500;}
  .xrpc-app .file-drop-sub{font-size:11.5px;color:var(--xrpc-text-faint);margin-top:2px;}
  .xrpc-app .form-submit{
    width:100%;
    background:var(--xrpc-grad);
    color:#0A0E1A;
    font-weight:600;
    font-size:15px;
    padding:15px;
    border-radius:12px;
    border:none;
    cursor:pointer;
    margin-top:6px;
    transition:opacity .15s ease;
  }
  .xrpc-app .form-submit:disabled{opacity:0.35;cursor:not-allowed;}
  .xrpc-app .form-success{
    text-align:center;
    padding:20px 0 6px;
  }
  .xrpc-app .form-success svg{width:44px;height:44px;stroke:#4ADE80;margin:0 auto 14px;}
  .xrpc-app .form-success h4{
    font-family:'Fraunces',serif;font-weight:500;font-size:20px;margin-bottom:8px;
  }
  .xrpc-app .form-success p{color:var(--xrpc-text-muted);font-size:14px;}

  

  .xrpc-app .modal-overlay{
    position:fixed;inset:0;
    background:rgba(6,8,16,0.9);
    backdrop-filter:blur(6px);
    z-index:200;
    display:none;
    align-items:flex-end;
    justify-content:center;
  }
.xrpc-app .modal-panel{
    width:100%;
    max-width:640px;
    max-height:88vh;
    overflow-y:auto;
    background:var(--xrpc-ink-panel);
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:20px 20px 0 0;
    padding:26px 22px 32px;
    position:relative;
    animation:modalUp .22s ease;
  }
  @keyframes modalUp{from{transform:translateY(24px);opacity:0;}to{transform:translateY(0);opacity:1;}}
  .xrpc-app .modal-close{
    position:absolute;top:18px;right:18px;
    width:36px;height:36px;
    border-radius:50%;
    background:rgba(10,14,26,0.55);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
    border:1px solid rgba(245,245,240,0.35);
    display:flex;align-items:center;justify-content:center;
    color:var(--xrpc-text);cursor:pointer;
    z-index:2;
  }
  .xrpc-app .modal-close svg{width:16px;height:16px;stroke:currentColor;}
.xrpc-app .lightbox-shell{
    width:100%;
    max-width:420px;
    max-height:92vh;
    overflow-y:auto;
    background:var(--xrpc-ink-panel);
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:20px;
    padding:16px 16px 28px;
    position:relative;
    animation:modalUp .22s ease;
  }
  .xrpc-app .lightbox-topbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:12px;
  }
  .xrpc-app .lightbox-counter{
    font-family:'JetBrains Mono',monospace;
    font-size:12px;
    color:var(--xrpc-text-muted);
  }
.xrpc-app .lightbox-frame{
    position:relative;
    aspect-ratio:3/4;
    border-radius:14px;
    overflow:hidden;
    border:1px solid var(--xrpc-hairline-strong);
    margin-bottom:20px;
  }
  .xrpc-app .lightbox-nav{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    width:38px;height:38px;
    border-radius:50%;
    background:rgba(10,14,26,0.55);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
    border:1px solid rgba(245,245,240,0.3);
    display:flex;align-items:center;justify-content:center;
    color:var(--xrpc-text);
    cursor:pointer;
    z-index:2;
  }
  .xrpc-app .lightbox-nav svg{width:16px;height:16px;stroke:currentColor;}
  .xrpc-app .lightbox-nav:hover{background:rgba(10,14,26,0.8);}
  .xrpc-app .lightbox-nav:disabled{opacity:0.3;cursor:default;}
  .xrpc-app .lightbox-prev{left:10px;}
  .xrpc-app .lightbox-next{right:10px;}
  .xrpc-app .lightbox-info{padding:0 2px;}
  .xrpc-app .modal-track-chip{
    display:inline-block;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.06em;text-transform:uppercase;
    padding:6px 13px;
    border-radius:100px;
    border:1px solid var(--xrpc-hairline-strong);
    color:var(--xrpc-text-muted);
    margin-bottom:14px;
  }
  .xrpc-app .modal-title{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:26px;
    line-height:1.15;
    max-width:22ch;
    margin-bottom:18px;
    color:var(--xrpc-text);
  }
  .xrpc-app .modal-vote-row{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    flex-wrap:wrap;
    row-gap:12px;
    padding:14px 16px;
    border-radius:12px;
    background:var(--xrpc-ink-panel-2);
    border:1px solid var(--xrpc-hairline);
    margin-bottom:20px;
  }
  .xrpc-app .modal-vote-left{display:flex;align-items:center;gap:10px;}
  .xrpc-app .modal-vote-row svg{width:18px;height:18px;stroke:var(--xrpc-gold);}
  .xrpc-app .modal-vote-btn{
    flex-shrink:0;
    flex-grow:1;
    text-align:center;
    background:var(--xrpc-grad);
    color:#0A0E1A;
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
    font-size:11.5px;letter-spacing:0.04em;text-transform:uppercase;
    border:none;
    border-radius:100px;
    padding:9px 16px;
    cursor:pointer;
    transition:opacity .15s ease;
  }
  .xrpc-app .modal-vote-btn:disabled{
    background:var(--xrpc-ink-panel);
    color:var(--xrpc-text-faint);
    border:1px solid var(--xrpc-hairline-strong);
    cursor:default;
  }
  .xrpc-app .modal-vote-count{
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
    font-size:18px;
    color:var(--xrpc-text);
  }
  .xrpc-app .modal-vote-label{
    font-family:'JetBrains Mono',monospace;
    font-size:10px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .modal-meta-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px 20px;
    padding:18px 0;
    border-top:1px solid var(--xrpc-hairline);
    border-bottom:1px solid var(--xrpc-hairline);
    margin-bottom:18px;
  }
  .xrpc-app .modal-meta-item{display:flex;flex-direction:column;gap:4px;}
  .xrpc-app .modal-meta-label{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
  }
  .xrpc-app .modal-meta-value{font-size:14.5px;font-weight:500;}
  .xrpc-app .modal-desc-label{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;letter-spacing:0.05em;text-transform:uppercase;
    color:var(--xrpc-text-faint);
    margin-bottom:8px;
  }
  .xrpc-app .modal-desc{
    font-size:14px;
    color:var(--xrpc-text-muted);
    line-height:1.65;
  }

  

  @media(min-width:720px){
    .xrpc-app .idea-grid{grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));}
    .xrpc-app .search-row{flex-direction:row;align-items:center;}
    .xrpc-app .search-box{flex:1;}
    .xrpc-app .partner-lockup{align-items:center;}
    .xrpc-app .partner-banner-inner{
      flex-direction:row;align-items:center;justify-content:space-between;
      padding:30px 32px;
    }
    .xrpc-app .partner-lockup{width:auto;flex:1;}
    .xrpc-app .partner-statement{
      border-top:none;border-left:1px solid var(--xrpc-hairline);
      padding-top:0;padding-left:32px;width:auto;max-width:320px;flex-shrink:0;
    }
    .xrpc-app .modal-overlay{align-items:center;}
    .xrpc-app .modal-panel{border-radius:20px;padding:32px;}
  }

  @media(min-width:960px){
    .xrpc-app .tab-switch{display:none;}
    .xrpc-app .idea-layout{
      display:grid;
      grid-template-columns:1fr 340px;
      gap:28px;
      align-items:start;
    }
    .xrpc-app .idea-panel{display:block;}
    .xrpc-app .idea-panel-leaderboard{
      position:sticky;
      top:78px;
      max-height:calc(100vh - 100px);
      overflow-y:auto;
      padding-right:2px;
    }
    .xrpc-app .idea-panel-leaderboard::-webkit-scrollbar{width:5px;}
    .xrpc-app .idea-panel-leaderboard::-webkit-scrollbar-thumb{background:var(--xrpc-hairline-strong);border-radius:4px;}
  }

.xrpc-app .cta-strip{padding:34px 0 48px;}
  .xrpc-app .cta-box{
    border:1px solid var(--xrpc-hairline-strong);
    border-radius:18px;
    padding:26px 22px;
    background:var(--xrpc-ink-panel);
    text-align:left;
  }
  .xrpc-app .cta-box h3{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:20px;
    margin-bottom:8px;
  }
  .xrpc-app .cta-box p{
    color:var(--xrpc-text-muted);
    font-size:14px;
    margin-bottom:18px;
    max-width:44ch;
  }

/* ==========================================================================
   PLUGIN LAYER
   Everything above this line is the approved design, ported as-is.
   Everything below is what a real page needs that a static demo did not:
   document chrome, loading and error states, the breakpoints between phone
   and desktop, and keyboard/reduced-motion behaviour.
   ========================================================================== */

/* --- Sitting inside the theme --------------------------------------------
   The app renders into a normal WordPress page, so the theme owns the header,
   the menu and the footer. It also owns all spacing: this block deliberately
   sets no padding or margin of its own, because layout is controlled from
   Elementor. Do not add any here.
   ------------------------------------------------------------------------ */

.xrpc-app{
  position:relative;
  margin:0;
  padding:0;
  border-radius:0;

  /* No isolation, and no overflow clipping.
     isolation:isolate creates a stacking context that traps position:fixed
     modals inside the app — that is what put them behind the site header.
     The ported design also set overflow-x:hidden here, which does two bad
     things: it silently cuts any content that overflows instead of showing
     the problem, and it makes the sticky leaderboard stick to the app
     instead of the viewport, so it stops following the scroll. The grid
     blowout that caused the overflow is fixed properly below, so the
     clipping is no longer needed. */
  overflow:visible;
}

/* The app fills whatever box Elementor gives it — no width of its own. */
.xrpc-app .wrap{
  max-width:none;
  width:100%;
  margin:0;
  padding:0;
}

/* The ambient glow was fixed to the viewport when the plugin owned the whole
   document. Contained to the app instead, so it cannot sit over the header. */
.xrpc-app::before{position:absolute;}

/* A 1fr track has an automatic minimum size, so a wide child pushes the grid
   past its container and the right-hand column gets cut off. minmax(0,1fr)
   lets the track actually shrink. */
.xrpc-app .idea-grid,
.xrpc-app .idea-layout{min-width:0;}
.xrpc-app .idea-grid > *,
.xrpc-app .idea-layout > *{min-width:0;}

@media (min-width:960px){
  .xrpc-app .idea-layout{grid-template-columns:minmax(0,1fr) 340px;}
}
@media (min-width:1280px){
  .xrpc-app .idea-layout{grid-template-columns:minmax(0,1fr) 360px;}
}

/* ------------------------------------------------------------------------
   Theme container background only.
   Astra's boxed layout gives the article wrapper a white background, which
   showed as white bands above and below the dark design. Only the background
   is neutralised here — padding and width are left alone so Elementor stays
   in charge of spacing.
   ------------------------------------------------------------------------ */

body.xrpc-page{background:#0A0E1A;}

body.xrpc-page #page,
body.xrpc-page #content,
body.xrpc-page .site-content,
body.xrpc-page .site-primary,
body.xrpc-page .ast-primary-content,
body.xrpc-page .content-area,
body.xrpc-page .ast-container,
body.xrpc-page .ast-article-single,
body.xrpc-page .ast-article-post,
body.xrpc-page .ast-separate-container .ast-article-single,
body.xrpc-page article.page,
body.xrpc-page .entry-content{
  background:transparent;
  background-color:transparent;
  box-shadow:none;
  border:0;
}

/* Hide the theme's own page title.
   Scoped to the theme's title elements only. An earlier version matched a bare
   .page-title, which is also the class on this app's own hero heading — that
   hid the "Poster Contest" headline. Keep these selectors specific. */
body.xrpc-page.xrpc-hide-title .site-main > article > .entry-header,
body.xrpc-page.xrpc-hide-title .ast-single-post-order,
body.xrpc-page.xrpc-hide-title .entry-header .entry-title,
body.xrpc-page.xrpc-hide-title .ast-archive-title{display:none;}

/* ------------------------------------------------------------------------
   Modal layer.
   The modals are moved to <body> at runtime so no ancestor — this app, a
   theme wrapper or an Elementor section — can trap them in a stacking
   context. This wrapper carries the .xrpc-app class purely so the design
   tokens and modal styles still apply; it must render nothing itself.
   ------------------------------------------------------------------------ */

.xrpc-modal-layer{
  position:static;
  background:none;
  padding:0;
  margin:0;
  border-radius:0;
}
.xrpc-modal-layer::before{display:none;content:none;}

.xrpc-app .modal-overlay{z-index:2147483000;}

/* Clear the WordPress admin bar so the panel top and its close button stay
   reachable for logged-in users. */
body.admin-bar .xrpc-app .modal-overlay{top:32px;}
@media screen and (max-width:782px){
  body.admin-bar .xrpc-app .modal-overlay{top:46px;}
}

/* When the page is scroll-locked behind a modal. */
body.xrpc-locked{overflow:hidden;}

/* --- Accessibility --- */
.xrpc-app .screen-reader-text{
  position:absolute;width:1px;height:1px;
  margin:-1px;padding:0;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.xrpc-app .xrpc-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}

.xrpc-app a:focus-visible,
.xrpc-app button:focus-visible,
.xrpc-app input:focus-visible,
.xrpc-app select:focus-visible,
.xrpc-app textarea:focus-visible,
.xrpc-app [tabindex]:focus-visible{
  outline:2px solid var(--xrpc-gold);
  outline-offset:2px;
  border-radius:6px;
}

@media (prefers-reduced-motion: reduce){
  .xrpc-app *,
  .xrpc-app *::before,
  .xrpc-app *::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .xrpc-app .live-dot span.pulse{animation:none;}
}

/* --- Real poster images --- */
.xrpc-app .poster-thumb img,
.xrpc-app .lightbox-frame img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}
.xrpc-app .lightbox-frame{background:var(--xrpc-ink-panel-2);}
.xrpc-app .lightbox-frame img{object-fit:contain;background:#06080f;}

/* --- Loading skeletons --- */
.xrpc-app .skeleton-card{
  border:1px solid var(--xrpc-hairline);
  border-radius:14px;
  background:var(--xrpc-ink-panel);
  padding:18px;
}
.xrpc-app .skeleton-block{
  border-radius:10px;
  background:linear-gradient(90deg,rgba(245,245,240,0.05),rgba(245,245,240,0.11),rgba(245,245,240,0.05));
  background-size:200% 100%;
  animation:xrpcShimmer 1.3s linear infinite;
}
.xrpc-app .skeleton-thumb{aspect-ratio:3/4;margin-bottom:14px;}
.xrpc-app .skeleton-line{height:13px;margin-bottom:9px;}
.xrpc-app .skeleton-line.short{width:55%;}
@keyframes xrpcShimmer{
  0%{background-position:200% 0;}
  100%{background-position:-200% 0;}
}

/* --- Load more --- */
.xrpc-app .load-more-row{display:flex;justify-content:center;padding:22px 0 4px;}
.xrpc-app .btn-outline{
  background:transparent;
  border:1px solid var(--xrpc-hairline-strong);
  color:var(--xrpc-text-muted);
  font-size:12px;letter-spacing:0.05em;text-transform:uppercase;font-weight:600;
  padding:12px 24px;
  border-radius:100px;
  cursor:pointer;
  transition:border-color .15s ease,color .15s ease;
}
.xrpc-app .btn-outline:hover{border-color:var(--xrpc-gold);color:var(--xrpc-text);}
.xrpc-app .btn-outline:disabled{opacity:.5;cursor:default;}

/* --- Inline errors and notices --- */
.xrpc-app .form-error{
  display:flex;align-items:flex-start;gap:8px;
  /* The icon is an inline SVG with no intrinsic size. Without a fixed width
     it stretches to fill the flex line and blows the box up to a huge empty
     panel with the text pushed to one side. */
  font-size:13px;line-height:1.5;
  color:#FCA5A5;
  background:rgba(248,113,113,0.09);
  border:1px solid rgba(248,113,113,0.32);
  border-radius:10px;
  padding:11px 13px;
  margin-bottom:14px;
}
.xrpc-app .form-error svg{
  width:16px;
  height:16px;
  flex:0 0 16px;
  stroke:currentColor;
  fill:none;
  margin-top:1px;
}
.xrpc-app .form-error span{flex:1 1 auto;min-width:0;}
.xrpc-app .otp-status svg{
  width:14px;
  height:14px;
  flex:0 0 14px;
  stroke:currentColor;
  fill:none;
}
.xrpc-app .otp-status{display:flex;align-items:center;gap:6px;}

.xrpc-app .form-input.has-error,
.xrpc-app .form-select.has-error{border-color:#F87171;}
.xrpc-app .otp-status.error{color:#FCA5A5;}
.xrpc-app .otp-status.error svg{stroke:#FCA5A5;}
.xrpc-app .closed-note{
  display:inline-block;
  margin-top:22px;
  font-size:11.5px;letter-spacing:0.06em;text-transform:uppercase;
  color:var(--xrpc-text-faint);
  border:1px solid var(--xrpc-hairline-strong);
  border-radius:100px;
  padding:11px 20px;
}

/* --- Consent checkbox --- */
.xrpc-app .consent-row{
  display:flex;align-items:flex-start;gap:11px;
  font-size:13px;line-height:1.55;
  color:var(--xrpc-text-muted);
  cursor:pointer;
}
.xrpc-app .consent-row input[type="checkbox"]{
  flex-shrink:0;
  width:18px;height:18px;
  margin-top:1px;
  accent-color:var(--xrpc-gold);
  cursor:pointer;
}
.xrpc-app .consent-row a{color:var(--xrpc-gold);text-decoration:underline;}

/* --- Textarea inherits the input styling --- */
.xrpc-app textarea.form-input{
  resize:vertical;
  min-height:84px;
  line-height:1.55;
  font-family:'Inter',sans-serif;
}

/* --- Vote button states --- */
.xrpc-app .idea-vote-btn.used,
.xrpc-app .modal-vote-btn.used{
  background:var(--xrpc-ink-panel-2);
  color:var(--xrpc-text-faint);
  border:1px solid var(--xrpc-hairline-strong);
  cursor:default;
}
.xrpc-app .idea-vote-btn.used svg{stroke:var(--xrpc-text-faint);}
.xrpc-app .btn-secondary.is-busy,
.xrpc-app .form-submit.is-busy{opacity:.6;cursor:progress;}

/* Counts hidden until close */
.xrpc-app .count-hidden{
  font-family:'JetBrains Mono',monospace;
  font-size:10px;letter-spacing:0.04em;text-transform:uppercase;
  color:var(--xrpc-text-faint);
}

/* --- Modal overlay uses [hidden] rather than a class, so the markup is
       meaningful before JavaScript boots. --- */
.xrpc-app .modal-overlay[hidden]{display:none !important;}
.xrpc-app .modal-overlay{display:flex;}

/* Submit and vote modals rise from the bottom on phones (inherited from the
   design). The lightbox is centred instead, and its close button sits in the
   topbar rather than floating over the artwork. */
.xrpc-app #xrpcLightbox{align-items:center;padding:20px;}
.xrpc-app #xrpcLightbox .modal-close{position:static;flex-shrink:0;}
.xrpc-app .load-more-row[hidden],
.xrpc-app .empty-state[hidden],
.xrpc-app .form-group[hidden],
.xrpc-app .form-error[hidden],
.xrpc-app [hidden]{display:none !important;}

/* ==========================================================================
   BREAKPOINTS
   The demo jumped straight from phone to 960px desktop. These fill the gap
   and tighten the extremes.
   ========================================================================== */

/* --- Small phones (iPhone SE and similar) --- */
@media (max-width:379px){
  .xrpc-app .wrap{padding:0 14px;}
  .xrpc-app .stat-cell{padding:15px 9px;}
  .xrpc-app .stat-label{font-size:9.5px;letter-spacing:0.04em;}
  .xrpc-app .idea-card{padding:15px;}
  .xrpc-app .idea-meta{grid-template-columns:1fr;}
  .xrpc-app .modal-meta-grid{grid-template-columns:1fr;gap:13px;}
  .xrpc-app .otp-row{flex-direction:column;align-items:stretch;}
  .xrpc-app .otp-row .btn-secondary{padding:12px 16px;}
  .xrpc-app .modal-panel{padding:22px 16px 26px;}
  .xrpc-app .lightbox-shell{padding:14px 12px 24px;}
  .xrpc-app .modal-title{font-size:21px;}
  .xrpc-app .partner-banner-inner{padding:22px 17px;}
}

/* --- Large phone / small tablet portrait --- */
@media (min-width:480px) and (max-width:719px){
  .xrpc-app .idea-grid{grid-template-columns:repeat(2,1fr);}
  .xrpc-app .idea-card{padding:16px;}
  .xrpc-app .idea-title{font-size:16.5px;}
}

/* --- Tablet portrait: two-up grid, leaderboard still tabbed --- */
@media (min-width:720px) and (max-width:959px){
  .xrpc-app .wrap{padding:0 32px;}
  .xrpc-app .hero{padding:44px 0 34px;}
  .xrpc-app .idea-grid{grid-template-columns:repeat(2,1fr);gap:16px;}
  .xrpc-app .tab-switch{max-width:420px;}
  .xrpc-app .section{padding:48px 0;}
  .xrpc-app .stat-cell{padding:24px 20px;}
  .xrpc-app .cta-box{padding:32px 30px;}
  .xrpc-app .modal-panel{max-width:560px;}
  .xrpc-app .lightbox-shell{max-width:520px;}
  .xrpc-app .lightbox-frame{max-height:62vh;}
}

/* --- Tablet landscape: bring the leaderboard alongside, narrower rail --- */
@media (min-width:960px) and (max-width:1179px){
  .xrpc-app .idea-layout{grid-template-columns:1fr 300px;gap:22px;}
  .xrpc-app .idea-grid{grid-template-columns:repeat(2,1fr);}
  .xrpc-app .leaderboard-title{font-size:14px;}
  .xrpc-app .leaderboard-sub{font-size:11.5px;}
  .xrpc-app .leaderboard-votes-num{font-size:14px;}
}

/* --- Wide desktop --- */
@media (min-width:1280px){
  .xrpc-app .idea-layout{grid-template-columns:1fr 360px;gap:34px;}
  .xrpc-app .idea-grid{grid-template-columns:repeat(3,1fr);gap:18px;}
  .xrpc-app .hero{padding:56px 0 42px;}
  .xrpc-app .page-title{font-size:56px;}
  .xrpc-app .section{padding:52px 0;}
  .xrpc-app .lightbox-shell{max-width:460px;}
}

/* --- Short landscape phones: modals must never trap content off-screen --- */
@media (max-height:520px) and (orientation:landscape){
  .xrpc-app .modal-overlay{align-items:flex-start;padding:12px;}
  .xrpc-app .modal-panel,
  .xrpc-app .lightbox-shell{
    max-height:calc(100vh - 24px);
    border-radius:16px;
    padding:18px 16px 22px;
  }
  .xrpc-app .lightbox-frame{aspect-ratio:auto;height:52vh;}
  .xrpc-app .modal-poster-image{max-height:44vh;}
}

/* --- Hover only where hover exists, so taps do not stick on touch --- */
@media (hover:none){
  .xrpc-app .idea-card:hover{border-color:var(--xrpc-hairline-strong);}
  .xrpc-app .btn-outline:hover{border-color:var(--xrpc-hairline-strong);color:var(--xrpc-text-muted);}
}

/* --- Print: a clean poster list, no chrome --- */
@media print{
  .xrpc-app .tab-switch,
  .xrpc-app .cta-strip,
  .xrpc-app .modal-overlay,
  .xrpc-app .idea-card-footer,
  .xrpc-app .search-row,
  .xrpc-app .filter-scroll{display:none !important;}
  .xrpc-app{background:#fff;color:#000;}
  .xrpc-app::before{display:none;}
  .xrpc-app .idea-card{border-color:#ccc;background:#fff;color:#000;break-inside:avoid;}
}

/* ------------------------------------------------------------------------
   Submission wizard.
   Three steps inside one growing panel: verify, confirm details, add poster.
   ------------------------------------------------------------------------ */

.xrpc-app .xrpc-wizard{
  display:flex;
  flex-direction:column;
  max-height:min(88vh, 900px);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
body.admin-bar .xrpc-app .xrpc-wizard{max-height:min(88vh - 32px, 900px);}

/* Progress rail */
.xrpc-app .xrpc-steps{
  display:flex;
  align-items:center;
  gap:6px;
  margin:0 0 18px;
  padding:0 34px 0 0;
  list-style:none;
}
.xrpc-app .xrpc-step{
  display:flex;
  align-items:center;
  gap:7px;
  flex:1;
  min-width:0;
  font-size:10.5px;
  letter-spacing:0.05em;
  text-transform:uppercase;
  color:var(--xrpc-text-faint);
}
.xrpc-app .xrpc-step + .xrpc-step{
  border-top:1px solid var(--xrpc-hairline-strong);
  padding-left:8px;
}
.xrpc-app .xrpc-step-dot{
  flex-shrink:0;
  width:22px;height:22px;
  display:grid;place-items:center;
  border-radius:50%;
  border:1px solid var(--xrpc-hairline-strong);
  font-size:11px;
  font-weight:600;
}
.xrpc-app .xrpc-step-label{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.xrpc-app .xrpc-step.is-active{color:var(--xrpc-text);}
.xrpc-app .xrpc-step.is-active .xrpc-step-dot{
  background:var(--xrpc-grad);
  border-color:transparent;
  color:#0A0E1A;
}
.xrpc-app .xrpc-step.is-done{color:var(--xrpc-text-muted);}
.xrpc-app .xrpc-step.is-done .xrpc-step-dot{
  border-color:var(--xrpc-gold);
  color:var(--xrpc-gold);
}

/* The wizard title sits between the step rail and the first field, so it
   needs its own spacing rather than relying on the shared modal title rule. */
.xrpc-app .xrpc-wizard .modal-title{
  margin:0 34px 6px 0;
  font-size:24px;
  line-height:1.2;
}
.xrpc-app .xrpc-pane > .form-hint:first-child{margin-bottom:18px;}
.xrpc-app .xrpc-pane > .form-group:first-child{margin-top:16px;}

/* Panes */
.xrpc-app .xrpc-pane[hidden]{display:none !important;}
.xrpc-app .xrpc-pane.is-active{
  animation:xrpcPaneIn .22s ease both;
}
@keyframes xrpcPaneIn{
  from{opacity:0;transform:translateY(6px);}
  to{opacity:1;transform:none;}
}

/* Verified, non-editable field */
.xrpc-app .form-input.is-locked{
  background:var(--xrpc-ink-panel-2);
  color:var(--xrpc-text-muted);
  cursor:default;
}

.xrpc-app .link-btn{
  background:none;
  border:0;
  padding:0;
  font:inherit;
  font-size:12px;
  color:var(--xrpc-gold);
  text-decoration:underline;
  cursor:pointer;
}

/* Read-back of step 2, shown above the poster fields */
.xrpc-app .xrpc-recap{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px 16px;
  padding:14px 16px;
  margin-bottom:20px;
  border:1px solid var(--xrpc-hairline);
  border-radius:12px;
  background:var(--xrpc-ink-panel-2);
}
.xrpc-app .xrpc-recap:empty{display:none;}
.xrpc-app .xrpc-recap-item{display:flex;flex-direction:column;gap:3px;min-width:0;}
.xrpc-app .xrpc-recap-label{
  font-size:9.5px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--xrpc-text-faint);
}
.xrpc-app .xrpc-recap-value{
  font-size:13px;
  color:var(--xrpc-text);
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Action row */
.xrpc-app .xrpc-wizard-actions{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:4px;
}
.xrpc-app .xrpc-wizard-actions .form-submit{flex:1;margin-top:0;}
.xrpc-app .btn-back{
  flex-shrink:0;
  background:transparent;
  border:1px solid var(--xrpc-hairline-strong);
  color:var(--xrpc-text-muted);
  font-size:12px;
  letter-spacing:0.04em;
  text-transform:uppercase;
  font-weight:600;
  padding:14px 20px;
  border-radius:100px;
  cursor:pointer;
  transition:border-color .15s ease,color .15s ease;
}
.xrpc-app .btn-back:hover{border-color:var(--xrpc-gold);color:var(--xrpc-text);}
.xrpc-app .btn-back:disabled{opacity:.5;cursor:default;}

@media (max-width:420px){
  .xrpc-app .xrpc-recap{grid-template-columns:1fr;}
  .xrpc-app .xrpc-step-label{display:none;}
  .xrpc-app .xrpc-step{flex:0 0 auto;}
  .xrpc-app .xrpc-step + .xrpc-step{flex:1;}
}

/* ------------------------------------------------------------------------
   Confirm screen (step 2).
   Read-only on purpose: these values come from the registration and are what
   the poster is filed under, so they are confirmed, never edited here.
   ------------------------------------------------------------------------ */

.xrpc-app .xrpc-confirm{
  margin:0;
  padding:16px 18px;
  border:1px solid var(--xrpc-hairline);
  border-radius:12px;
  background:var(--xrpc-ink-panel-2);
}
.xrpc-app .xrpc-confirm-row{
  display:grid;
  grid-template-columns:110px minmax(0,1fr);
  gap:12px;
  align-items:baseline;
  padding:9px 0;
}
.xrpc-app .xrpc-confirm-row + .xrpc-confirm-row{
  border-top:1px solid var(--xrpc-hairline);
}
.xrpc-app .xrpc-confirm dt{
  margin:0;
  font-size:9.5px;
  letter-spacing:0.07em;
  text-transform:uppercase;
  color:var(--xrpc-text-faint);
}
.xrpc-app .xrpc-confirm dd{
  margin:0;
  font-size:14px;
  color:var(--xrpc-text);
  word-break:break-word;
}
.xrpc-app .xrpc-confirm-empty{color:var(--xrpc-text-faint);font-style:italic;}

/* "Not confirm" is a real rejection, so it should not look like plain Back. */
.xrpc-app .btn-back.is-danger{
  border-color:rgba(248,113,113,0.45);
  color:#FCA5A5;
}
.xrpc-app .btn-back.is-danger:hover{
  border-color:#F87171;
  color:#FCA5A5;
}

@media (max-width:420px){
  .xrpc-app .xrpc-confirm-row{grid-template-columns:1fr;gap:3px;}
}
