*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#121212;color:#eee;font-family:Arial,Noto Sans TC,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}.top-nav{position:relative;z-index:15;display:inline-block}.app-toolbar{width:90vw;height:0;margin:0 auto;overflow:visible;display:flex;justify-content:flex-end;pointer-events:none}.top-nav-trigger{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-height:1.9rem;color:#cfcfcf;background:#141414e6;border:1px solid #3a3a3a;padding:.35rem .62rem;border-radius:4px;font-size:.82rem;font-weight:700;line-height:1;margin-top:.45rem;cursor:pointer}.top-nav-trigger--icon{gap:0;width:1.9rem;min-width:1.9rem;padding:.35rem}.top-nav-trigger:hover,.top-nav-menu a:hover{background:#3f3f3f}.top-nav-trigger.open{color:#ffc107;border-color:#5a5a5a}.top-nav-menu{pointer-events:auto;position:absolute;top:calc(100% + .3rem);right:0;width:min(16.5rem,72vw);display:grid;gap:.3rem;padding:.5rem;background:#1c1c1c;border:1px solid #383838;border-radius:6px;box-shadow:0 .7rem 1.6rem #0006}.top-nav-menu a{display:inline-flex;align-items:center;min-height:2rem;justify-content:flex-start;color:#cfcfcf;background:#2b2b2b;border:1px solid #454545;text-decoration:none;padding:.4rem .6rem;border-radius:4px;font-size:.86rem;line-height:1}.top-nav-menu a.active{background:#3a3a3a;border-color:#545454;color:#ffc107}.top-nav-logout{display:inline-flex;align-items:center;gap:.35rem;min-height:2rem;justify-content:flex-start;color:#cfcfcf;background:#2b2b2b;border:1px solid #454545;padding:.4rem .6rem;border-radius:4px;font-size:.86rem;line-height:1;cursor:pointer;font-family:inherit}.top-nav-logout:hover{background:#353535;border-color:#5a5a5a}.top-nav-caption{margin:0 0 .15rem;font-size:.75rem;color:#a4a4a4}.top-nav-qr{border-top:1px solid #333333;margin-top:.2rem;padding-top:.5rem}.top-nav-qr p{margin:0 0 .35rem;font-size:.8rem;color:#c8c8c8}.top-nav-qr img{width:100%;max-width:11rem;display:block;margin:0 auto .4rem;border:1px solid #333333;border-radius:4px;background:#fff}.top-nav-qr-loading{min-height:11rem;display:flex;align-items:center;justify-content:center;font-size:.8rem;color:#a5a5a5;border:1px dashed #444444;border-radius:4px;margin-bottom:.35rem}.top-nav-qr a{display:block;min-height:0;background:transparent;border:0;padding:0;color:#8eb9ff;text-decoration:none;font-size:.76rem;line-height:1.3;word-break:break-all}.top-nav-qr a:hover{text-decoration:underline}.top-nav-mode{border-top:1px solid #333333;margin-top:.2rem;padding-top:.5rem}.top-nav-mode p{margin:0 0 .35rem;font-size:.8rem;color:#c8c8c8}.top-nav-mode-buttons{display:flex;gap:.3rem}.top-nav-mode-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;min-height:2rem;padding:.35rem .5rem;background:#2b2b2b;border:1px solid #454545;border-radius:4px;color:#cfcfcf;font-size:.86rem;font-weight:700;font-family:inherit;line-height:1;cursor:pointer}.top-nav-mode-btn:hover{background:#353535;border-color:#5a5a5a}.top-nav-mode-btn.active{background:#3a3a3a;border-color:#5a5a5a;color:#ffc107}.two-pane-shell,.admin-page{position:relative;display:flex;width:90vw;height:90vh;margin:5vh auto;overflow:hidden;background:#1e1e1e;border-radius:8px}.photo-pane{flex:0 0 65%;min-width:0;min-height:0;background:#222;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:.4rem}.photo-pane img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;transform-origin:center;transition:transform .16s ease}.photo-pane__cover{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;width:100%;height:100%;padding:1rem;text-align:center}.photo-pane__cover img{width:min(60%,24rem);height:auto;aspect-ratio:1;background:#fff;border-radius:6px;padding:.6rem}.photo-pane__cover-caption{color:#ffc107;font-weight:700;letter-spacing:.16em;font-size:.95rem}.photo-pane__cover-url{color:#cfcfcf;font-size:.95rem;word-break:break-all;max-width:90%;text-decoration:none}.photo-pane__cover-url:hover{color:#fff;text-decoration:underline}.empty-state{color:#9f9f9f;border:1px solid #3a3a3a;padding:1rem 1.25rem;border-radius:4px}.info-pane{position:relative;flex:1;min-width:18rem;display:flex;flex-direction:column;background:#1e1e1e}.info-scroll{flex:1;overflow-y:auto;padding:1rem 1rem 4.6rem;display:flex;flex-direction:column}.info-scroll>.exif-table{margin-top:auto}.info-pane--with-footer .info-scroll{padding-bottom:calc(4.6rem + var(--info-footer-height, 0px))}.info-footer{position:absolute;left:0;right:0;bottom:4.6rem;z-index:4;background:#1e1e1e;border-top:1px solid #333333;padding:.55rem 1rem .65rem;max-height:60%;overflow-y:auto}.photo-details{margin-bottom:1rem}.photo-details.compact{margin-bottom:.5rem}.photo-details h1,.admin-photo-panel h1{margin:.35rem 0 .2rem;font-size:1.45rem;line-height:1.2;letter-spacing:0}.photo-details small{display:block;color:#aaa;font-size:.9rem;margin-bottom:.55rem}.photo-details p,.admin-photo-panel p{margin:0;line-height:1.45;white-space:pre-wrap}.meta-line{color:#aaa;font-size:.86rem}.mode-banner{display:inline-block;color:#ffc107;background:#3a3a3a;font-weight:700;border-radius:4px;padding:.35rem .75rem;margin:.2rem 0 .65rem}.submitted-scores{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .85rem;min-height:1.65rem;width:100%;margin:.35rem 0 .55rem;padding:.35rem .75rem;border:0;border-radius:4px;background:#3a3a3a;color:#ffc107;font-weight:700;line-height:1.3;font:inherit;text-align:left;cursor:pointer}.submitted-scores:focus-visible{outline:2px solid #ffca28;outline-offset:2px}.submitted-scores:hover:not(:disabled){background:#454545}.submitted-scores:disabled{opacity:1;cursor:default}.submitted-scores--empty{background:#3a3a3a;color:#ffc107}.submitted-scores__mode{color:#ffc107;font-weight:700;letter-spacing:.04em}.submitted-scores__sep{margin:0 .2rem;color:#ffffff8c}.submitted-scores__chip{display:inline-flex;align-items:baseline;gap:.25rem;color:#fff}.submitted-scores__label{color:#f5d27a;font-size:.78rem;letter-spacing:.04em}.submitted-scores__sublabel{color:#f5d27a;font-size:.78rem}.submitted-scores__value{font-size:.98rem;font-variant-numeric:tabular-nums;color:#fff}.mode-banner--scores{display:flex}.score-flash{position:fixed;top:4.5rem;left:50%;z-index:50;pointer-events:none;width:max-content;max-width:min(22rem,calc(100vw - 1.5rem));background:#6a4b11f5;color:#fff;padding:.75rem 1.1rem;border-radius:6px;box-shadow:0 6px 18px #00000073;opacity:0;transform:translate(-50%,-8px);transition:opacity .28s ease,transform .28s ease}.score-flash.show{opacity:1;transform:translate(-50%)}.score-flash__title{text-align:center;font-weight:700;font-size:.95rem;letter-spacing:.04em;padding-bottom:.3rem;margin-bottom:.45rem;border-bottom:1px solid rgba(255,255,255,.22)}.score-flash__grid{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:1rem;row-gap:.3rem}.score-flash__row{display:contents}.score-flash__name{font-weight:600;color:#f5d27a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.score-flash__values{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;font-size:1.1rem}.score-detail-backdrop{position:fixed;inset:0;z-index:60;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:1rem}.score-detail{width:min(26rem,100%);max-height:80vh;overflow-y:auto;background:#1e1e1e;color:#eee;border:1px solid #3a3a3a;border-radius:8px;box-shadow:0 12px 32px #0000008c}.score-detail--wide{width:min(48rem,100%);max-height:85vh}.score-detail__head{display:flex;align-items:baseline;gap:.6rem;padding:.85rem 1rem .55rem;border-bottom:1px solid #2f2f2f}.score-detail__title{font-weight:700;font-size:1.05rem}.score-detail__base{font-size:.82rem;color:#aaa}.score-detail__close{margin-left:auto;background:transparent;border:0;color:#cfcfcf;font-size:1.4rem;line-height:1;padding:.1rem .45rem;border-radius:4px}.score-detail__close:hover{background:#2f2f2f}.score-detail__body{padding:.75rem 1rem 1rem}.score-detail__empty{margin:0;color:#aaa;text-align:center}.score-detail__initial{display:flex;align-items:baseline;justify-content:center;gap:1rem;padding:.6rem .5rem}.score-detail__initial-label{color:#f5d27a;font-weight:600}.score-detail__initial-value{font-size:1.6rem;font-variant-numeric:tabular-nums}.score-detail__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;row-gap:.5rem;column-gap:1rem}.score-detail__list li{display:contents}.score-detail__judge{font-weight:600;color:#f5d27a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.score-detail__values{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right;font-size:1.05rem}.score-detail__sep{color:#ffffff73}.score-detail__table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.score-detail__table th,.score-detail__table td{padding:.4rem .5rem;border-bottom:1px solid #2f2f2f;text-align:center}.score-detail__table th{font-size:.82rem;color:#f5d27a;font-weight:600;letter-spacing:.04em}.score-detail__table td:first-child,.score-detail__table th:first-child{text-align:left}.score-detail__table tbody tr:last-child td{border-bottom:0}.exif-table,.import-table{width:100%;table-layout:fixed;border-collapse:collapse;margin-bottom:.8rem}.exif-table td,.import-table td{padding:.42rem;border-bottom:1px solid #333333;font-size:.9rem;vertical-align:top}.exif-table td:first-child{width:40%;color:#cfcfcf;padding-right:.5rem}.exif-table td:last-child{width:60%;color:#eee;padding-left:.5rem;word-break:break-word}.nav-controls{position:absolute;left:0;bottom:0;z-index:10;width:100%;display:grid;grid-template-columns:3.25rem minmax(4.5rem,1fr) 3.25rem 3.25rem;gap:.55rem;padding:.55rem 1rem;background:#1e1e1e;border-top:1px solid #333333}.nav-controls>button,.nav-controls input,.admin-actions button,.submit-btn{min-height:2.55rem;color:#eee;background:#3a3a3a;border:0;border-radius:4px}.nav-controls>button{display:inline-flex;align-items:center;justify-content:center}.nav-controls input{width:100%;min-width:0;text-align:center;padding:0 .55rem}.nav-controls>button:hover:not(:disabled),.nav-controls input:focus,.admin-actions button:hover:not(:disabled){background:#555;outline:none}.nav-jump{position:relative;min-width:0;display:flex}.nav-jump-suggestions{position:absolute;left:0;right:0;bottom:calc(100% + .4rem);margin:0;padding:.25rem;list-style:none;background:#1e1e1e;border:1px solid #333333;border-radius:4px;max-height:12rem;overflow-y:auto;z-index:11;box-shadow:0 6px 18px #00000073}.nav-jump-suggestions li{margin:0}.nav-jump-suggestions button{width:100%;border:0;background:transparent;color:#eee;padding:.4rem .6rem;text-align:center;cursor:pointer;font:inherit;border-radius:3px}.nav-jump-suggestions button.active,.nav-jump-suggestions button:hover{background:#3a3a3a}.score-panel{margin-top:1rem;text-align:center}.info-footer .score-panel{margin-top:0}.info-footer .score-panel h2{margin:0 0 .45rem;font-size:.95rem}.info-footer .score-options{gap:.4rem;margin:.45rem 0 .55rem}.info-footer .tab-bar{margin:0 0 .4rem}.score-panel h2,.dryrun-panel h2{margin:0 0 .8rem;font-size:1.1rem}.score-options{display:grid;gap:.65rem;margin:1rem 0}.score-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.45rem}.score-row>span{width:4.25rem;color:#d8d8d8;text-align:right}.score-btn input{display:none}.score-btn span{display:inline-flex;align-items:center;justify-content:center;min-width:3.6rem;min-height:2.35rem;padding:.45rem .8rem;border:2px solid #555555;border-radius:4px;-webkit-user-select:none;user-select:none}.score-btn input:checked+span{color:#121212;background:#ffca28;border-color:#ffca28}.submit-btn{display:inline-flex;align-items:center;justify-content:center;min-width:5rem;color:#121212;background:#ffca28}.submit-btn:hover{background:#d8a40d}.tab-bar{display:flex;justify-content:center;gap:.45rem;margin:.5rem 0}.tab-bar button{min-height:2.15rem;padding:.25rem .9rem;color:#eee;background:#1e1e1e;border:1px solid #555555;border-radius:4px;font-weight:700}.tab-bar button.active{color:#121212;background:#ffca28;border-color:#ffca28}.system-note{color:#cfcfcf;background:#272727;border-radius:4px;padding:.65rem .75rem}.system-note.error{color:#ffd7d7;background:#4a2020}.admin-photo-panel{flex:0 0 45%;display:flex;align-items:flex-end;padding:2rem;background:linear-gradient(180deg,#22222240,#121212f5),#222}.admin-controls{flex:1;min-width:0;overflow-y:auto;padding:4.2rem 1.2rem 1.2rem}.admin-block+.admin-block{border-top:1px solid #333333;margin-top:1rem;padding-top:1rem}.admin-block h2{margin:0 0 .8rem;font-size:1.06rem}.judge-editor{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.55rem;margin-bottom:.75rem}.judge-editor input{min-height:2.4rem;color:#eee;background:#252525;border:1px solid #444444;border-radius:4px;padding:0 .7rem}.judge-editor button{min-height:2.4rem;display:inline-flex;align-items:center;gap:.35rem;padding:0 .8rem;color:#eee;background:#3a3a3a;border:0;border-radius:4px}.judge-list{list-style:none;margin:0 0 1rem;padding:0;display:grid;gap:.35rem}.judge-list li{min-height:2.2rem;display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:.45rem;background:#252525;border-radius:4px;padding:.45rem .6rem}.drag-handle{color:#8e8e8e;cursor:grab}.judge-order{width:1.4rem;color:#bdbdbd;font-variant-numeric:tabular-nums}.judge-list li input{min-width:0;min-height:2rem;color:#eee;background:#1e1e1e;border:1px solid #3f3f3f;border-radius:4px;padding:0 .55rem}.judge-list li button{min-height:1.9rem;min-width:1.9rem;display:inline-flex;align-items:center;justify-content:center;color:#eee;background:#3a3a3a;border:0;border-radius:4px}.judge-list .empty-row{justify-content:center;color:#ababab}.field-label{display:grid;gap:.45rem;color:#cfcfcf;margin-bottom:.9rem}.field-label input{min-height:2.5rem;color:#eee;background:#252525;border:1px solid #444444;border-radius:4px;padding:0 .75rem}.file-drop{position:relative;min-height:7rem;display:flex;align-items:center;justify-content:center;gap:.65rem;color:#dcdcdc;background:#252525;border:1px dashed #666666;border-radius:6px;margin-bottom:1rem;transition:border-color .12s ease,background-color .12s ease}.file-drop.is-drag{border-color:#8ab4f8;background:#2c3340;color:#fff}.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.admin-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}.admin-actions button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-width:7rem;padding:0 .85rem}.admin-link-btn{min-height:2.55rem;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-width:7rem;padding:0 .85rem;color:#eee;background:#3a3a3a;border-radius:4px;text-decoration:none}.admin-link-btn:hover{background:#555}.ordering-control{display:flex;flex-direction:column;gap:.6rem}.ordering-segmented{display:inline-flex;gap:.3rem;align-self:flex-start}.ordering-segmented__btn{min-width:4.5rem;min-height:2rem;padding:.35rem .85rem;background:#2b2b2b;border:1px solid #454545;border-radius:4px;color:#cfcfcf;cursor:pointer}.ordering-segmented__btn:hover:not(:disabled){background:#353535;border-color:#5a5a5a}.ordering-segmented__btn.active{background:#3a3a3a;border-color:#5a5a5a;color:#ffc107}.ordering-segmented__btn:disabled{opacity:.5;cursor:not-allowed}.ordering-help{font-size:.85rem;line-height:1.4}.sheet-config-status{display:grid;gap:.45rem}.sheet-config-status .system-note{margin:0}.sheet-setup-guide{margin:.4rem 0 0;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:#ffffff05}.sheet-setup-guide summary{cursor:pointer;font-weight:600}.sheet-setup-guide ol{margin:.55rem 0 0;padding-left:1.25rem;display:grid;gap:.35rem}.rule-config-grid{display:grid;gap:.55rem;margin-bottom:.85rem}.rule-config-row{display:grid;grid-template-columns:9rem minmax(0,1fr);align-items:center;gap:.6rem;color:#d8d8d8;font-size:.92rem}.rule-config-input{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:wrap}.rule-config-input input[type=number]{width:6rem;min-height:2.2rem;color:#eee;background:#252525;border:1px solid #444444;border-radius:4px;padding:0 .55rem}.rule-config-input input[type=number]:disabled{opacity:.5}.rule-config-input input[type=checkbox]{width:1rem;height:1rem;margin:0;accent-color:#ffca28}.rule-config-input__hint{color:#aaa;font-size:.85rem}.dryrun-panel,.progress-panel{border-top:1px solid #333333;padding-top:1rem;margin-top:1rem}.import-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:.45rem;width:100%;margin-bottom:1rem}.import-stats span{background:#252525;border-radius:4px;padding:.55rem;text-align:center;color:#d8d8d8}.dryrun-summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:.35rem .85rem;width:100%;margin:0 0 1rem;padding:.55rem .75rem;color:#eee;background:#252525;border:1px solid #3a3a3a;border-radius:4px;font:inherit;text-align:center;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.dryrun-summary:hover:not(:disabled){background:#2f2f2f;border-color:#4a4a4a}.dryrun-summary:focus-visible{outline:2px solid #ffca28;outline-offset:2px}.dryrun-summary__chip{display:inline-flex;align-items:baseline;gap:.35rem}.dryrun-summary__chip--error .dryrun-summary__value{color:#ef9a9a}.dryrun-summary__label{color:#aaa;font-size:.85rem;letter-spacing:.04em}.dryrun-summary__value{font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums}.dryrun-summary__sep{color:#ffffff59}.message-list{margin-bottom:1rem;padding:.6rem .75rem;border-radius:6px;border-left:3px solid #ffca28;background:#ffca2814}.message-list--error{border-left-color:#ef5350;background:#ef53501a}.message-list--warning{border-left-color:#ffca28;background:#ffca2814}.message-list h3{margin:0 0 .4rem;font-size:.95rem;color:#ffca28}.message-list--error h3{color:#ef9a9a}.message-list p{margin:.25rem 0;color:#dcdcdc;font-size:.9rem;line-height:1.45}.dryrun-items h3{margin:.5rem 0 .4rem;font-size:.95rem;color:#d8d8d8}.dryrun-items .import-table th{text-align:left;font-size:.82rem;color:#aaa;font-weight:600;padding:.42rem;border-bottom:1px solid #333333}.progress-meta{margin:0 0 .4rem;font-size:.85rem;color:#999}.progress-head{display:flex;justify-content:space-between;margin-bottom:.45rem}.progress-bar{height:.75rem;overflow:hidden;background:#252525;border-radius:999px}.progress-bar span{display:block;height:100%;background:#ffca28}@media(orientation:portrait){.two-pane-shell,.admin-page{flex-direction:column}.photo-pane{flex:0 0 auto;width:100%;height:55%;padding:0}.two-pane-shell--compact-photo .photo-pane{height:20%;min-height:5rem}.info-pane{min-width:0;min-height:0}.info-footer{max-height:70%}.admin-photo-panel{flex:0 0 auto;min-height:34%}}@media(max-height:520px)and (orientation:landscape){.info-footer{max-height:75%}}@media(max-width:720px){.two-pane-shell,.admin-page{width:100vw;height:100vh;margin:0;border-radius:0}.app-toolbar{width:100vw;margin-top:0;padding:0 .4rem}.top-nav-trigger,.top-nav-menu a{padding:.38rem .45rem;font-size:.82rem}.top-nav-menu{width:min(15rem,82vw)}.import-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.mode-switch-dialog__row{display:flex;flex-direction:column;gap:.55rem}.mode-switch-dialog__row p{margin:0;font-size:.95rem;line-height:1.4;color:#eee}.mode-switch-dialog__row strong{font-size:1.15rem;color:#ffc107;font-variant-numeric:tabular-nums;padding:0 .15rem}.mode-switch-dialog__hint{color:#aaa;font-size:.82rem}.mode-switch-dialog__topn{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.mode-switch-dialog__topn label{font-size:.85rem;color:#c8c8c8}.mode-switch-dialog__topn input{width:5rem;padding:.35rem .5rem;background:#2b2b2b;border:1px solid #454545;border-radius:4px;color:#eee;font-size:.9rem;font-variant-numeric:tabular-nums}.mode-switch-dialog__topn input:focus-visible{outline:1px solid #ffc107;outline-offset:1px}.mode-switch-dialog__error{margin:.6rem 0 0;padding:.45rem .6rem;background:#dc50501f;border:1px solid rgba(220,80,80,.45);border-radius:4px;color:#ffb1b1;font-size:.85rem}.mode-switch-dialog__footer{display:flex;gap:.5rem;padding:.6rem 1rem .85rem;border-top:1px solid #2f2f2f}.mode-switch-dialog__footer .top-nav-mode-btn{flex:1}.mode-switch-dialog__footer .top-nav-mode-btn:disabled{opacity:.5;cursor:not-allowed}
