:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d1117;--panel:#161b22;--border:#30363d;--text:#e6edf3;--muted:#8b949e;--accent:#2f81f7}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Segoe UI,Hiragino Sans,Noto Sans JP,sans-serif}a{color:var(--accent);text-decoration:none}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:.5rem 1rem;font-size:.9rem}button:disabled{opacity:.5;cursor:default}input[type=email],input[type=text]{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:6px;width:18rem;max-width:100%;padding:.5rem .75rem;font-size:1rem}.app-header{border-bottom:1px solid var(--border);background:var(--panel);justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.app-title{color:var(--text);font-size:1.1rem;font-weight:700}.app-header nav{align-items:center;gap:1rem;display:flex}.me{color:var(--muted);font-size:.85rem}.login-page{max-width:26rem;margin:12vh auto;padding:0 1.5rem}.login-page form{flex-wrap:wrap;gap:.5rem;display:flex}.dev-link{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:.75rem 1rem}.error{color:#f85149}.notice{color:#3fb950}.warning{border-left:3px solid #7a5b16;margin:0 0 1rem;padding:.5rem 1rem}.warning ul{margin:.5rem 0;padding-left:1.2rem}.warning p{color:var(--muted);margin:.5rem 0 0}.page-hint{color:var(--muted);padding:2rem 1.5rem}.gallery{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;padding:1.5rem;display:grid}.thumb{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:10px;transition:border-color .15s;display:block;overflow:hidden}.thumb:hover{border-color:var(--accent)}.thumb-poster{aspect-ratio:16/9;object-fit:cover;justify-content:center;align-items:center;width:100%;display:flex}.thumb-placeholder{color:var(--muted);background:linear-gradient(135deg,#1f2a44 0%,#3a1f44 55%,#44301f 100%);font-size:2.5rem;font-weight:700}.thumb-meta{justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem .8rem;display:flex}.thumb-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.thumb-submeta{color:var(--muted);align-items:center;gap:.5rem;padding:0 .8rem .6rem;font-size:.72rem;display:flex}.thumb-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.thumb-time{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.thumb-duplicate{color:#fff;white-space:nowrap;background:#7a3b16;border-radius:999px;margin-left:auto;padding:.1rem .5rem}.item-id{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.item-device{color:var(--muted);margin-left:.6rem;font-size:.8rem}.badge{white-space:nowrap;border-radius:999px;padding:.15rem .6rem;font-size:.72rem}.badge-ready{background:#1f6f43}.badge-processing{background:#7a5b16}.badge-uploaded{background:#2c4f7a}.badge-failed{background:#8a2a2a}.badge-qc-pass{background:#1f6f43}.badge-qc-warning,.badge-qc-unknown{background:#7a5b16}.badge-qc-fail{background:#8a2a2a}.qc-line{margin:0 0 1rem}.item-page{padding:1.5rem}.upload-page{max-width:42rem;margin:0 auto;padding:1.5rem}.field{color:var(--muted);margin:1rem 0;font-size:.9rem;display:block}.field input{width:100%;margin-top:.35rem;display:block}.dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;color:var(--muted);border-radius:10px;padding:3rem 1.5rem}.dropzone-active{border-color:var(--accent);color:var(--text)}.dropzone-hint{font-size:.8rem}.upload-list{flex-direction:column;gap:.5rem;margin:1.5rem 0;padding:0;list-style:none;display:flex}.upload-list li{background:var(--panel);border:1px solid var(--border);border-radius:8px;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;padding:.5rem .8rem;display:grid}.upload-path{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,monospace;font-size:.85rem;overflow:hidden}.upload-status{color:var(--muted);font-size:.8rem}.device-page{max-width:42rem;margin:0 auto;padding:1.5rem}.device-notes{color:var(--muted);flex-direction:column;gap:.35rem;margin-bottom:1.25rem;padding-left:1.2rem;font-size:.9rem;display:flex}.device-token{margin-top:1.5rem}.token-box{background:var(--panel);border:1px solid var(--border);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:8px;padding:.75rem 1rem;font-family:ui-monospace,monospace;font-size:.8rem;display:block}.device-qr-help{color:var(--muted);margin:.35rem 0 .75rem;font-size:.9rem}.qr-code{border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;max-width:18rem;height:auto;display:block}.device-qr-endpoint{color:var(--muted);word-break:break-all;margin:.75rem 0 0;font-size:.85rem}.device-token-actions{align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.device-expiry{color:var(--muted);font-size:.85rem}.device-issue{flex-direction:column;gap:.4rem;margin-bottom:1.25rem;display:flex}.device-issue label{color:var(--muted);font-size:.85rem}.device-issue input{font:inherit;padding:.5rem}.device-issue button{align-self:flex-start}.device-ledger{margin-top:2rem}.device-table{border-collapse:collapse;width:100%;font-size:.85rem}.device-table th,.device-table td{text-align:left;border-bottom:1px solid var(--border,#ddd);vertical-align:middle;padding:.4rem .5rem}.device-table th{color:var(--muted);font-weight:500}.device-row-revoked{opacity:.55}.item-actions{align-items:center;gap:.75rem;margin:1rem 0;display:flex}.button-danger{background:#8a2a2a}.stage-timeline{flex-direction:column;gap:.35rem;max-width:44rem;margin:1rem 0;padding:0;list-style:none;display:flex}.stage{background:var(--panel);border:1px solid var(--border);border-radius:8px;grid-template-columns:1.4rem 11rem 6rem 4.5rem 1fr;align-items:baseline;gap:.5rem;padding:.45rem .8rem;font-size:.9rem;display:grid}.stage-name{font-family:ui-monospace,monospace}.stage-status,.stage-duration{color:var(--muted);font-size:.8rem}.stage-running .stage-icon{color:var(--accent)}.stage-succeeded .stage-icon{color:#3fb950}.stage-failed .stage-icon,.stage-failed .stage-status{color:#f85149}.stage-skipped,.stage-canceled{opacity:.55}.log-toggle{border:1px solid var(--border);color:var(--muted);background:0 0;padding:.1rem .5rem;font-size:.75rem}.stage-log{white-space:pre-wrap;word-break:break-all;background:#010409;border-radius:6px;grid-column:1/-1;max-height:16rem;padding:.6rem;font-size:.72rem;overflow:auto}.stage-extra{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.button{background:var(--accent);color:#fff;border-radius:6px;padding:.5rem 1rem;display:inline-block}
