:root{--fg: #1c2733;--muted: #5b6b7a;--line: #d8e0e8;--bg: #f7f9fb;--surface: #ffffff;--accent: #2f6fb0;font-family:system-ui,-apple-system,Segoe UI,Hiragino Kaku Gothic ProN,Meiryo,sans-serif;color:var(--fg)}*,*:before,*:after{box-sizing:border-box}html{overflow-x:clip}body{margin:0;background:var(--bg);line-height:1.6;overflow-x:clip}button,input{font:inherit}button:focus-visible,input:focus-visible,[tabindex="0"]:focus-visible{outline:3px solid #1d70b8;outline-offset:2px}.app{max-width:960px;margin:0 auto;padding:16px;min-width:0;min-height:100dvh}.app :where(section,article,div,form,nav,header,main,ul,li,dl,dt,dd,figure){min-width:0}.app :where(code,pre,p,li,dd,td,th,.artifact__meta-val,.snapshots__cap-text,.snapshots__cap-meta){overflow-wrap:anywhere;word-break:break-word}.app__topbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.app__topbar h1{font-size:1.25rem;margin:0}.app__ro-badge{font-size:.75rem;background:#eef4fa;color:var(--accent);border:1px solid var(--line);border-radius:999px;padding:2px 10px}.app__mode{margin-left:auto;display:flex;gap:12px;font-size:.9rem}.app__content{min-width:0}.viewer-auth{min-height:100dvh;display:grid;place-items:center;padding:16px}.viewer-auth__card{width:min(100%,640px);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:24px}.viewer-auth__card h1{margin:0 0 8px}.viewer-auth__signin{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.viewer-auth__settings{margin-top:16px}.viewer-auth__settings summary{cursor:pointer;color:var(--accent);font-weight:600}.viewer-auth__form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.viewer-auth__form--prominent{margin-top:20px}.viewer-auth__form .blobbar__hint,.viewer-auth__form-actions{grid-column:1 / -1}.viewer-auth__form label{display:grid;gap:3px;color:var(--muted);font-size:.85rem}.viewer-auth__form input{min-width:0;border:1px solid var(--line);border-radius:6px;padding:6px 8px;color:var(--fg)}.viewer-auth__form-actions{display:flex;gap:6px;flex-wrap:wrap}.viewer-auth__session{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto;font-size:.85rem;min-width:0}.viewer-auth__session>span{overflow-wrap:anywhere}.viewer-auth__settings--compact{margin:0}.viewer-auth__settings--compact .viewer-auth__form{width:min(100%,560px);padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.apk-downloads__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.apk-downloads__head h2,.apk-downloads__head p,.apk-downloads__history h3{margin:0}.apk-downloads__head p{color:var(--muted);font-size:.85rem}.apk-downloads__group{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin-bottom:10px;overflow:clip}.apk-downloads__latest,.apk-downloads__history-row{display:grid;grid-template-columns:minmax(10rem,1.5fr) minmax(10rem,1fr) minmax(9rem,auto) auto;align-items:center;gap:12px;padding:12px}.apk-downloads__latest>div:not(.apk-downloads__app):not(.apk-downloads__download){display:grid;gap:2px;min-width:0}.apk-downloads__latest span{color:var(--muted);font-size:.75rem}.apk-downloads__app,.apk-downloads time,.apk-downloads code,.apk-downloads__download{min-width:0;overflow-wrap:anywhere;word-break:break-word}.apk-downloads__download{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.apk-downloads__history{border-top:1px solid var(--line);background:#fafcff;padding:12px}.apk-downloads__history h3{font-size:.9rem;margin-bottom:6px}.apk-downloads__history-row{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(9rem,auto);border-top:1px solid var(--line);padding-inline:0}@media (max-width: 620px){.viewer-auth__card{padding:16px}.viewer-auth__form{grid-template-columns:minmax(0,1fr)}.apk-downloads__latest,.apk-downloads__history-row{grid-template-columns:minmax(0,1fr);gap:8px}.apk-downloads__latest>button,.apk-downloads__download{justify-self:start}}.app__github-config{margin-top:12px;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.repobar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.repobar input{min-width:0;padding:6px 8px;border:1px solid var(--line);border-radius:6px}.patgate{font-size:.9rem}.patgate__hint{color:var(--muted);font-size:.8rem;margin:4px 0}.patgate__row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.patgate--set{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.patgate__row input{min-width:0;flex:1;padding:6px 8px;border:1px solid var(--line);border-radius:6px}button{padding:6px 12px;border:1px solid var(--line);background:var(--surface);border-radius:6px;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.app__warn{color:#b4531f;font-size:.85rem}.app__tabs{display:flex;gap:6px;align-items:center;margin:16px 0;border-bottom:1px solid var(--line);padding-bottom:8px}.app__tabs button{min-width:0}.app__tabs button.is-active{border-color:var(--accent);color:var(--accent);font-weight:600}.app__status{color:var(--muted)}.artifact{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:20px}.artifact__header h2{margin:0 0 8px;font-size:1.1rem}.artifact__meta{list-style:none;display:flex;gap:12px;flex-wrap:wrap;padding:0;margin:0 0 8px;font-size:.8rem;color:var(--muted)}.artifact__meta-key{font-weight:600;margin-right:4px}.artifact__section{margin-top:16px}.artifact__section h3{font-size:.95rem;border-left:3px solid var(--accent);padding-left:8px;margin:0 0 8px}.artifact__note{font-size:.75rem;color:var(--muted);margin:0 0 8px}.block{margin:8px 0}.block__label{display:inline-block;margin-bottom:2px}.block--table table{border-collapse:collapse;width:100%;font-size:.85rem}.table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;margin:8px 0}.table-scroll table{min-width:560px}.block--table .table-scroll{margin:0}.block--table th,.block--table td{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}.block--table th{background:#f0f4f8}.block--kv dl{margin:0}.block__kv-row{display:flex;gap:8px;border-bottom:1px solid var(--line);padding:4px 0}.block__kv-row dt{min-width:140px;font-weight:600;color:var(--muted)}.block__kv-row dd{margin:0;min-width:0}.block--group{border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:10px 0}.block__group-label{margin:0 0 6px;font-size:.9rem}.block--image img{max-width:min(100%,320px);height:auto;border:1px solid var(--line);border-radius:6px}.block__image-placeholder{font-size:.8rem;color:var(--muted);border:1px dashed var(--line);border-radius:6px;padding:16px}.block--image figcaption{font-size:.75rem;color:var(--muted)}.blobbar{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:16px}.blobbar__hint{color:var(--muted);font-size:.8rem;margin:0 0 8px}.blobbar__row{display:flex;gap:6px;flex-wrap:wrap}.blobbar__row input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;min-width:0;flex:1}.snapshots__meta{list-style:none;display:flex;gap:12px;flex-wrap:wrap;padding:0;margin:0 0 12px;font-size:.8rem;color:var(--muted)}.snapshots__meta-key{font-weight:600;margin-right:4px}.snapshots__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.snapshots__card{margin:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden;display:flex;flex-direction:column}.snapshots__img{width:100%;height:auto;display:block;background:var(--bg)}.snapshots__placeholder{font-size:.8rem;color:var(--muted);border-bottom:1px dashed var(--line);padding:24px 12px;text-align:center;aspect-ratio:1 / 2;display:flex;align-items:center;justify-content:center}.snapshots__caption{padding:8px 10px;font-size:.8rem;display:flex;flex-direction:column;gap:2px}.snapshots__cap-text{color:var(--fg)}.snapshots__cap-meta{color:var(--muted);font-size:.72rem}.devicelab__bar{margin-bottom:16px}.devicelab__section{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin-bottom:16px}.devicelab__section-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.devicelab__section-title{font-size:1rem;margin:0;border-left:3px solid var(--accent);padding-left:8px}.devicelab__section-head button{margin-left:auto;font-size:.8rem}.devicelab__subtitle{font-size:.9rem;margin:12px 0 6px;color:var(--muted)}.devicelab__dl{margin:0 0 8px}.devicelab__dl-row{display:flex;gap:8px;border-bottom:1px solid var(--line);padding:4px 0}.devicelab__dl-row dt{min-width:140px;font-weight:600;color:var(--muted)}.devicelab__dl-row dd{margin:0;min-width:0;word-break:break-all}.devicelab__table{border-collapse:collapse;width:100%;font-size:.82rem;margin:0}.devicelab__table th,.devicelab__table td{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}.devicelab__table th{background:#f0f4f8}.devicelab__jobform{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.devicelab__jobform input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;min-width:0;flex:1}.devicelab__error{color:#a12626;background:#fdeeee;border:1px solid #f0c9c9;border-radius:6px;padding:8px 10px;font-size:.85rem;margin:8px 0}.devicelab__logtail{background:#1c2733;color:#e6edf3;border-radius:6px;padding:10px 12px;font-size:.78rem;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.devicelab__artifacts{margin-top:12px}.devicelab__artifact{border:1px solid var(--line);border-radius:6px;padding:8px;margin:8px 0}.devicelab__artifact-meta{display:flex;gap:8px;justify-content:space-between;flex-wrap:wrap;font-size:.8rem}.devicelab__artifact-meta span,.devicelab__artifact-status{color:var(--muted)}.devicelab__artifact-preview{display:block;max-width:min(100%,640px);max-height:480px;object-fit:contain;margin-top:8px;border:1px solid var(--line);border-radius:4px}@media (max-width: 640px){.app{padding:10px}.app__topbar{gap:8px}.app__github-config,.blobbar,.devicelab__section,.artifact{padding:10px;border-radius:6px}.app__tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border-bottom:0;margin:12px 0;padding-bottom:0}.app__tabs button{width:100%;padding-inline:4px;white-space:nowrap}.repobar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center}.repobar input:nth-of-type(3){grid-column:1 / -1}.repobar button{grid-column:span 1}.blobbar__row,.patgate__row,.devicelab__jobform{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.blobbar__row input,.patgate__row input,.devicelab__jobform input{grid-column:1 / -1;width:100%}.devicelab__section-head{align-items:flex-start}.devicelab__section-head button{margin-left:auto}.block__kv-row,.devicelab__dl-row{display:block}.block__kv-row dt,.devicelab__dl-row dt{min-width:0;margin-bottom:2px}.artifact__meta,.snapshots__meta{display:block}.artifact__meta li,.snapshots__meta li{margin:2px 0}.snapshots__grid{grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:10px}}@media (max-width: 380px){.app__topbar{align-items:flex-start;flex-direction:column;gap:4px}.app__topbar h1{font-size:1.1rem}.repobar{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:6px}.blobbar__row,.patgate__row,.devicelab__jobform{grid-template-columns:1fr}}@media (max-width: 640px),(pointer: coarse){button,input{min-height:44px}input{font-size:16px}}.devicelab__artifact-status{margin-left:8px;font-size:.8rem}.devicelab__badge{display:inline-block;font-size:.75rem;font-weight:600;border-radius:999px;padding:2px 10px;border:1px solid var(--line);background:#eef4fa;color:var(--accent)}.devicelab__badge--health-ok,.devicelab__badge--job-succeeded,.devicelab__badge--job-passed{background:#e7f6ec;color:#1f7a3d;border-color:#bfe6cc}.devicelab__badge--health-degraded,.devicelab__badge--job-failed,.devicelab__badge--job-error{background:#fdeeee;color:#a12626;border-color:#f0c9c9}.devicelab__badge--job-running{background:#eef4fa;color:var(--accent);border-color:#c7ddf0}.devicelab__badge--job-queued,.devicelab__badge--job-pending,.devicelab__badge--job-skipped,.devicelab__badge--job-cancelled{background:#f1f3f5;color:var(--muted);border-color:var(--line)}
