*{margin:0;padding:0;box-sizing:border-box}html,body{overflow-x:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f9fafb;min-height:100vh;display:flex;flex-direction:column}.navbar{background:#fff;border-bottom:1px solid #f3f4f6;padding:0 16px;height:64px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50}.navbar .logo{font-size:22px;font-weight:700;color:#ea580c;text-decoration:none;cursor:pointer}.navbar .logo span{font-size:13px;color:#9ca3af;font-weight:400;margin-left:6px}.navbar .logo-image{display:block;width:48px;height:48px;object-fit:contain}.login-logo-image{display:block;width:104px;height:104px;object-fit:contain;margin:0 auto}.navbar .right{display:flex;align-items:center;gap:12px;font-size:14px;color:#4b5563}.container{max-width:1024px;margin:0 auto;padding:32px 16px}.card{background:#fff;border-radius:12px;border:1px solid #f3f4f6;padding:24px;box-shadow:0 1px 2px #0000000d}.btn-primary{display:inline-block;padding:8px 16px;background:#ea580c;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.btn-primary:hover{background:#c2410c}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{display:inline-block;padding:8px 16px;background:#e5e7eb;color:#1f2937;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.btn-secondary:hover{background:#d1d5db}.btn-danger{display:inline-block;padding:4px 10px;background:#fee2e2;color:#b91c1c;border:none;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:background .2s}.btn-danger:hover{background:#fecaca}.input-field{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}.input-field:focus{border-color:transparent;box-shadow:0 0 0 2px #f97316}label{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:4px}.text-red{color:#dc2626;font-size:14px}.text-sm{font-size:14px}.text-xs{font-size:12px}.text-gray{color:#6b7280}.text-gray-4{color:#9ca3af}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.grid{display:grid}.hidden{display:none!important}.ml-2{margin-left:8px}.page{display:none}.page.active{display:block}.login-wrapper{min-height:80vh;display:flex;align-items:center;justify-content:center}.login-box{width:100%;max-width:400px}.tab-bar{display:flex;background:#f3f4f6;border-radius:8px;padding:4px;margin-bottom:24px}.tab-bar button{flex:1;padding:8px;font-size:14px;font-weight:500;border:none;border-radius:6px;cursor:pointer;background:transparent;color:#6b7280;transition:all .2s}.tab-bar button.active{background:#fff;color:#111827;box-shadow:0 1px 2px #0000000d}.admin-tabs,.tab-nav{display:flex;gap:24px;border-bottom:1px solid #e5e7eb;margin-bottom:24px}.admin-tabs button,.tab-nav button{padding-bottom:12px;font-size:14px;font-weight:500;border:none;background:none;cursor:pointer;color:#6b7280;border-bottom:2px solid transparent;transition:all .2s}.admin-tabs button.active,.tab-nav button.active{color:#ea580c;border-bottom-color:#ea580c}.game-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.game-btns button{padding:12px;border-radius:8px;font-size:14px;font-weight:600;border:2px solid #d1d5db;background:#fff;color:#4b5563;cursor:pointer;transition:all .2s}.game-btns button.active-mtg{border-color:#3b82f6;background:#eff6ff;color:#1d4ed8}.game-btns button.active-fab{border-color:#f43f5e;background:#fff1f2;color:#be123c}.duration-btns{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.duration-btns button{padding:8px 12px;border-radius:8px;font-size:14px;font-weight:500;border:1px solid #d1d5db;background:#fff;color:#4b5563;cursor:pointer;transition:all .2s}.duration-btns button.active{border-color:#ea580c;background:#fff7ed;color:#c2410c}.duration-btns button:disabled{opacity:.4;cursor:not-allowed}.code-display{display:flex;gap:12px;align-items:center;margin-top:12px}.code-display code{flex:1;padding:12px;background:#fff;border:1px solid #86efac;border-radius:8px;font-size:20px;font-family:monospace;font-weight:700;color:#166534;text-align:center;letter-spacing:4px}.grant-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#f9fafb;border-radius:8px;font-size:14px;margin-bottom:8px}.grant-item code{font-family:monospace;font-weight:700;color:#374151;letter-spacing:1px}.pw-note-btn{font-size:12px;color:#ea580c;background:none;border:none;cursor:pointer;text-decoration:underline;padding:0}.pw-cancel-btn{font-size:12px;color:#b91c1c;background:#fee2e2;border:none;border-radius:6px;padding:3px 10px;cursor:pointer;font-weight:500}.pw-cancel-btn:hover{background:#fecaca}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:9999px;font-size:12px;font-weight:500}.badge-green{background:#dcfce7;color:#15803d}.badge-gray{background:#f3f4f6;color:#6b7280}.badge-blue{background:#dbeafe;color:#1d4ed8}.badge-amber{background:#fef3c7;color:#b45309}.badge-rose{background:#ffe4e6;color:#be123c}.badge-red{background:#fee2e2;color:#b91c1c}.badge-cyan{background:#cffafe;color:#0e7490}.tournament-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.tournament-card{border-radius:12px;border:1px solid #f3f4f6;padding:20px;cursor:pointer;transition:box-shadow .2s;position:relative}.tournament-card:hover{box-shadow:0 4px 6px #00000012}.tournament-card.game-mtg{background:#eff6ff;border-color:#dbeafe}.tournament-card.game-fab{background:#fff1f2;border-color:#ffe4e6}.tournament-card h3{font-size:16px;font-weight:600;color:#111827}.tournament-card .date{font-size:14px;color:#6b7280;margin-top:4px}.tournament-card .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;align-items:center}.tournament-card .tags span.plain{padding:2px 8px;border-radius:9999px;background:#ffffffb3;font-size:12px;color:#4b5563}.tournament-card .lock{display:flex;align-items:center;gap:4px;margin-top:12px;font-size:12px;color:#9ca3af}.tournament-card .delete-btn{position:absolute;top:12px;right:12px}.search-box{position:relative;max-width:400px;margin-bottom:12px}.search-box svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:#9ca3af}.search-box input{padding-left:40px}.filter-tab{padding:6px 16px;border-radius:999px;border:1px solid #e5e7eb;background:#fff;color:#6b7280;font-size:13px;cursor:pointer;transition:all .15s}.filter-tab:hover{border-color:#d1d5db;color:#374151}.filter-tab.active{background:#111827;border-color:#111827;color:#fff}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:384px;margin:0 16px;box-shadow:0 20px 25px #0000001a}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 0;text-align:center}.empty-state .icon{width:64px;height:64px;border-radius:9999px;background:#f3f4f6;display:flex;align-items:center;justify-content:center;margin-bottom:16px}.empty-state .icon svg{width:32px;height:32px;color:#9ca3af}main{flex:1}.footer{align-items:center;background:#fff;border-top:1px solid #f3f4f6;display:flex;flex-wrap:wrap;gap:12px 20px;justify-content:center;padding:24px 16px;text-align:center;font-size:14px;color:#9ca3af}.footer a{color:inherit}.footer a:hover{color:#2563eb}.footer .filing-link{align-items:center;display:inline-flex;gap:7px;white-space:nowrap}.footer .filing-link img{flex:0 0 auto;height:20px;object-fit:contain;width:18px}.mobile-only,.drawer-overlay,.drawer{display:none}@media (max-width: 640px){.desktop-only{display:none!important}.mobile-only{display:block}.mobile-only-flex{display:flex!important}.navbar{padding:0 12px}.navbar .logo{font-size:18px}.navbar .logo span{display:none}.navbar .logo-image{width:42px;height:42px}.navbar .right{gap:8px;font-size:13px}.navbar .right>span{max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#nav-pins{padding:0 8px;gap:6px}.container{padding:16px 12px}.detail-topbar{flex-wrap:nowrap;gap:6px}.timer{font-size:22px;letter-spacing:1px}.round-display{font-size:16px;padding-right:6px;margin-right:2px}.gear-btn{width:32px;height:32px;font-size:14px}.mobile-info{padding:12px 16px}.mobile-info h1{font-size:18px}.mobile-legend{display:flex;gap:8px;font-size:10px;color:#6b7280;flex-wrap:nowrap;overflow-x:auto}.mobile-legend span{white-space:nowrap;display:inline-flex;align-items:center;gap:3px;flex-shrink:0}.mobile-legend .legend-dot{width:10px;height:10px}.mobile-filter-row{display:flex;gap:5px;margin-top:8px;flex-wrap:nowrap;overflow-x:auto;align-items:center}.mobile-filter-row .filter-btn{padding:3px 8px;font-size:10px;white-space:nowrap;flex-shrink:0}.mobile-filter-row .text-xs{font-size:10px;flex-shrink:0}.drawer-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:90}.drawer{display:block;position:fixed;top:0;right:-280px;width:280px;height:100vh;background:#fff;z-index:91;transition:right .25s ease;box-shadow:-4px 0 12px #0000001a;padding:20px;overflow-y:auto}.drawer.open{right:0}.drawer h3{font-size:16px;font-weight:600;margin-bottom:16px;color:#111827}.drawer-item{display:block;width:100%;padding:12px 16px;margin-bottom:8px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;font-size:14px;text-align:left;cursor:pointer;transition:all .2s}.drawer-item:hover{border-color:#ea580c;background:#fff7ed;color:#ea580c}.tournament-grid{grid-template-columns:1fr}.admin-tabs,.tab-nav{gap:16px}.modal{margin:0 12px}.table-row .table-square,.table-aisle{width:96px!important}.tables-grid{grid-template-columns:repeat(var(--mobile-cols, 6),1fr)!important;gap:6px}.tables-grid .table-square{width:auto!important;padding:4px;display:flex;flex-direction:column;align-items:center;justify-content:center}.tables-grid .table-square .t-top{display:flex;align-items:baseline;justify-content:center;width:100%;padding:0 2px}.tables-grid .table-square .t-top.has-ext{justify-content:space-between}.tables-grid .table-square .t-num{font-size:22px}.tables-grid .table-square .t-ext{font-size:11px;color:#374151}.tables-grid .table-square .t-judge{font-size:9px;color:#6b7280;margin-top:auto;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.perm-info{background:#f9fafb;border-radius:8px;padding:12px 16px}.timer{font-size:32px;font-weight:700;font-family:ui-monospace,monospace;color:#111827;letter-spacing:2px;cursor:default;-webkit-user-select:none;user-select:none}.round-display{font-size:24px;font-weight:700;font-family:ui-monospace,monospace;color:#374151;-webkit-user-select:none;user-select:none;padding-right:8px;border-right:2px solid #e5e7eb;margin-right:4px}.gear-btn{width:36px;height:36px;border-radius:8px;border:1px solid #d1d5db;background:#fff;font-size:18px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.gear-btn:hover{border-color:#ea580c;color:#ea580c}#timer-gear:hover{transform:rotate(30deg)}#nav-pins{display:flex;gap:8px;flex:1;justify-content:flex-start;overflow-x:auto;padding:0 16px}#nav-pins>:first-child{margin-left:auto}#nav-pins>:last-child{margin-right:auto}.nav-pin{padding:8px 18px;border-radius:8px;border:1px solid #d1d5db;background:#fff;font-size:15px;font-weight:500;color:#374151;cursor:pointer;white-space:nowrap;transition:all .2s;display:inline-flex;align-items:center;gap:8px}.nav-pin:hover{border-color:#ea580c;color:#ea580c;background:#fff7ed}.pin-timer{font-family:ui-monospace,monospace;font-size:14px;font-weight:700;color:#6b7280}.pin-timer.neg{color:#dc2626}.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#6b7280}.legend-dot{display:inline-block;width:14px;height:14px;border-radius:4px}.filter-btn{padding:4px 12px;border-radius:9999px;border:1px solid #d1d5db;background:#fff;font-size:12px;color:#374151;cursor:pointer;transition:all .2s}.filter-btn:hover{border-color:#ea580c;color:#ea580c}.filter-btn.off{text-decoration:line-through;color:#9ca3af;border-color:#e5e7eb;background:#f9fafb}.filter-btn.sel{border-color:#ea580c;background:#fff7ed;color:#c2410c}.zone-nav{position:fixed;top:50%;transform:translateY(-50%);z-index:40;width:44px;height:64px;border:1px solid #d1d5db;background:#ffffffe6;font-size:22px;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;-webkit-user-select:none;user-select:none}.zone-nav:hover{border-color:#ea580c;color:#ea580c;background:#fff7ed}.zone-nav.left{left:8px;border-radius:0 10px 10px 0}.zone-nav.right{right:8px;border-radius:10px 0 0 10px}.zone-label{text-align:center;font-size:13px;color:#6b7280;margin-bottom:8px;font-weight:600}.zone-minimap{position:fixed;right:16px;bottom:16px;z-index:40;background:#fffffff2;border:1px solid #d1d5db;border-radius:10px;padding:8px;box-shadow:0 4px 12px #0000001a}.zone-minimap .mm-grid{display:grid;gap:2px}.zone-minimap .mm-cell{width:12px;height:12px;border-radius:2px;background:#fff;border:1px solid #e5e7eb}.zone-minimap .mm-cell.c-red{background:#fca5a5;border-color:#fca5a5}.zone-minimap .mm-cell.c-yellow{background:#fde047;border-color:#fde047}.zone-minimap .mm-cell.c-green{background:#4ade80;border-color:#4ade80}.zone-minimap .mm-cell.c-aisle{background:transparent;border-color:transparent}.zone-minimap .mm-viewport{position:absolute;border:2px solid #ea580c;border-radius:3px;pointer-events:none;background:#ea580c14}.zone-viewport{overflow:visible;max-width:100%;display:flex;justify-content:center}.zone-viewport .zone-content{width:fit-content}.cnt-btn{width:32px;height:32px;border-radius:8px;border:1px solid #d1d5db;background:#fff;font-size:18px;line-height:1;cursor:pointer;transition:all .2s}.cnt-btn:hover{border-color:#ea580c;color:#ea580c}.tables-grid{display:grid;grid-template-columns:repeat(auto-fit,110px);justify-content:center;gap:12px}.tables-grid.layout-mode{display:block;width:fit-content;margin:0 auto}.table-row{display:flex;gap:12px;margin-bottom:12px}.table-row .table-square{width:110px;flex-shrink:0}.table-aisle{width:110px;flex-shrink:0;aspect-ratio:1}.table-square{aspect-ratio:1;border-radius:12px;border:2px solid #e5e7eb;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .2s,border-color .2s;padding:6px;text-align:center;overflow:hidden}.table-square.c-white{background:#fff}.table-square.c-red{background:#fee2e2;border-color:#fca5a5}.table-square.c-yellow{background:#fef9c3;border-color:#fde047}.table-square.c-green{background:#bbf7d0;border-color:#4ade80}.table-square .t-num{font-size:26px;font-weight:700;color:#111827;line-height:1}.table-square .t-ext{font-size:17px;font-weight:700;color:#374151;margin-top:4px}.table-square .t-judge{font-size:11px;color:#6b7280;margin-top:2px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-square .t-gtime{font-size:13px;font-weight:700;font-family:ui-monospace,monospace;color:#dc2626;margin-top:2px}.tm-opt{flex:1;padding:8px 4px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #d1d5db;background:#fff;color:#4b5563;cursor:pointer;transition:all .2s}.tm-opt.active{border-color:#ea580c;background:#fff7ed;color:#c2410c}.import-box{border:1px dashed #d1d5db;border-radius:8px;padding:16px}.import-tabs{display:flex;gap:8px;margin-bottom:12px}.import-tabs button{padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;border:1px solid #d1d5db;background:#fff;color:#4b5563;cursor:pointer;transition:all .2s}.import-tabs button.active{border-color:#ea580c;background:#fff7ed;color:#c2410c}.import-textarea{width:100%;min-height:100px;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:12px;font-family:monospace;outline:none;resize:vertical;transition:box-shadow .2s}.import-textarea:focus{border-color:transparent;box-shadow:0 0 0 2px #f97316}.format-hint{margin-top:8px;font-size:12px;color:#9ca3af}.format-hint summary{cursor:pointer;color:#6b7280;font-weight:500}.format-hint pre{margin-top:6px;padding:8px;background:#f9fafb;border-radius:6px;font-size:11px;overflow-x:auto;color:#374151}.import-ok{margin-top:8px;font-size:13px;color:#15803d;font-weight:500}.import-err{margin-top:8px;font-size:13px;color:#dc2626}.import-dev{padding:24px;text-align:center;color:#9ca3af;font-size:14px}#report-panel{position:fixed;right:10px;width:330px;z-index:45;background:#fffffff5;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 4px 16px #00000014;display:flex;flex-direction:column;overflow:hidden;font-size:13px}#report-panel.hidden{display:none}#report-panel-head{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid #f3f4f6;flex-shrink:0;cursor:move;-webkit-user-select:none;user-select:none}.report-title{font-weight:600;color:#374151;white-space:nowrap}.report-title b{color:#ea580c;margin-left:2px}.report-head-btn{font-size:12px;padding:2px 8px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;color:#4b5563;white-space:nowrap}.report-head-btn:hover{background:#f9fafb;border-color:#d1d5db}#report-list{overflow-y:auto;flex:1;min-height:0}.report-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid #f3f4f6}.report-item:last-child{border-bottom:none}.report-text{flex:1;color:#1f2937;line-height:1.35;word-break:break-all}.report-user{font-size:11px;color:#9ca3af;white-space:nowrap}.report-ack{flex-shrink:0;font-size:12px;padding:2px 10px;border:none;border-radius:6px;background:#ea580c;color:#fff;cursor:pointer}.report-ack:hover{background:#c2410c}#report-panel.report-empty{width:200px;opacity:.85}#report-panel.report-empty #report-list,#report-panel.report-empty .report-clear-btn{display:none}#report-panel.report-empty #report-panel-head{border-bottom:none}.report-history-item{padding:7px 4px;border-bottom:1px solid #f3f4f6;font-size:13px;color:#1f2937;line-height:1.4}.report-history-item:last-child{border-bottom:none}.report-history-time{color:#9ca3af;font-size:12px;margin-right:8px;font-family:ui-monospace,monospace}#tables-area.report-gutter{padding-right:354px}#tables-area.report-gutter-left{padding-left:354px}@media (max-width: 1023px){#report-panel{display:none!important}#tables-area.report-gutter{padding-right:16px}#tables-area.report-gutter-left{padding-left:16px}}.report-item.report-conflict{background:#fee2e2}.report-item.report-conflict .report-text{color:#b91c1c;font-weight:600}@keyframes reportFlash{0%,to{background:#fee2e2}50%{background:#1f2937}}@keyframes reportFlashText{0%,to{color:#b91c1c}50%{color:#f9fafb}}@keyframes reportFlashBtn{0%,to{background:#ea580c}50%{background:#f9fafb;color:#1f2937}}.report-item.report-flash{animation:reportFlash 1.8s ease-in-out infinite}.report-item.report-flash .report-text{animation:reportFlashText 1.8s ease-in-out infinite}.report-item.report-flash .report-ack{animation:reportFlashBtn 1.8s ease-in-out infinite}.report-history-item.report-history-conflict{color:#b91c1c;font-weight:600;background:#fef2f2}.report-history-dup{color:#9ca3af;font-size:12px;margin-left:4px}
