:root{--color-accent: #df0000;--color-accent-hover: #b80000;--color-background: #131313;--color-surface: #2b2b2b;--color-surface-alt: #303030;--color-text: #ffffff;--color-text-secondary: rgba(255, 255, 255, .54);--color-text-muted: #adb5bd;--color-border: rgba(255, 255, 255, .54);--color-border-subtle: rgba(255, 255, 255, .12);--color-nav-bg: rgba(255, 255, 255, .04);--color-nav-border: rgba(255, 255, 255, .08);--color-content-bg: rgba(255, 255, 255, .03);--color-content-border: rgba(255, 255, 255, .08);--color-card-bg: rgba(255, 255, 255, .02);--color-card-border: rgba(255, 255, 255, .12);--color-logo-bg: rgba(255, 255, 255, .03);--color-logo-border: rgba(255, 255, 255, .12);--color-link-text: #d8d8d8;--color-footer-text: #b6c0cc;--color-ruo-bg: rgba(223, 0, 0, .14);--color-ruo-text: #f9d4d4;--color-error: #ff6b6b;--color-error-text: #ffcece;--body-gradient: radial-gradient(circle at top left, #20232b 0%, #131313 45%, #0e0f12 100%);font-family:Segoe UI,Arial,sans-serif;line-height:1.5;font-weight:400;color:var(--color-text);background-color:var(--color-background)}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--color-text);background:var(--body-gradient)}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:16px;padding:16px}.app-content-blocked{pointer-events:none;-webkit-user-select:none;user-select:none;filter:blur(1px)}.ruo-banner{border:1px solid var(--color-accent);background:var(--color-ruo-bg);color:var(--color-ruo-text);border-radius:10px;padding:10px 14px;display:flex;gap:10px;align-items:center}.ruo-icon{width:22px;height:22px;border-radius:999px;border:1px solid var(--color-accent);display:inline-flex;align-items:center;justify-content:center;font-weight:700}.top-nav{background:var(--color-nav-bg);border:1px solid var(--color-nav-border);border-radius:10px;padding:10px 12px;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.top-nav-left{display:flex;align-items:center;gap:10px;min-width:0}.brand-logo-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--color-logo-border);border-radius:8px;background:var(--color-logo-bg);padding:6px;flex-shrink:0}.brand-logo{display:block;width:34px;height:34px;object-fit:contain}.top-nav-links{display:flex;gap:8px;flex-wrap:wrap}.top-nav-links a{border:1px solid var(--color-border-subtle);background:var(--color-nav-bg);border-radius:8px;padding:6px 10px;font-weight:600;color:var(--color-link-text)}.top-controls{display:flex;gap:8px;flex-wrap:wrap}.lang-switch,.theme-switch{display:flex;gap:6px}.lang-switch button,.theme-switch button{border:1px solid var(--color-border-subtle);background:transparent;color:var(--color-link-text);border-radius:8px;padding:6px 10px;cursor:pointer}.lang-switch button.active,.theme-switch button.active{border-color:var(--color-accent);background:var(--color-accent);color:#fff}.content{flex:1;background:var(--color-content-bg);border:1px solid var(--color-content-border);border-radius:12px;padding:20px}h1{margin:0 0 10px;font-size:clamp(1.3rem,3vw,1.8rem)}h2{margin:0 0 8px;font-size:1.05rem}p{margin:0;color:var(--color-text-muted)}.card-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:18px}.card-grid.two-col{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.card{border:1px solid var(--color-card-border);border-radius:10px;background:var(--color-card-bg);padding:14px}.grade-card.g2{border-color:#f59e0b59;background:#f59e0b14}.primary-btn{display:inline-block;margin-top:12px;border:1px solid var(--color-accent);background:var(--color-accent);color:#fff;border-radius:8px;padding:8px 12px;font-weight:700}.auth-controls{display:flex}.auth-btn{border:1px solid var(--color-accent);background:var(--color-accent);color:#fff;border-radius:8px;padding:6px 10px;cursor:pointer;font-weight:600}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.primary-btn:focus-visible,.auth-btn:focus-visible{outline:2px solid #ffffff;outline-offset:2px}.auth-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bd;display:flex;align-items:center;justify-content:center;z-index:999;padding:16px}.auth-modal{width:min(520px,100%);border:1px solid var(--color-content-border);border-radius:12px;background:#16181d;padding:20px;box-shadow:0 10px 40px #00000059}.placeholder-box{margin-top:16px;border:1px dashed var(--color-accent);border-radius:10px;padding:18px}.actions-row{margin-top:14px}.legal-footer{border-top:1px solid var(--color-border-subtle);padding-top:12px;color:var(--color-footer-text);font-size:.92rem}@media(max-width:768px){.app-shell{padding:12px}.top-nav-left{width:100%}.brand-logo{width:30px;height:30px}.content{padding:16px}}.landing{width:100%;max-width:860px;margin:0 auto;display:flex;flex-direction:column;gap:44px}.landing-hero{display:flex;flex-direction:column;gap:16px}.landing-badge{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);border:1px solid var(--color-border-subtle);border-radius:6px;padding:3px 8px;width:fit-content}.landing-title{font-size:clamp(2rem,5vw,3rem);font-weight:800;margin:0;color:var(--color-text);line-height:1.1}.landing-title .accent{color:var(--color-accent)}.landing-sub{font-size:1rem;color:var(--color-text-secondary);line-height:1.65;max-width:680px;margin:0}.feature-badges{display:flex;gap:8px;flex-wrap:wrap;padding-top:4px}.pill{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--color-text-muted);border:1px solid var(--color-border-subtle);border-radius:999px;padding:4px 10px;white-space:nowrap}.landing-upload-section{display:flex;flex-direction:column;gap:10px}.landing-upload-label{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.dropzone{position:relative;display:flex;align-items:center;gap:14px;border:1.5px dashed var(--color-accent);border-radius:12px;padding:20px 18px;cursor:pointer;transition:border-color .15s ease,background .15s ease}.dropzone:hover,.dropzone.dropzone-active{border-color:var(--color-accent-hover);background:#df00000f}.dropzone-icon{font-size:34px;flex-shrink:0;line-height:1}.dropzone-text{flex:1;display:flex;flex-direction:column;gap:3px}.dropzone-title{font-size:15px;font-weight:700;color:var(--color-text-secondary);margin:0}.dropzone-subtitle{font-size:12.5px;color:var(--color-text-muted);margin:0}.dropzone-browse-btn{flex-shrink:0;border:none;border-radius:8px;background:var(--color-accent);color:#fff;font-size:13.5px;font-weight:700;padding:9px 16px;cursor:pointer;transition:background .15s ease}.dropzone-browse-btn:hover{background:var(--color-accent-hover)}.dropzone-browse-btn:focus-visible{outline:2px solid #ffffff;outline-offset:2px}.dropzone-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.dropzone-error{font-size:13px;color:var(--color-error);margin:0}.landing-steps{display:flex;gap:12px}.lstep{flex:1;display:flex;flex-direction:column;gap:10px;border:1px solid var(--color-card-border);border-radius:10px;background:var(--color-card-bg);padding:16px}.lstep:hover{border-color:#df000040}.lstep-num{width:28px;height:28px;border-radius:50%;background:var(--color-accent);color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.lstep-title{font-size:14px;font-weight:700;color:var(--color-text-secondary);margin:0}.lstep-desc{font-size:12.5px;color:var(--color-text-muted);line-height:1.6;margin:0}@media(max-width:640px){.landing-steps{flex-direction:column}.dropzone{flex-wrap:wrap}.dropzone-browse-btn{width:100%}}.upload-workspace{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);border:1px solid var(--color-card-border);border-radius:16px;overflow:hidden;background:#ffffff05}.upload-stage{padding:22px;display:flex;flex-direction:column;gap:16px;border-right:1px solid var(--color-card-border);min-height:440px}.upload-stage-card,.upload-stage-empty{display:flex;flex-direction:column;gap:16px;border:1px solid rgba(223,0,0,.18);border-radius:14px;background:#ffffff05;padding:18px;min-height:330px}.upload-stage-empty{justify-content:center}.upload-stage-empty-error{background:#df00000f}.upload-stage-media{min-height:250px;border:1px solid rgba(223,0,0,.16);border-radius:14px;background:#141518d6;display:flex;align-items:center;justify-content:center;overflow:hidden}.upload-stage-image{width:100%;height:100%;object-fit:contain}.dicom-preview{background-color:#000;image-rendering:pixelated}.upload-stage-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;max-width:360px;padding:20px}.upload-stage-fallback-icon{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#df000029;color:var(--color-error-text);font-size:22px;font-weight:800}.upload-stage-fallback-title,.upload-stage-name,.upload-sidebar-title,.upload-issue-name{margin:0;color:var(--color-text)}.upload-stage-fallback-copy,.upload-stage-details,.upload-sidebar-copy,.upload-sidebar-stats p,.upload-queue-meta,.upload-issue-copy{color:var(--color-text-muted)}.upload-stage-meta{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.upload-stage-meta>div{min-width:0}.upload-stage-kicker,.upload-sidebar-label,.upload-queue-label{margin:0;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.upload-stage-name,.upload-sidebar-title{font-size:1.15rem;line-height:1.3}.upload-stage-name{word-break:break-word;line-height:1.4}.upload-remove-btn,.upload-queue-remove{border:1px solid rgba(223,0,0,.28);background:#df000014;color:var(--color-error-text);border-radius:10px;cursor:pointer;transition:border-color .15s ease,background .15s ease}.upload-remove-btn{padding:9px 14px;font-weight:700}.upload-remove-btn:hover,.upload-queue-remove:hover{border-color:#df00008c;background:#df000024}.upload-queue-header{display:flex;justify-content:space-between;align-items:center}.upload-queue-list{display:flex;flex-direction:column;gap:10px}.upload-queue-item{display:flex;align-items:center;gap:10px;border:1px solid var(--color-card-border);border-radius:12px;background:#ffffff05}.upload-queue-item-active{border-color:var(--color-accent);background:#df000014}.upload-queue-select{flex:1;display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;background:transparent;color:inherit;text-align:left;cursor:pointer}.upload-queue-thumb{width:54px;height:54px;border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#ffffff0f;border:1px solid rgba(255,255,255,.08)}.upload-queue-thumb-image{width:100%;height:100%;object-fit:cover}.upload-queue-thumb-fallback{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--color-text-muted)}.upload-queue-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.upload-queue-name{color:var(--color-text);font-size:13.5px;font-weight:700;word-break:break-word;line-height:1.4}.upload-queue-meta,.upload-stage-details,.upload-sidebar-copy,.upload-issue-copy{font-size:12.5px;line-height:1.55}.upload-queue-remove{width:34px;height:34px;margin-right:10px;padding:0;font-size:18px;line-height:1}.upload-sidebar{display:flex;flex-direction:column;gap:14px;padding:22px 20px;background:#ffffff08}.upload-sidebar-copy{margin:0}.upload-sidebar-stats{margin-top:auto;display:flex;flex-direction:column;gap:6px}.upload-sidebar .primary-btn{width:100%;text-align:center}.upload-issue-list{list-style:none;display:flex;flex-direction:column;gap:10px;margin:0;padding:0}.upload-issue{display:flex;flex-direction:column;gap:4px;border-radius:12px;padding:10px 12px}.upload-issue-format,.upload-issue-size,.upload-issue-limit{border:1px solid rgba(223,0,0,.24);background:#df000014}@media(max-width:940px){.upload-workspace{grid-template-columns:1fr}.upload-stage{border-right:none;border-bottom:1px solid var(--color-card-border)}}@media(max-width:640px){.upload-stage,.upload-sidebar{padding:18px}.upload-stage-card,.upload-stage-empty{min-height:280px}.upload-stage-meta{flex-direction:column}.upload-remove-btn{width:100%}}
